8.2 Die Klasse Benutzerkonsole

Um Benutzereingaben mit möglichst wenig Aufwand erfassen zu können, verzichten wir zunächst auf eine grafische Benutzeroberfläche. Stattdessen greifen wir auf die Konsole zurück, die wir bereits zur Ausgabe von Daten eingesetzt haben.

Aufgabe

Aufgabe 8-1: Benutzereingaben über die Konsole

Ziel ist ein einfaches Programm, das den Benutzer dabei unterstützt, die Daten eines neuen Buches zu erfassen.

Abb. 8-2 zeigt beispielhaft die Erfassung der Daten. Die Benutzereingaben sind in der Abbildung kursiv dargestellt, dies ist im Programm jedoch nicht notwendig. Die abschließende Ausgabe dient dazu festzustellen, ob alle eingegebenen Daten vom Programm richtig verarbeitet worden sind.

Konsole
Buch
====

Bitte geben Sie die folgenden Daten des Buchs ein:
--------------------------------------------------
ISBN: 978-3-95982-044-8
Titel: Jetzt lerne ich Java
Erscheinungsjahr: 2016

Folgende Daten des Buchs wurden erfasst:
----------------------------------------
ISBN: 978-3-95982-044-8
Titel: Jetzt lerne ich Java
Erscheinungsjahr: 2016
Abb. 8-1: Konsole mit Benutzereingaben (Beispieldaten)
Anforderungen an die UI-Klasse Benutzerkonsole

Alle Funktionalitäten, die die Interaktion mit dem Benutzer betreffen, bündeln wir in der Klasse Benutzerkonsole (UI-Klasse). In dieser Aufgabe werden an die Benutzerkonsole die folgenden Anforderungen gestellt:

  • Zunächst soll sie dem Benutzer die Möglichkeit geben, die relevanten Daten eines neuen Buches zu erfassen. Auf Grundlage dieser Daten soll die Benutzerkonsole dann ein neues Objekt der Klasse Buch erzeugen. Alle hierfür notwendigen Anweisungen werden in der privaten Methode erfasseBuchdaten() zusammengefasst.
  • Anschließend soll sie alle Daten des eben erzeugten Buches abfragen und zu Kontrollzwecken auf der Konsole ausgeben. Die entsprechenden Anweisungen werden in der privaten Methode zeigeBuchdaten() zusammengefasst.
  • Nach dem Erzeugen eines Objekts der Klasse Benutzerkonsole soll dieses automatisch die Datenerfassung starten und anschließend die erfassten Daten anzeigen. Hierzu werden innerhalb des Konstruktors Benutzerkonsole() die entsprechenden Methoden, erfasseBuchdaten() und zeigeBuchdaten(), aufgerufen.
img/8_2_UML_Buch_Benutzereingabe.svg
Abb. 8-2: Benutzereingaben über die Konsole (Buch)
Vorbereitung
  1. Legen Sie in Eclipse ein neues Java-Projekt 08-1_Benutzerkonsole_Buch an.
  2. Erstellen Sie ein Paket namens app und kopieren Sie die Fachklasse Buch, die wir in Aufgabe 5-5 erstellt haben, in das Paket.
  3. Legen Sie das Paket ui an und kopieren die Klasse ConsoleReader in das Paket.
