2017-02-14 4 views
0

Недавно у меня было задание на курсе информатики, чтобы создать класс с двумя объектами, построенными из указанного класса.Должны ли получатели/сеттеры быть в основном методе в Java?

Критика профессора по электронной почте была следующей: «sysouts в конструкторе, геттерах и сеттерах они должны быть в основном методе».

Он не очень хорошо говорит по-английски, так что это не очень помогает. Кто-нибудь знает, что именно он говорит о моем коде? Это код, который я представил:

public class Book { 

int currentPage; 
int nextPage; 
int lastPage; 

public Book(int pageNumber) { 
    currentPage = pageNumber; 
    System.out.println("You've opened the book to page " + currentPage + "."); 
} 

public void turnForward(int numTurned) { 
    nextPage = numTurned + currentPage; 
    System.out.println("You've turned forward to page " + nextPage + "."); 
} 

public void turnBack(int numTurned) { 
    lastPage = nextPage - numTurned; 
    if (lastPage <= 1) { 
     lastPage = 1; 
     System.out.println("You've turned back to the first page."); 
    }else { 
     System.out.println("You've turned back to page " + lastPage + "."); 
    } 
} 

public static void main(String[] args) { 

    Book bigJava = new Book(5); 
    bigJava.turnForward(2); 
    bigJava.turnBack(8); 

    Book earlyObjects = new Book(22); 
    earlyObjects.turnForward(12); 
    earlyObjects.turnBack(17); 
} 

} 

Обязательно ли устанавливать геттеры/сеттеры в основном методе? На самом деле код не выполняется, если я это делаю.

+4

читать снова. он сказал, что sysouts не должно быть в конструкторах, геттерах или сеттерах, а в основном методе. Он не говорит, что вы должны использовать геттеры и сеттеры в основном методе. –

+4

Ваш профессор хочет, чтобы у вас были все утверждения печати в основном методе класса; не в сеттерах/геттерах/конструкторах –

ответ

5

Он имеет в виду повторное использование вашего класса. Он хочет, чтобы вы разоблачили геттеры, чтобы вы могли поместить свои операторы печати в основной метод.

Почему?

Если кто-то хочет использовать ваш класс или, возможно, вы хотите его повторно использовать для другого проекта, материал не должен печатать на консоли. Не всякая ситуация, когда Book может использоваться, должна печатать материал на консоли.

Таким образом, лучше всего вести журнал в основном методе, поэтому Book может использоваться повторно для других задач.

Getters позволяют получить доступ к значениям в то же время держать свои поля private, обеспечивая единственный способ, которым они могут быть изменены через поведений вы подвергаются: turnForward, turnBack и т.д ..

Улучшение кода

При повороте страницы текущая страница должна измениться. Для него не имеет смысла оставаться прежним.

Ваши поведенческие методы вместо этого следует мутирует переменную currentPage:

public void turnForward(int pages) { 
    currentPage += numOfPages; 
} 

public void turnBack(int numOfPages) { 
    currentPage -= numOfPages; 
} 

public int getCurrentPage() { 
    return currentPage; 
} 

Ваш главный метод может затем переворачивать страницы, войдя каждый раз, когда он делает:

public static void main(String[] args) { 
    Book book = new Book(25); 

    int startPage = book.getCurrentPage(); 
    book.turnForward(5); 
    int endPage = book.getCurrentPage(); 

    System.out.println("The book was turned " + endPage - startPage + " pages forward."); 
} 
Смежные вопросы