12 Logische Operatoren

Aufgabe

Aufgabe 12-1: Auftrag abgeschlossen?

Ein Auftrag soll dann als abgeschlossen gelten, wenn die bestellte Ware versandt ist und der Kunde diese bezahlt hat.

img/Abb_12_1_UML_Auftrag.svg
Abb. 12-1: Klasse Auftrag (UML)

Die Attribute versanddatum und zahlungseingang besitzen beide den Typ LocalDate. Objekte dieser Klasse kapseln Datumswerte und bieten zahlreiche Methoden zur Darstellung und Manipulation von Datumswerten.

Solange die bestellte Ware noch nicht versandt ist, besitzt das Attribut versanddatum den Wert null. Sobald die Ware versandt ist, wird ihm ein Objekt der Klasse LocalDate zugewiesen, welches das jeweilige Versanddatum enthält.

Beim Zahlungseingang ist der Vorgang analog.

Aufgabe

Lesen Sie zunächst den Abschnitt „Merke: Logische Operatoren“ und klären Sie anschließend welcher logische Operator im Quellcode an der mit einem Fragezeichen ( ? ) gekennzeichneten Stelle einzufügen ist (vgl. Abb. 12-2). Lösung

JAVA
public boolean istAbgeschlossen() {
    boolean abgeschlossen = false;

    if(versanddatum != null  ?  zahlungseingang != null) {
        abgeschlossen = true;
    }

    return abgeschlossen;
}
Abb. 12-2: Quellcode der Methode istAbgeschlossen(): boolean

Sollen mehrere Bedingungen gleichzeitig bzw. alternativ erfüllt sein, können diese mit Hilfe logischer Operatoren wie zum Beispiel einem logischem UND bzw. einem logischem ODER verknüpft werden.

Operator Bezeichnung Bedeutung
&& logisches
UND
Der gesamte Ausdruck ist wahr, wenn alle verknüpften Ausdrücke wahr sind. Sobald einer der verknüpften Ausdrücke falsch ist, werden nachfolgende Ausdrücke nicht mehr geprüft.
|| logisches
ODER
Der gesamte Ausdruck ist wahr, wenn einer, mehrere oder alle der verknüpften Ausdrücke wahr sind. Sobald einer der verknüpften Ausdrücke wahr ist, werden nachfolgende Ausdrücke nicht mehr geprüft.
Merke: Logische Operatoren
Beispiele
Ausdruck Bedeutung
umsatz > 5000
&&
umsatz < 10000

Der gesamte Ausdruck ist wahr, wenn der Umsatz mehr als 5.000 EUR und zugleich weniger als 10.000 EUR beträgt. Andernfalls ist der gesamte Ausdruck falsch.

Wenn der Umsatz 5.000 EUR oder weniger beträgt, wird nicht mehr geprüft, ob der Umsatz unter 10.000 EUR liegt.

schueler.getAlter() >= 18
||
schueler.hatErlaubnis()

Der gesamte Ausdruck ist wahr, wenn der Schüler mindestens 18 Jahre alt ist oder die Einwilligung der Eltern vorliegt.

Wenn der Schüler mindestens 18 Jahre alt ist, wird nicht mehr geprüft, ob die Erlaubnis der Eltern vorliegt

Aufgabe

Aufgabe 12-2: Logische Operatoren

In jeder der folgenden Teilaufgaben ist der Quellcode einer Methode abgebildet, der als Argument ein Objekt der Klasse Mitarbeiter übergeben wird.

Sorgen Sie dadür, dass jede Methode die an sie gestellten Anforderungen erfüllt, indem Sie im Quellcode die mit einem Fragezeichen ( ? ) gekennzeichneten Stellen durch einen geeigneten Ausdruck ersetzen.

img/Abb_12_3_UML_Mitarbeiter.svg
Abb. 12-3: Klasse Mitarbeiter (UML)
  1. Auf der Konsole soll „ja“ ausgegeben werden, wenn der jeweilige Mitarbeiter in Tauberbischofsheim oder Wertheim wohnt.Lösung

    JAVA
    public void aufgabeA(Mitarbeiter pMitarbeiter) {
        String wohnort = pMitarbeiter.getWohnort();

        if( ? ) {
            System.out.println("ja");
        }
    }
    Abb. 12-4: Quellcode der Methode aufgabeA(pMitarbeiter: Mitarbeiter)
  2. Auf der Konsole soll „ja“ ausgegeben werden, wenn der jeweilige Mitarbeiter in der Abteilung Personal arbeitet und die Ausbildereignungsprüfung erfolgreich abgelegt hat. Lösung

    JAVA
    public void aufgabeB(Mitarbeiter pMitarbeiter) {
        String abteilung = pMitarbeiter.getAbteilung();

        if( ? ) {
            System.out.println("ja");
        }
    }
    Abb. 12-5: Quellcode der Methode aufgabeB(pMitarbeiter: Mitarbeiter)
  3. Auf der Konsole soll „ja“ ausgegeben werden, wenn der jeweilige Mitarbeiter in der Niederlassung Frankfurt in der Instandhaltung arbeitet und mindestens 20 Jahre im Dienst ist. Lösung

    JAVA
    public void aufgabeC(Mitarbeiter pMitarbeiter) {
        String einsatzort = pMitarbeiter.getEinsatzort();
        String abteilung = pMitarbeiter.getAbteilung();

        if( ? ) {
            System.out.println("ja");
        }
    }
    Abb. 12-6: Quellcode der Methode aufgabeC(pMitarbeiter: Mitarbeiter)