Quellcode der UI-Klasse Benutzerkonsole
  1. Erstellen Sie im Paket ui die Klasse Benutzerkonsole. Halten Sie sich dabei an die Vorgaben des UML-Klassendiagramms (vgl. Abb. 8-2) und berücksichtigen Sie die genannten Anforderungen.

    JAVA
    package ui;

    import app.Buch;

    public class Benutzerkonsole {

        private Buch buch;
        
        public Benutzerkonsole() {
            this.erfasseBuchdaten();
            this.zeigeBuchdaten();
        }

        private void erfasseBuchdaten() {
        }

        private void zeigeBuchdaten() {
        }
    }
    Abb. 8-3: Klasse Benutzerkonsole (Quellcode)

    Erläuterungen

    • Da sich die Klasse Benutzerkonsole in einem Paket befindet, muss zu Beginn des Quellcodes das Paket, falls es sich um ein Unterpaket handelt auch alle übergeordneten Pakete, bekannt gegeben werden. Dies erreichen wir mir der Anweisung package ui;.
    • Da sich die Klasse Buch in einem anderen Paket befindet, müssen wir sie zunächst mit Hilfe der Anweisung import app.Buch; importieren, bevor wir sie verwenden dürfen. Die import-Anweisung muss im Quellcode unmittelbar vor dem Beginn der Klassendefinition stehen.
    • Die Methoden erfasseBuchdaten() und zeigeBuchdaten() enthalten zunächst noch keine Anweisungen.


  2. Vervollständigen Sie nun den Java-Quellcode der Methode erfasseBuchdaten(). Lesen Sie dazu zunächst den Abschnitt „Merke: Benutzereingaben mit Hilfe der Klasse ConsoleReader“.

    Schritte

    1. Wir benötigen ein Objekt der Klasse ConsoleReader, mit dessen Hilfe wir die Benutzereingaben von der Konsole einlesen können. Außerdem benötigen wir für jede Eingabe eine lokale Variable, in der wir diese zwischenspeichern können. Anzeigen
    2. Der Benutzer soll durch entsprechende Textausgaben auf der Konsole informiert werden, welche Daten er jeweils eingeben soll. Gestalten Sie die Beschriftungen entsprechend Abb. 8-2. Anzeigen
    3. Durch den Aufruf einer geeigneten Methode des Objekts consoleReader (vgl. Abb. 8-1) soll die jeweilige Benutzereingabe eingelesen werden. Als Antwort gibt diese Methode den Eingabewert zurück, den wir in der für ihn vorgesehenen lokalen Variable zwischen­gespeichern. Anzeigen
    4. Die in lokalen Variablen zwischengespeicherten Werte werden dem neu erzeugten Objekt buch zugewiesen. Anzeigen
    JAVA
    private void erfasseBuchdaten() {
        ConsoleReader consoleReader = new ConsoleReader();
        String titel;
        String isbn;
        int erscheinungsjahr;

        System.out.println("Buch");
        System.out.println("====\n");

        System.out.println("Bitte geben Sie die folgenden Daten des Buchs ein:");
        System.out.println("--------------------------------------------------");
        
        System.out.print("ISBN: ");
        isbn = consoleReader.nextString();

        System.out.print("Titel: ");
        titel = consoleReader.nextString();

        System.out.print("Erscheinungsjahr: ");
        erscheinungsjahr = consoleReader.nextInt();
        
        buch = new Buch(titel, isbn);
        buch.setErscheinungsjahr(erscheinungsjahr);
    }
    Abb. 8-4: Private Methode erfasseBuchdaten()

  3. Vervollständigen Sie zum Abschluss den Java-Quellcode der Methode zeigeBuchdaten(). Dabei sollen alle Daten des neu erzeugten Buch-Objektes abgefragt und zu Kontrollzwecken mit einer kurzen Beschreibung auf der Konsole ausgegeben werden (vgl. Abb. 8-2).

    Lösung
    JAVA
    private void zeigeBuchdaten() {
        System.out.println("\nFolgende Daten des Buchs wurden erfasst:");
        System.out.println("----------------------------------------");
        System.out.println("ISBN: " + buch.getIsbn());
        System.out.println("Titel: " + buch.getTitel());
        System.out.println("Erscheinungsjahr: " + buch.getErscheinungsjahr());
    }
    Abb. 8-5: Private Methode zeigeBuchdaten()
Komplettlösung
JAVA
package ui;

import app.Buch;

public class Benutzerkonsole {

    private Buch buch;
    
    public Benutzerkonsole() {
        this.erfasseBuchdaten();
        this.zeigeBuchdaten();
    }

    public void erfasseBuchdaten() {
        ConsoleReader consoleReader = new ConsoleReader();
        String titel;
        String isbn;
        int erscheinungsjahr;

        System.out.println("Buch");
        System.out.println("====\n");
        System.out.println("Bitte geben Sie die folgenden Daten des Buchs ein:");
        System.out.println("--------------------------------------------------");
        

        System.out.print("ISBN: ");
        isbn = consoleReader.nextString();
        System.out.print("Titel: ");
        titel = consoleReader.nextString();
        System.out.print("Erscheinungsjahr: ");
        erscheinungsjahr = consoleReader.nextInt();
        
        buch = new Buch(titel, isbn);
        buch.setErscheinungsjahr(erscheinungsjahr);
    }
    
