Folien



(letzte Synchronisation der PDF-Präsentation: 02.03.2017)

Falls keine PDF-Präsentation zu sehen ist, klicken Sie zum Download hier: Direktdownload PDF-Präsentation

Übungen

Alle Übungen finden Sie in der Materialsammlung (dort auch alle zusätzlichen Dateien wie Bilder, Klassendiagramme oder HTML-Vorlagen!).

Die aktuelle Übung können Sie hier als txt-File herunterladen.


***** Übungen: Java - Vererbung *****

Java_Vererbung-1: Vererbung - Vererbungsdiagramm analysieren (Chipkarte)


Betrachten Sie das Klassendiagramm 16java/java21_bild_chipkarte.png

1) Welches sind "Elternklasse(n)", welches "Kindklasse(n)"?
2) Schreiben Sie eine Liste: Welche Attribute und Methoden hat die Klasse "Mensakarte"?
3) Sowohl "Chipkarte" als auch "Bibliothekskarte" haben eine Methode "statusAnzeigen()". Wie verhält sich diese Methode, wenn ein Objekt der Klasse Bibliothekskarte instanziiert wird?
[ 4) Halten Sie es für sinnvoll, die Klasse Chipkarte abstrakt zu gestalten? Begründen Sie Ihre Antwort. ]




Java_Vererbung-2: Vererbung - Klassendiagramm "Menschen"

Erstellen Sie ein Klassendiagramm,
in dem folgende Klassen vertreten sind (Vererbung!):

Mensch
Sportler
Fußballer
Torwart
Stürmer
Büroangestellter

Finden Sie jeweils zwei sinnvolle Attribute und eine sinnvolle Methode!
Verwenden Sie sinnvolle Zugriffsmodifikatoren.




Java_Vererbung-3: SEHR einfache Vererbungsaufgabe: Hund

Benutzen Sie das Klassendiagramm 16java/java21_bild_2hunde.png

Programmieren Sie eine Klasse Hund (Attribute: groesse, Methoden: bellen(), diese Methode gibt aus: "Wuff Wuff") mit den Gettern und Settern und eine Unterklasse Jagdhund (mit der Methode fass()). Die Methode fass() gibt aus "Ich habe das Kaninchen geschnappt."
--- Brauchen Sie für die Klasse "Jagdhund" auch Getter und Setter?
--- Instanziieren Sie jeweils ein Objekt der beiden Klassen
--- Lassen Sie sich für das jeweilige Objekt die Attributwerte ausgeben und verwenden Sie die Methoden.
--- Erweitern Sie die Klasse Jagdhund so, dass für die Methode "fass()" ein Ziel als Parameter übergeben werden kann (z.B. "fass('Kaninchen')"); die Methode gibt dann "Ich habe das Kaninchen geschnappt" aus.




Java_Vererbung-3GREENFOOT: SEHR einfache Vererbungsaufgabe: Hund

Benutzen Sie das Klassendiagramm 16java/java21_bild_2hunde.png
Setzen Sie es im Szenario 16java/java21_vererbung_GF/1_hund_einfach.zip um

- Korrigieren Sie die beiden Klassen Hund und Jagdhund in der korrekten Vererbungsstruktur.
- Die Methode fass() gibt aus "Ich habe das Kaninchen geschnappt."

Verwenden Sie die Methoden

--- Brauchen Sie für die Klasse "Jagdhund" auch Getter und Setter?






Java_Vererbung-4: Einfache Vererbungsaufgabe: Hund

Programmieren Sie die in Bild 16java/java21_bild_3hunde.png dargestellten Klassen. Ergänzen Sie die Getter und Setter.

