2017-02-14 2 views
0

Kürzlich hatte ich eine Aufgabe in einem Informatikkurs, um eine Klasse mit zwei Objekten aus dieser Klasse zu erstellen.Müssen Getter/Setter in der Hauptmethode in Java sein?

Die Kritik des Professors durch E-Mail war die folgende: "Sysouts in Konstruktor, Getter und Setter diese sollten in der Hauptmethode sein."

Er spricht nicht sehr gut Englisch, so dass es nicht viel hilft. Weiß jemand, wovon genau er in Bezug auf meinen Code spricht? Dies ist der Code, den ich eingereicht habe:

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); 
} 

} 

Ist es zwingend erforderlich, Getter/Setter in der Hauptmethode zu setzen? Der Code läuft nicht wirklich, wenn ich es tue.

+4

wieder lesen. Er sagte, die Sysouts sollten nicht in Konstruktoren, Gettern oder Settern sein, sondern die Hauptmethode. Es sagt nicht, dass Sie Getter und Setter in die Hauptmethode einfügen sollten. –

+4

Ihr Professor möchte, dass Sie alle print-Anweisungen in der Hauptmethode der Klasse haben; nicht in Setter/Getter/Konstruktoren –

Antwort

5

Er bezieht sich auf die Wiederverwendbarkeit Ihrer Klasse. Er möchte, dass Sie Getter aussetzen, damit Sie Ihre Druckanweisungen in die Hauptmethode einfügen können.

Warum?

Wenn jemand Ihre Klasse verwenden möchte oder Sie sie für ein anderes Projekt wiederverwenden möchten, sollten Sie nicht auf die Konsole drucken. Nicht jede Situation, in der Book verwendet werden kann, sollte Zeug auf die Konsole drucken.

Daher ist es am besten, die Protokollierung in der Hauptmethode zu behalten, damit Book für andere Aufgaben wiederverwendet werden kann.

Getters können Sie die Werte zugreifen, während noch private Ihre Felder halten, die einzige Möglichkeit, sicherzustellen, dass sie das Verhalten geändert werden kann, ist durch Sie ausgesetzt: turnForward, turnBack, etc ..

Verbessern Sie Ihren Code

Wenn Sie eine Seite wechseln, sollte sich die aktuelle Seite ändern. Es macht keinen Sinn, dass es gleich bleibt.

Ihre Verhaltensmethoden sollten stattdessen Mutieren der currentPage Variable:

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

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

public int getCurrentPage() { 
    return currentPage; 
} 

Ihre wichtigste Methode könnte dann die Seiten umblättern, Protokollierung jedes Mal, es tut:

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."); 
} 
Verwandte Themen