5.3 Klassen testen

Nun ist es an der Zeit unsere neu erstellte Klasse Buch zu testen.

Aufgabe

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.

img/5_22_UML_Buch_testen.svg
Abb. 5-22: Die Klasse Buch testen
Konsole

Testdaten
ISBN: 978-3-95982-044-8
Titel: Jetzt lerne ich Java
Erscheinungsjahr: 2016

Abb. 5-23: Ausgabe der Attributwerte von testbuch auf der Konsole.
  1. 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
    JAVA
    public 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.
    img/5_25_UML_Buchpruefer.svg
    Abb. 5-25: Die Klasse Buch testen

    Ausgabe 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

    JAVA

    System.out.println("Testdaten");
    System.out.println("Nachname: " + schueler.getNachname());


    Konsole

    Testdaten
    Nachname: Maier

    Abb. 5-26: Ausgabe von Text auf der Konsole (Beispiele).
  2. 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
    JAVA
    public 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.

    JAVA

    public 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

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
Lösung
JAVA
public class Ortpruefer {

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

}
Abb. 5-29: Die Klasse Ortpruefer (Quellcode)
JAVA
public class StartOrtpruefer {

    public static void main (String[] args) {
        new Ortpruefer();
    }
}
Abb. 5-30: Die Klasse StartOrtpruefer (Quellcode)
Aufgabe

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.

  1. 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
    img/5_31_Trainingsfahrt.svg
    Abb. 5-31: Die Klasse Trainingsfahrt (UML)
  2. Erstellen Sie den Quellcode der modellierten Klasse. Lösung
    Lösung
    JAVA
    public 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)
  3. 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 Klasse Fahrtpruefer erzeugt wird. Lösung
    Lösung
    img/5_33_Trainingsfahrt.svg
    Abb. 5-33: UML-Klassendiagramm
  4. Erstellen Sie den Quellcode der Klasse Fahrtpruefer sowie eine geeignete Startklasse. Starten Sie anschließend die Testanwendung. Lösung
    Lösung
    JAVA
    public 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)
    JAVA
    public class StartFahrtpruefer {

        public static void main (String[] args) {
            new Fahrtpruefer();
        }
    }
    Abb. 5-35: Die Klasse StartFahrtpruefer (Quellcode)