    public void zeigeBuchdaten() {
        System.out.println("\nFolgende Daten des Buchs wurden erfasst:");
        System.out.println("----------------------------------------");
        System.out.println("ISBN: " + buch.getIsbn());
        System.out.println("Titel: " + buch.getTitel());
        System.out.println("Erscheinungsjahr: " + buch.getErscheinungsjahr());
    }

}
Abb. 8-6: Klasse Benutzerkonsole (Quellcode)
JAVA
package ui;

public class StartBenutzerkonsole {

    public static void main(String[] args) {
        new Benutzerkonsole();
    }

}
Abb. 8-7: Klasse StartBenutzerkonsole (Quellcode)

Die Eingaben, die der Benutzer auf der Konsole vornimmt, erfassen wir mit Hilfe eines Objekts der Klasse ConsoleReader. Kopieren Sie dazu die Klasse ConsoleReader in das Paket ui des jeweiligen Java-Projekts.

img/8_8_UML_ConsoleReader.svg
ConsoleReader
public ConsoleReader()
Erzeugt ein neues ConsoleReader-Objekt, das Eingabewerte von der Konsole (Standardeingabe) einliest.
public boolean nextBoolean()
Wandelt die nächste Eingabe in einen Wert vom Typ boolean um und gibt diesen zurück.
public double nextDouble()
Wandelt die nächste Eingabe in einen Wert vom Typ double um und gibt diesen zurück.
public int nextInt()
Wandelt die nächste Eingabe in einen Wert vom Typ int um und gibt diesen zurück.
public String nextString()
Gibt die nächste Eingabe als String zurück.
Abb. 8-8: Klasse ConsoleReader
Merke: Benutzereingaben mit Hilfe der Klasse ConsoleReader
Aufgabe

Aufgabe 8-2: Halbjahresleistung

Nehmen Sie vereinfachend an, in jedem Fach der Jahrgangsstufe 1 und 2 werden pro Halbjahr genau zwei Klassenarbeiten geschrieben und genau eine Note für die mündliche Leistung vergeben. Dabei handelt es sich stets um ganze Noten. Bei der Berechnung des Notendurchschnitts wird der Schnitt der schriftlichen Leistungen dreifach und die mündliche Note einfach gewichtet.

Ziel ist eine Java-Applikation, mit deren Hilfe die Halbjahresleistung eines Schülers erfasst werden kann. Anschließend soll das Programm daraus den Notendurchschnitt berechnen und anzeigen. Die Ein- und Ausgabe der Daten soll über die Konsole erfolgen (vgl. Abb. 8-9).

Aus Vereinfachungsgründen werden in dem Programm ausschließlich die Noten erfasst, nicht jedoch das betroffene Fach beziehungsweise der jeweilige Schüler.

Konsole
Halbjahresleistung
==================

Bitte geben Sie die folgenden Noten ein:
----------------------------------------
1. Klassenarbeit: 10
2. Klassenarbeit: 11
Mündliche Note: 12

