Übungsbeispiele

1. Beispiel: Zahlen - Summe und Vergleich

Zahlenvergleichwert1: intwert2: intStandardkonstruktor()Konstruktor(alle Eigenschaften)wert2Groesser(): booleanberechneSumme() : intsummeGroesser(zahl : int) : booleanzahlZwischenWerten(zahl : int): boolean printInfo(zahl: int)

Details:

  • Methode wert2Groesser(): boolean …​ gibt true zurück, wenn wert2 größer als wert1.

  • Methode berechneSumme(): int …​ liefert Summe von wert1 undwert2 zurück.

  • Methode summeGroesser(zahl: int): boolean …​ nutzt obige Methode zur Berechnung der Summe im Vergleich.

  • Methode zahlZwischenWerten(zahl: int) : boolean …​ prüft ob zahl innerhalb des durch wert1 und wert2 definierten Intervalls liegt (beide Grenzen inklusive)

  • Methode printInfo(zahl: int) …​ gibt z.B. für wert1=5, wert2=10, Übergabeparameter zahl=3 aus (printInfo(…​) hat einen Parameter!):

    ##### Klasse 'Zahlenvergleich' #####
    zahl=3
    wert1=5
    wert2=10
    wert2Groesser(3)      ... true
    berechneSumme()       ... 15
    summeGroesser(3)      ... true
    zahlZwischenWerten(3) ... false

2. Beispiel: Rechteck durch Öffnung

Rechtecklaenge: floatbreite: floatKonstruktor(laenge: float, breite: float)wert1Groesser(float wert1, float wert2): booleanlaengereSeite() : floatkuerzereSeite() : floatpasstDurchOeffnung(seite1: int, seite2: int): boolean printInfo(seite1: int, seite2: int)

Details

  • Die Öffnung ist ebenfalls rechteckig, die beiden gegebenen Rechtecksseiten sind nicht nach Länge und Breite geordnet!

  • Es gibt keine Setter!

  • Im Konstruktor wird geprüft, ob die übergebene Länge NICHT KLEINER als die übergebene Breite ist. Falls doch, wird eine sinnvoll beschreibende Fehlermeldung ausgegeben und beide Werte auf 0 gesetzt.

  • wert1Groesser(…​): boolean …​ gibt true zurück, wenn wert1 größer als wert2, sonst false. Soll im Konstruktor und in den beiden nachfolgenden Methoden verwendet werden (Hinweis: für Prüfung in Gegenrichtung einfach die Werte umgekehrt einsetzen!).

  • laengereSeite() …​ liefert die Abmessung der längeren Seite

  • kuerzereSeite() …​ analog

  • Hinweis: wenn beide gleich lang sind, ist egal, welche Seitenläng jeweils geliefert wird!

  • passtDurchOeffnung(…​) …​ das Rechteck kann 90° gedreht werden! Durch Nutzung der beiden Methoden laengereSeite() und kuerzereSeite() müssen weniger Vergleiche durchgeführt werden.
    Welche der beiden Werte größer ist, ist vorab nicht festgelegt.

  • printInfo(9, 11) …​ für laenge=10.0, breite=6.0 (hat hier 2 Parameter!):

    ##### Klasse 'Rechteck' #####
    ** Öffnung: seite1=9, seite2=11
    ** Rechteck: laenge=10, breite=6
       laengereSeite(): 10.0
       kuerzereSeite(): 6.0
    ** Check: passtDurchOeffnung(9, 11): true

3. Beispiel: Anpassung von Boolean-Ausgaben

Als Basis kann das auf Moodle bereitgestellte BlueJ-Projekt Demo1-Person Datei verwendet werden.

Personnachname: Stringvorname: StringgeburtsJahr: intweiblich boolean;Konstruktor()Konstruktor(nachname: String, vorname: String, weiblich: boolean)alle_getter_und_setter(...): ...alter(diesesJahr: int): intgeschlecht(): StringprintInfo(diesesJahr: int)

Details

  • Vervollständigung der Getter und Setter

  • neue Methode: alter(…​) …​ berechnet ungefähres Alter aus der Differenz `diesesJahr – geburtsJahr

  • neue Methode: geschlecht(): String …​ diese liefert das Geschlecht als Text: männlich/weiblich – Basis ist die boolean Eigenschaft weiblich mit if/else. Wird in printInfo()

  • printInfo(diesesJahr: int) soll z.B. für Evi, May, 2002, weiblich liefern:

+++++ Klasse 'Person' +++++
Vorname:     Evi
Nachname:    May
Geburtsjahr: 2002
Alter:       18
Geschlecht:  weiblich

Zum Berechnen des Alters ist das aktuelle Jahr durchzugeben!

4. Beispiel: Maximum, Minimum u.ä.

MinMaxBerechnungzahl1: doublezahl2: doublezahl3: doubleKonstruktor()Konstruktor(zahl1: double, zahl2: double, zahl3: double)maxWert(): doubleminWert(): doublemaxWertPos(): intminWertPos(): intprintInfo()

Details

  • maxWert() …​ liefert den Zahlenwert der größten Zahl

  • minWert() …​ liefert den Zahlenwert der kleinsten Zahl

  • maxWertPos() …​ liefert die "Positionsnummer" (1, 2 3) der größten Zahl

  • minWertPos() …​ liefert die "Positionsnummer" (1, 2 3) der kleinsten Zahl

  • printInfo() …​ liefert z.B. für die Zahlen 11.5, -10.1, 50.99:

    +++++ MinMaxBerechnung +++++
    Zahlen: z1=11.5, z2=-10.1, z3=50.99
    MaxWert:    50.99
    MaxWertPos: 3
    MinWert:    -10.1
    MinWertPos: 2