--- Die Methoden erzeugen lediglich Ausgaben in der Konsole. Lassen Sie sich etwas Originelles einfallen. Die Methode fass(nameDesTiers:String) ist bei EntfesselterJagdhund natürlich etwas offensiver.
--- Erzeugen Sie von jeder Klasse ein Objekt. Verwenden Sie für jedes Objekt alle (!) verfügbaren Methoden, um die Funktionsfähigkeit zu gewährleisten.
--- Notieren Sie: Wie viele Attribute und Methoden haben die Objekte jeweils (inkl. Getter und Setter)?
(Ergebnis bitte in Form
Hund: 13 Attribute, 5 Methoden;
Jagdhund: 100 Attribute, 1 Methode;
EntfesselterJagdhund: 3 Attribute, 50 Methoden)
--- Notieren Sie: Wie viele Attribute sind jeweils privat/geschützt/öffentlich; wie viele Methoden sind privat/geschützt/öffentlich?
(Ergebnis bitte in Form
Attribute: 3 öffentlich, 5 geschützt, 0 privat;
Methoden: 12 öffentlich, 0 geschützt, 1 privat)




Java_Vererbung-5: Einfache Vererbungsaufgabe: Warenwirtschaftssystem

Sie programmieren die Produktverwaltung eines Warenwirtschaftssystems. Jedes Produkt hat eine Artikelnummer, einen Namen und einen Nettopreis, außerdem die entsprechenden Getter und Setter. Besondere Produkte sind die Musik-CD, die noch die Laufzeit in Minuten und den Interpreten enthält, und das Kinderfahrrad, wo über die Methode "klingelAuswaehlen(klingelFarbe:String)" beim Bestellen eine Klingel in einer besonderen Farbe gewählt werden kann.

- Erstellen Sie ein Klassendiagramm zu dieser Situation.
- Programmieren Sie die Klassen. Weisen Sie allen Attributen Initialwerte zu.
- Testen Sie, ob alles funktioniert, indem Sie
---- ein Objekt jeder Klasse instanziieren
---- für die Objekte die einzelnen Attributswerte ausgeben lassen
---- für die Objekte die einzelnen Methoden aufrufen




Java_Vererbung-6: Vererbung programmieren - Pizzabringdienst

Sie programmieren entsprechend 16java/java21_bild-pizza.png ein Bestellsystem für einen Pizzabringdienst. Name (setName), Preis (setPreis) und Rabatt (setRabatt) werden vom System gesetzt; der Einfachheit halber machen Sie das von Hand (indem Sie an der korrekten Stelle die entsprechenden Setter mit beispielhaften Werten verwenden).
Saucentyp und Schärfegrad werden vom User gesetzt. Auch das machen Sie von Hand im Programm.
Probieren Sie aus, ob die Klassen so arbeiten wie erwartet. Versuchen Sie auch auf ein Objekt der Unterklassen die in der Oberklasse definierten Methoden anzuwenden.

Zusatzaufgabe 1:
Erstellen Sie eine grafische Oberfläche, über die die entsprechenden Eingaben und Ausgaben vorgenommen werden.




Java_Vererbung-7: Mitarbeiter: Vererbung im UML-Diagramm darstellen und programmieren

Vorbemerkung: Welche Attribute benötigt werden und von welchem Typ die sind, müssen Sie selbst entscheiden.
Bei allen Methoden, hinter denen (SOUT) steht, wird lediglich eine Konsolenausgabe erzeugt.