----------------------------------------
Notendurchschnitt: 10.875
Abb. 8-9: Konsole mit Benutzereingaben (Beispieldaten)
Aufgaben
  1. Entwickeln Sie ein geeignetes UML-Klassendiagramm. Lösung
    img/8_10_UML_Halbjahresleistung_Benutzereingabe.svg
    Abb. 8-10: Benutzereingaben über die Konsole (Halbjahresleistung)
  2. Erstellen Sie den Quellcode der von Ihnen modellierten Klassen. Lösung
    JAVA
    package app;

    public class Halbjahresleistung {

        private int noteKlArb1;
        private int noteKlArb2;
        private int noteMuendlich;
        
        public void setNoteKlArb1(int pNoteKlArb1) {
            this.noteKlArb1 = pNoteKlArb1;
        }

        public int getNoteKlArb1() {
            return this.noteKlArb1;
        }

        public void setNoteKlArb2(int pNoteKlArb2) {
            this.noteKlArb2 = pNoteKlArb2;
        }

        public int getNoteKlArb2() {
            return this.noteKlArb2;
        }
        
        public void setNoteMuendlich(int pNoteMuendl) {
            this.noteMuendlich = pNoteMuendl;
        }
        
        public int getNoteMuendlich() {
            return this.noteMuendlich;
        }

        public double berechneNotendurchschnitt() {
            double schnittKlArb;

            schnittKlArb = (noteKlArb1 + noteKlArb2) / 2.0;
            
            return (3 * schnittKlArb + noteMuendlich) / 4;
        }
        
    }
    Abb. 8-11: Klasse Halbjahresleistung (Quellcode)
    JAVA
    package ui;

    import app.Halbjahresleistung;

    public class Benutzerkonsole {

        private Halbjahresleistung halbjahresleistung;
        
        public Benutzerkonsole() {
            this.erfasseHalbjahresleistung();
            this.zeigeNotendurchschnitt();
        }

        private void erfasseHalbjahresleistung() {
            ConsoleReader consoleReader = new ConsoleReader();
            int noteKlArb1;
            int noteKlArb2;
            int noteMuendlich;

            System.out.println("Halbjahresleistung");
            System.out.println("=====\n");
            System.out.println("Bitte geben Sie die folgenden Noten ein:");
            System.out.println("----------------------------------------");
            
            System.out.print("Note 1. Klassenarbeit: ");
            noteKlArb1 = consoleReader.nextInt();

            System.out.print("Note 2. Klassenarbeit: ");
            noteKlArb2 = consoleReader.nextInt();

            System.out.print("Mündliche Note: ");
            noteMuendlich = consoleReader.nextInt();

            halbjahresleistung = new Halbjahresleistung();
            halbjahresleistung.setNoteKlArb1(noteKlArb1);
            halbjahresleistung.setNoteKlArb2(noteKlArb2);
            halbjahresleistung.setNoteMuendlich(noteMuendlich);
        }

        private void zeigeNotendurchschnitt() {
            System.out.println("\n----------------------------------------");
            System.out.println("Notendurchschnitt: " + halbjahresleistung.berechneNotendurchschnitt());
        }
    }
    Abb. 8-12: Klasse Benutzerkonsole (Quellcode)
  3. Testen Sie Ihre Java-Applikation mit den angegebenen Beispieldaten. Wird dabei ein falscher Noten­durch­schnitt ausgegeben, lesen Sie bitte den Abschnitt Rechnen mit int-Werten.
Aufgabe

Aufgabe 8-3: Rechteck

Ziel ist eine Java-Applikation, die aufgrund der vom Benutzer eingegebenen Daten den Flächeninhalt eines Rechtecks berechnet und diesen auf der Konsole ausgibt (vgl. Abb. 8-13).

Konsole
Rechteck
========

Bitte geben Sie Breite und Höhe des Rechtecks ein:
--------------------------------------------------
Breite: 10
Höhe: 2.5

--------------------------------------------------
Flächeninhalt: 25.0
Abb. 8-13: Konsole mit Benutzereingaben (Beispieldaten)
Aufgaben
  1. Entwickeln Sie ein geeignetes UML-Klassendiagramm. Lösung
    img/8_14_UML_Rechteck_Benutzereingabe.svg
    Abb. 8-14: Benutzereingaben über die Konsole (Rechteck)
  2. Erstellen Sie den Quellcode der von Ihnen modellierten Klassen. Lösung
    JAVA
    package app;

    public class Rechteck {

        private double breite;
        private double hoehe;
        
        public void setBreite(double pBreite){
            this.breite = pBreite;
        }
        
        public double getBreite(){
            return this.breite;
        }
        
        public void setHoehe(double pHoehe){
            this.hoehe = pHoehe;
        }
        
        public double getHoehe(){
            return this.hoehe;
        }
        
        public double berechneFlaecheninhalt(){
            return breite*hoehe;
        }
        
    }
    Abb. 8-15: Klasse Rechteck (Quellcode)
    JAVA
    package ui;

    import app.Rechteck;

    public class Benutzerkonsole {

        private Rechteck rechteck;
        
        public Benutzerkonsole(){
            this.erfasseRechteckdaten();
            this.zeigeRechteckdaten();
        }
        
        private void erfasseRechteckdaten(){
            ConsoleReader consoleReader = new ConsoleReader();
            double breite;
            double hoehe;

            System.out.println("Rechtecks");
            System.out.println("=========\n");

            System.out.println("Bitte geben Sie Breite und Höhe des Rechtecks ein:");
            System.out.println("--------------------------------------------------");
            
            System.out.print("Breite: ");
            breite = consoleReader.nextDouble();
            
            System.out.print("Höhe: ");
            hoehe = consoleReader.nextDouble();
            
            rechteck = new Rechteck();
            rechteck.setBreite(breite);
            rechteck.setHoehe(hoehe);
        }
        
        private void zeigeRechteckdaten(){
            System.out.println("\n--------------------------------------------------");
            System.out.println("Flaecheninhalt: " + rechteck.berechneFlaecheninhalt());
        }

    }
    Abb. 8-16: Klasse Benutzerkonsole (Quellcode)
  3. Testen Sie Ihre Java-Applikation mit den angegebenen Beispieldaten.
