Как сделать метод редактирования книги для библиотеки и класса книги - PullRequest
0 голосов
/ 23 декабря 2018

Я должен создать библиотечную систему, в которой есть класс Book и класс Library.Оба имеют метод редактирования книги.Концепция заключается в том, что библиотекарь ищет книгу ... затем ее клонируют ... клонированную книгу затем редактируют перед подтверждением ... затем помещают обратно в библиотеку, заменяя предыдущую книгу.Метод редактирования книги класса Library выглядит следующим образом: public boolean editBook(String username, Book book), а метод класса Book выглядит следующим образом public boolean editBook(Book book).

Теперь моя проблема в том, что метод editBook() должен иметь возможность редактировать каждыйЕдинственный атрибут книги.Как работает метод, который принимает только один атрибут (Book) и возвращает логическое значение, предназначенное для редактирования заголовка, или автора, или типа разрешения, или любого из них. Это не имеет смысла для меня, и я застрял на этом.

Первоначально я думал, что, возможно, пользовательский ввод может быть принят в методе editBook, чтобы позволить пользователю выбирать, что он на самом деле редактирует, однако я только что узнал, что мы не можем этого сделать.

это то, что у меня есть для него, но мне сказали, что я не могу его использовать, потому что он вызывает пользовательский ввод из класса книги, и он (в этом случае) может вызывать только пользовательский ввод из метода main,Может кто-нибудь, пожалуйста, укажите мне в правильном направлении?Спасибо всем, кто может помочь

 Library class method  
 public boolean editBook(String username, Book book) throws CloneNotSupportedException{

    Book clonedBook = book.clone();
    boolean editBook = clonedBook.editBook(clonedBook);
        while(editBook){
            for(Book b: books){
                if(b.getISBNNumber().equalsIgnoreCase(book.getISBNNumber())){
                    int index = books.indexOf(b);
                    books.set(index, clonedBook);
                }
            }
            editBook = false;
        }   
    return true;
}


Book class method

 public boolean editBook(Book book){
    boolean confirm = false;
    Scanner scan = new Scanner(System.in);

    String y = "";



    do{
    do{
       int x =userInputEnterEditChoice();
       editBookSwitch(x);
       y = userInputMoreAttibutes();

    }while(y.equalsIgnoreCase("y"));

    String z = userInputConfirmEdit();


    if(confirmEdit(z, book)){
                confirm = true;
    }
    else{
        System.out.println("would you like to re edit the book?");
        y = scan.nextLine();
    }
    }while(y.equalsIgnoreCase("y"));



    return confirm;
}

Ответы [ 2 ]

0 голосов
/ 23 декабря 2018

Длинный комментарий, а не ответ как таковой.

ООП, как правило, должен моделировать объекты реального мира, где это возможно, в этом вся суть.Почему ты клонируешь книги?Рассматривали ли вы моделирование библиотеки реального мира?Это было бы яснее, по крайней мере, для меня.

В каждом экземпляре Библиотеки есть библиотекарь.Или даже коллекция объектов Библиотекаря.

Каждая библиотека имеет - коллекцию объектов Книги.

Разве вы не можете сказать, что каждый библиотекарь имеет - коллекцию объектов Книги?

Чтобы библиотекарь мог добавить Книгу в свою коллекцию экземпляров Книги.Когда это происходит, Книга удаляется из коллекции Библиотеки.

Конечно, теперь, когда у библиотекаря есть книга, в своей коллекции они могут изменить книгу.

import java.util.ArrayList;
import java.util.List;

public class Librarian {

    private List<Book> books = new ArrayList<>();

    public Librarian() {
    }

    public void borrowBook(Book book) {
        books.add(book);
    }

    public List<Book> borrowedBooks() {
        return books;
    }

    public Book returnBook(Book book) {
        int bookNumber = book.getNumber();
        //your code...
        return books.get(3); //wait, which book?
    }
}

Просто для начала пища для размышлений.По сути, присвойте каждой книге уникальный идентификатор при ее создании.Возможно, вы захотите ограничить библиотекаря только одной книгой за раз, или, может быть, двумя.

Объясните мне, как мне пять лет, потому что я не понимаю.Домашнее задание разрешено на SO, если это HW.Может быть, клонирование является требованием HW?

Есть определенные проблемы с вышеупомянутым подходом, но, надеюсь, это может прояснить, как подходить к модели.

0 голосов
/ 23 декабря 2018

Теперь моя проблема в том, что метод editBook () должен иметь возможность редактировать каждый отдельный атрибут книги.Как работает метод, который принимает только один атрибут (Book) и возвращает логическое значение, предназначенное для редактирования заголовка, или автора, или типа разрешения, или любого из них. Это не имеет смысла для меня, и я застрял на этом.

public class Book {
int id;
String title;
String Author;
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getTitle() {
    return title;
}
public void setTitle(String title) {
    this.title = title;
}
public String getAuthor() {
    return Author;
}
public void setAuthor(String author) {
    Author = author;
}
}

public class Library {
public boolean editBook(Book book) {
    boolean isEdited = false;
    //This is how you edit the attributes of the book
    book.id=1;
    book.title= "Java Programming";
    book.Author= "John Smith";
    isEdited = true;
    return isEdited;
}

}

...