Sie verwalten in einem Programm die Mitarbeiter einer Firma. Alle Mitarbeiter haben einen Vornamen und einen Nachnamen und eine Personalnummer. Allen Mitarbeiter wird ein Gehalt ausgezahlt (setGehalt(gehalt:double)), über einen Getter kann man das Gehalt herausfinden.
Die Mitarbeiter im Außendienst können außerdem einen Dienstwagen benutzen (fahreMitDienstwagen(marke:String) SOUT "Sie fahren mit einem Dienstwagen der Marke <marke>."). Man kann weiterhin abfragen, wie viele Außenkontakte sie hatten (getAussenkontakte():int).
Die Mitarbeiter in der Managementetage bekommen einmal jährlich einen Bonus ausgezahlt (zahleBonus(bonus:double) SOUT "Sie bekommen 1299 Euro und kaufen sich ein neues Haus."). Außerdem können Sie die Personalnummer aller anderen Mitarbeiter herausfinden (durch Eingabe des Nachnamens (holePersonalnummer(nachname:String)). Die EDV ist noch nicht so ausgereift, deshalb wird als Antwort auf diese Aktion immer "Mitarbeiter <nachname> nicht verfügbar" ausgegeben.
Die Mitarbeiter in der Lagerverwaltung haben keine besonderen Merkmale, die sie von anderen Mitarbeitern unterscheiden.

a)
Erstellen Sie ein UML-Diagramm zu dieser Situation.

b)
Programmieren Sie die Klassen. Testen Sie die Lauffähigkeit, indem Sie einige Mitarbeiter als Objekte instanziieren und die Methoden ausprobieren.





Java_Vererbung-8: Bundespräsident (einfacher super()-Aufruf)

Programmieren Sie die in 16java/java21_bild_bundespraesident.png dargestellten Klassen so, dass ein Objekt der Klasse Bundespraesident erzeugt werden kann.
Um zu testen, ob alles funktioniert, gibt der Bundespraesident am Ende des Konstruktors aus "Ich heiße <name> und erhalte überall <rabattProzent> Prozent Rabatt."




Java_Vererbung-9: Rechnung

Programmieren Sie die Klassen aus 16java/java21_bild_rechnung.png

Instanziieren Sie von beiden Klassen ein Objekt und testen Sie die Funktionalität.
Wie Sie mit den Prozentzahlen umgehen, bleibt Ihnen überlassen.




Java_Vererbung-10: Hunde (super()-Aufrufe)

Programmieren Sie die Hunde-Klassen aus 16java/java21_bild_hunde_hoellenhunde.png

Die Aufgabe ist eigentlich ziemlich einfach. Sie müssen nur sehr strukturiert vorgehen. Tipps:

1) Halten Sie sich GENAU ans Klassendiagramm.
2) Vergessen Sie nicht, alle an die Konstruktoren übergebenen Parameter entweder per super() nach oben durchzureichen oder den entsprechenden Attributen zuzuweisen!





Java_Vererbung-11: Schulverwaltungssoftware

In der Schulverwaltungssoftware werden Menschen verwaltet, die haben einen Namen (String) und eine Alter (int).
Außerdem gibt es Lehrer, die zusätzlich ein Unterrichtsfach (String) haben.
Dann gibt es Schüler. Jeder hat eine Klassenstufe (5 bis 12) (int). Sie bezahlen einen jährlichen Beitrag in die Schulkasse. Zur Berechnung dieses Beitrags wird das Alter, die Klassenstufe und der Jahresbeitragsfaktor herangezogen. Der Jahresbeitragsfaktor liegt derzeit für alle Schüler bei 5.
Die Formel zur Berechnung des jährlichen Beitrags lautet:
jährlicher Beitrag = Alter/Klassenstufe * Jahresbeitragsfaktor.

( WEGLASSEN: Besondere Schüler sind die Klassensprecher, die aufgrund ihrer großartigen Verdienste einen niedrigeren, individuellen Jahresbeitragsfaktor haben (manchmal 3, manchmal 4)).

a) Erstellen Sie ein Klassendiagramm.
b) Programmieren Sie die Klassen und instanziieren Sie von allen Klassen ein Objekt und testen Sie die Funktionsfähigkeit. Selbstverständlich werden alle Werte (je nach Objekt: Name, Alter, Unterrichtsfach, Klassenstufe, Beitragsfaktor) via Scanner ein. Am besten legen Sie eine entsprechende Klasse an (z.B. Einlesen), die zwei Methoden zum Werteeinlesen hat (eine für int, eine für String). Sie können aber auch ganz anders vorgehen.