Aufgabe

Aufgabe 8-4: Bibliothek

Ziel ist eine Java-Applikation, die es einem Bibliotheksmitarbeiter ermöglicht die Daten eines neu angeschafften Buchexemplars zu erfassen.

Buchexemplar und Buch werden durch getrennte Klassen abgebildet, da von einem bestimmten Buch mehrerer Exemplare vorhanden sein können. Jedes Buchexemplar-Objekt enthält einen Verweis auf das zu ihm gehörende Buch-Objekt. Darüber hinaus verfügt es über eine eindeutige Signatur, die verrät wo (z. B. Gebäude, Raum, Regal, ...) das betreffende Buchexemplar aufbewahrt wird. Außerdem wird vermerkt, ob das Buchexemplar ausleihbar ist oder nicht (Präsenzexemplar). Ein Objekt der Klasse Bibliothek verwaltet alle vorhandenen Buch-Objekte.

Die Datenerfassung soll über die Konsole erfolgen (vgl. Abb. 8-19).

img/8_17_UML_Buch_Benutzereingabe.svg
Abb. 8-17: UML-Klassendiagramm (Bibliothek)
Vorbereitung
  1. Legen Sie in Eclipse ein neues Java-Projekt 08-4_Bibliothek an.
  2. Erstellen Sie ein Paket namens app und kopieren Sie die Fachklassen Buch und Bibliothek in das Paket.
  3. Legen Sie das Paket ui an und kopieren die Klasse ConsoleReader in das Paket.
