5.3 Klassen testen
Nun ist es an der Zeit unsere neu erstellte Klasse Buch zu testen.
Aufgabe 5-7: Die Klasse Buch testen
Ein Objekt der Klasse Buchpruefer soll ein neues Objekt der Klasse Buch erzeugen und dessen Attributen Testwerte zuweisen. Anschließend soll es die gespeicherten Attributwerte wieder abfragen und zu Kontrollzwecken auf der Konsole ausgeben. Der Test soll automatisch starten, sobald ein Objekt der Klasse Buchpruefer erzeugt wird.
Buch testen
Testdaten
ISBN: 978-3-95982-044-8
Titel: Jetzt lerne ich Java
Erscheinungsjahr: 2016
testbuch auf der Konsole.-
Erstellen Sie den Quellcode der Klasse
Buchpruefer. Abbildung 5-25 zeigt den Aufbau der Klasse und enthält Informationen über die Aufgaben der einzelnen Methoden. Über die Ausgabe von Daten auf der Konsole informiert Abbildung 5-26. Lösung
Lösung
JAVApublic class Buchpruefer {
private Buch testbuch;
public Buchpruefer() {
this.erstelleTestbuch();
this.zeigeBuchdaten();
}
private void erstelleTestbuch() {
testbuch = new Buch("Jetzt lerne ich Java");
testbuch.setIsbn("978-3-95982-044-8");
testbuch.setErscheinungsjahr(2016);
}
private void zeigeBuchdaten() {
System.out.println( "ISBN: " + testbuch.getIsbn() );
System.out.println( "Titel: " + testbuch.getTitel() );
System.out.println( "Erscheinungsjahr: " + testbuch.getErscheinungsjahr() );
}
}Abb. 5-24: Quellcode der Klasse Buchpruefer.Abb. 5-25: Die Klasse BuchtestenAusgabe von Daten auf der Konsole
Mit Hilfe der Anweisung System.out.print() lassen sich Daten auf der Konsole ausgeben. Dazu werden die entsprechenden Daten als Parameter an die Methode print() übergeben. Soll nach der Ausgabe ein Zeilenumbruch erfolgen, kann stattdessen auch die Methode println() – „print line“ – verwendet werden.
Mehrere Strings können mit Hilfe des Plus-Zeichens zu einem neuen String verknüpft werden. Ein String kann auf diese Weise auch mit primitiven Werten vom Typ int und double verbunden werden.
Beispiele
JAVASystem.out.println("Testdaten");
System.out.println("Nachname: " + schueler.getNachname());
KonsoleTestdaten
Nachname: MaierAbb. 5-26: Ausgabe von Text auf der Konsole (Beispiele). -
Unser Ziel ist es, dass beim Start des Programms ein neues Objekt der Klasse Buchpruefer erzeugt wird. Dabei werden dann automatisch die Anweisungen im parameterlosen Konstruktor der Klasse Buchpruefer ausgeführt und damit der Test durchgeführt.
Erstellen Sie den Quellcode der Klasse StartBuchpruefer (vgl. Abb. 5.22). Lesen Sie dazu zunächst den folgenden Abschnitt Erstellen einer Startklasse. Lösung
Lösung
JAVApublic class StartBuchpruefer {
public static void main (String[] args) {
new Buchpruefer();
}
}
Abb. 5-27: Quellcode der Klasse StartBuchpruefer.Erstellen einer Startklasse
Eine Java-Applikation startet durch den Aufruf einer Startklasse. Dabei handelt es sich um eine Klasse, die eine Methode namens main enthält. Das Besondere an dieser Methode ist, dass sie beim Start eines Programms automatisch ausgeführt wird. Anweisungen, die beim Programmstart ausgeführt werden sollen, um zum Beispiel erste Objekte zu erzeugen, müssen wir daher in diese Methode schreiben.
JAVApublic class Startklasse {
public static void main (String[] args) {
}
}
Abb. 5-28: Die main-Methode. Erläuterungen zur main-Methode
public Der Programmstart und damit der Aufruf der main-Methode erfolgt von außen, weshalb die Methode öffentlich sein muss. static Da beim Programmstart kein Objekt der Klasse StartBuchpruefer existiert, benötigen wir das Schlüsselwort static, damit die main-Methode trotzdem aufgerufen werden kann. void Die main-Methode gibt keinen Wert zurück, dies wird durch das Schlüsselwort void angezeigt. args Der Parameter args dient dazu, die beim Start des Programms übergebenen Parameter auszuwerten. Wir werden davon keinen Gebrauch machen.
Aufgabe 5-8: Die Klasse Ort testen
Erstellen Sie den Quellcode der Klassen Ortpruefer und StartOrtpruefer. [Hinweis: Gehen Sie analog zu Aufgabe 5-7 vor.]
Ein Objekt der Klasse Ortpruefer soll alle öffentlichen Methoden eines Objekts der Klasse Ort (vgl. Aufgabe 5-6) aufrufen und testen. Rückgabewerte sollen auf der Konsole ausgegeben und beschriftet werden. Starten Sie anschließend die Testanwendung mit Hilfe der Klasse StartOrtpruefer.
Lösung
private Ort testort;
public Ortpruefer(){
this.erstelleTestort();
this.zeigeTestdaten();
}
private void erstelleTestort() {
testort = new Ort("Muckldorf");
testort.setEinwohnerzahl(1000);
testort.setKaufkraft(9000000);
}
private void zeigeTestdaten() {
System.out.println("Name:" + testort.getName());
System.out.println("Einwohnerzahl:" + testort.getEinwohnerzahl());
System.out.println("Kaufkraft:" + testort.getKaufkraft() + " Euro");
System.out.println("Kaufkraft je Einwohner:" + testort.berechneKaufkraftJeEinwohner() + " Euro");
}
}
Ortpruefer (Quellcode)public static void main (String[] args) {
new Ortpruefer();
}
}
StartOrtpruefer (Quellcode)
Aufgabe 5-9: Trainingsfahrt
Max trainiert mehrfach die Woche mit seinem Rennrad. Für Auswertungszwecke möchte er seine Trainingsfahrten mit Hilfe eines Programms protokollieren. Dabei interessieren ihn jeweils die gefahrene Strecke (in km), die Dauer (in Stunden) sowie die gefahrene Durchschnittsgeschwindigkeit.
-
Entwickeln Sie auf Grundlage der vorliegenden Informationen ein geeignetes UML-
Klassendiagramm. Die Klasse soll einen parameterlosen Konstruktor besitzen sowie einen Konstruktor, der alle Attribute initialisiert. Lösung
Lösung
Abb. 5-31: Die Klasse Trainingsfahrt (UML) -
Erstellen Sie den Quellcode der modellierten Klasse.
Lösung
Lösung
JAVApublic class Trainingsfahrt {
private double strecke;
private double dauer;
public Trainingsfahrt() {
}
public Trainingsfahrt(double strecke, double dauer) {
this.strecke = strecke;
this.dauer = dauer;
}
public void setStrecke(double strecke) {
this.strecke = strecke;
}
public double getStrecke() {
return this.strecke;
}
public void setDauer(double dauer) {
this.dauer = dauer;
}
public double getDauer() {
return this.dauer;
}
public double berechneDurchschnittsgeschwindigkeit() {
return this.strecke / this.dauer;
}
}Abb. 5-32: Die Klasse Trainingsfahrt(Quellcode) -
Ergänzen Sie das UML-Klassendiagramm um die Klasse
Fahrtpruefer. Ein Objekt dieser Klasse soll alle öffentlichen Methoden eines Objekts der in Teilaufgabe b) erstellten Klasse aufrufen und testen. Der Test soll automatisch ablaufen, sobald ein Objekt der KlasseFahrtpruefererzeugt wird. Lösung
Lösung
Abb. 5-33: UML-Klassendiagramm -
Erstellen Sie den Quellcode der Klasse
Fahrtpruefersowie eine geeignete Startklasse. Starten Sie anschließend die Testanwendung. Lösung
Lösung
JAVApublic class Fahrtpruefer {
private Trainingsfahrt testfahrt;
public Fahrtpruefer() {
this.erstelleTestfahrt();
this.zeigeTestdaten();
}
private void erstelleTestfahrt() {
testfahrt = new Trainingsfahrt(75, 2.5);
}
private void zeigeTestdaten() {
System.out.println("Strecke: " + testfahrt.getStrecke());
System.out.println("Dauer: " + testfahrt.getDauer());
System.out.println("Durchschnittsgeschwindigkeit: " + testfahrt.berechneDurchschnittsgeschwindigkeit());
}
}Abb.5-34: Die Klasse Fahrtpruefer(Quellcode)JAVApublic class StartFahrtpruefer {
public static void main (String[] args) {
new Fahrtpruefer();
}
}
Abb. 5-35: Die Klasse StartFahrtpruefer(Quellcode)