Aufgaben
  1. Erstellen Sie im Paket app den Quellcode der Fachklasse Buchexemplar. Informieren Sie sich hierfür zunächst über den primitiven Datentyp boolean (vgl. Infokasten). Lösung
    JAVA
    package app;
    public class Buchexemplar {

        private Buch buch;
        private String signatur;
        private boolean ausleihbar;
        
        public Buchexemplar(Buch pBuch, String pSignatur) {
            this.buch = pBuch;
            this.signatur = pSignatur;
        }

        public Buch getBuch() {
            return buch;
        }

        public void setBuch(Buch pBuch) {
            this.buch = pBuch;
        }

        public String getSignatur() {
            return signatur;
        }

        public void setSignatur(String pSignatur) {
            this.signatur = pSignatur;
        }

        public boolean isAusleihbar() {
            return ausleihbar;
        }

        public void setAusleihbar(boolean pAusleihbar) {
            this.ausleihbar = pAusleihbar;
        }
        
    }
    Abb. 8-18: Klasse Buchexemplar (Quellcode)
  2. Erstellen Sie im Paket ui den Quellcode der UI-Klasse Benutzerkonsole:
    Konsole
    Bitte geben Sie die folgenden Daten des Buchexemplares ein:
    -----------------------------------------------------------
    ISBN: 978-3-95982-044-8
    Signatur: 75/ST 250 J35(1)+2
    ausleihbar (true/false): true

    Folgende Daten wurden für das neue Buchexemplar erfasst:
    -----------------------------------------------------------
    Titel des Buches: Jetzt lerne ich Java
    Signatur des Exemplars: 75/ST 250 J35(1)+2
    Exemplar ausleihbar: true
    Abb. 8-19: Konsole mit Benutzereingaben (Beispieldaten)
    1. Dem einzigen Konstruktor der Klasse wird ein Verweis auf ein Objekt der Klasse Bibliothek übergeben, das alle vorhandenen Buch-Objekte kennt. Im Konstruktor wird der übergebene Wert dem Attribut bibliothek zugewiesen.
      Außerdem ruft der Konstruktor die privaten Methoden erfasseBuchexemplar() und zeigeBuchexemplar() auf. Lösung
      JAVA
      package ui;

      import app.Bibliothek;
      import app.Buch;
      import app.Buchexemplar;

      public class Benutzerkonsole {

          private Buchexemplar buchexemplar;
          private Bibliothek bibliothek;
          
          public Benutzerkonsole(Bibliothek pBibliothek){
              this.bibliothek = pBibliothek;
              this.erfasseBuchexemplar();
              this.zeigeBuchexemplar();
          }
          
          public void erfasseBuchexemplar(){
          }
          
          public void zeigeBuchexemplar(){
          }

      }
      Abb. 8-20: Klasse Buchexemplar (Quellcode)
    2. Die private Methode erfasseBuchexemplar() erfragt vom Benutzer die ISBN des Buches, sowie die Signatur und die Möglichkeit der Ausleihbarkeit des betreffenden Buchexemplars.
      Anschließend fordert sie mit Hilfe der eben erfassten ISBN beim Attribut bibliothek das entsprechende Buch-Objekt an. Dazu nutzt sie dessen getBuch(pIsbn: String)-Methode.
      Das so erhaltene Buch-Objekt, die erfasste Signatur sowie die Möglichkeit der Ausleihbarkeit wird anschließend einem neu erzeugten Objekt der Klasse Buchexemplar zugewiesen, das unter dem Attribut buchexemplar verfügbar sein soll. Lösung
      JAVA
      package ui;

      import app.Bibliothek;
      import app.Buch;
      import app.Buchexemplar;

      public class Benutzerkonsole {

          private Buchexemplar buchexemplar;
          private Bibliothek bibliothek;
          
          public Benutzerkonsole(Bibliothek pBibliothek){
              this.bibliothek = pBibliothek;
              this.erfasseBuchexemplar();
              this.zeigeBuchexemplar();
          }
          
          public void erfasseBuchexemplar(){
              ConsoleReader consoleReader = new ConsoleReader();
              String isbn;
              String signatur;
              boolean ausleihbar;
              Buch buch;
              
              System.out.println("Bitte geben Sie die folgenden Daten des Buchexemplares ein:");
              System.out.println("-----------------------------------------------------------");
                      
              System.out.print("ISBN: ");
              isbn = consoleReader.nextString();
              
              System.out.print("Signatur: ");
              signatur = consoleReader.nextString();
              
              System.out.print("ausleihbar (true/false): ");
              ausleihbar = consoleReader.nextBoolean();
              
              buch = bibliothek.getBuch(isbn);
              buchexemplar = new Buchexemplar(buch, signatur);
              buchexemplar.setAusleihbar(ausleihbar);
          }
          
          public void zeigeBuchexemplar(){
          }

      }
      Abb. 8-21: Klasse Buchexemplar (Quellcode)
    3. Die private Methode zeigeBuchexemplar() gibt den Titel, die ISBN, die Signatur und die Möglichkeit der Ausleihbarkeit des eben erfassten Buchexemplars zu Kontrollzwecken auf der Konsole aus. Lösung
      JAVA
      package ui;

      import app.Bibliothek;
      import app.Buch;
      import app.Buchexemplar;

      public class Benutzerkonsole {

          private Buchexemplar buchexemplar;
          private Bibliothek bibliothek;
          
          public Benutzerkonsole(Bibliothek pBibliothek){
              this.bibliothek = pBibliothek;
              this.erfasseBuchexemplar();
              this.zeigeBuchexemplar();
          }
          
          public void erfasseBuchexemplar(){
              ConsoleReader consoleReader = new ConsoleReader();
              String isbn;
              String signatur;
              boolean ausleihbar;
              Buch buch;
              
              System.out.println("Bitte geben Sie die folgenden Daten des Buchexemplares ein:");
              System.out.println("-----------------------------------------------------------");
                      
              System.out.print("ISBN: ");
              isbn = consoleReader.nextString();
              
              System.out.print("Signatur: ");
              signatur = consoleReader.nextString();
              
              System.out.print("ausleihbar (true/false): ");
              ausleihbar = consoleReader.nextBoolean();
              
              buch = bibliothek.getBuch(isbn);
              buchexemplar = new Buchexemplar(buch, signatur);
              buchexemplar.setAusleihbar(ausleihbar);
          }
          
          public void zeigeBuchexemplar(){
              System.out.println("\nFolgende Daten wurden für das neue Buchexemplar erfasst:");
              System.out.println("-----------------------------------------------------------");
              System.out.println("Titel des Buches: " + buchexemplar.getBuch().getTitel());
              System.out.println("Signatur des Exemplars: " + buchexemplar.getSignatur());
              System.out.println("Exemplar ausleihbar: " + buchexemplar.isAusleihbar());
          }

      }
      Abb. 8-22: Klasse Benutzerkonsole (Quellcode)
  3. Erstellen Sie im Paket ui den Quellcode der Startklasse StartBenutzerkonsole:
    1. Erzeugen Sie ein Objekt der Klassen Buch und weisen Sie ihm die Testwerte aus Aufgabe 8-1 zu (vgl. Abb. 8-1). Lösung
      JAVA
      package ui;

      import app.Bibliothek;
      import app.Buch;

      public class StarteBenutzerkonsole {

          public static void main(String[] args) {
              Buch buch;
              
              buch = new Buch("Jetzt lerne ich Java");
              buch.setIsbn("978-3-95982-044-8");
              buch.setErscheinungsjahr(2016);
          }

      }
      Abb. 8-23: Klasse StartBenutzerkonsole (Quellcode)
    2. Erzeugen Sie ein Objekt der Klasse Bibliothek und fügen Sie ihm anschließend das eben erzeugte Buchobjekt hinzu. Lösung
      JAVA
      package ui;

      import app.Bibliothek;
      import app.Buch;

      public class StarteBenutzerkonsole {

          public static void main(String[] args) {
              Buch buch;
              Bibliothek bibliothek;
              
              buch = new Buch("Jetzt lerne ich Java");
              buch.setIsbn("978-3-95982-044-8");
              buch.setErscheinungsjahr(2016);
              
              bibliothek = new Bibliothek();
              bibliothek.addBuch(buch);
          }

      }
      Abb. 8-24: Klasse StartBenutzerkonsole (Quellcode)
    3. Erzeugen Sie ein Objekt der Klasse Benutzerkonsole und übergeben Sie dem Konstruktor die eben erzeugte Bibliothek. Führen Sie anschließend das Programm mit den angegebenen Testwerten (vgl. Abb. 8-19) aus. Lösung
      JAVA
      package ui;

      import app.Bibliothek;
      import app.Buch;

      public class StarteBenutzerkonsole {

          public static void main(String[] args) {
              Buch buch;
              Bibliothek bibliothek;
              
              buch = new Buch("Jetzt lerne ich Java");
              buch.setIsbn("978-3-95982-044-8");
              buch.setErscheinungsjahr(2016);
              
              bibliothek = new Bibliothek();
              bibliothek.addBuch(buch);
              
              new Benutzerkonsole(bibliothek);
          }

      }
      Abb. 8-25: Klasse StartBenutzerkonsole (Quellcode)

Primitiver Datentyp boolean

Der primitive Datentyp boolean dient zum Speichern der logischen Werte true und false. Da nur diese beiden Werte gespeichert werden können, benötigt eine Variable vom Typ boolean nur sehr wenig Speicherplatz.

Der Name der öffentlichen Methode, die den Wert eines Attributs vom Typ boolean ausliest und zurückgibt, beginnt üblicherweise nicht mit dem Präfix get, sondern mit is .

Merke: Primitiver Datentyp boolean
Typ Inhalt Speicherbedarf Wertebereich Beispiel
int ganze Zahl 4 Byte [-2.147.483.648; 2.147.483.647] int anzahl = 4;
long ganze Zahl 8 Byte [- 9.223.372.036.854.775.808; 9.223.372.036.854.775.807] int anzahl = 4l;
double Gleitkommazahl2 8 Byte [-1,7 *10308; 1,7 *10308] double pi = 3.1415927;
boolean Wahrheitswert JVM-spezifisch [false; true] boolean belegt = true;
Abb. 8-21: Primitive Datentypen