Vererbung (Teil 6) - Objektorientierung: Kapselung/Vererbung/Polymorphie

preview_player
Показать описание
In Teil 6 meines Kurses zu den drei Säulen der Objektorientierung geht es endlich um das nächste Thema: die Vererbung. Damit können wir Inhalte aus anderen Klassen wiederverwenden und sparen uns einen Haufen doppelten Code. Wie das Ganze funktioniert, zeigt das Video und in der - recht umfangreichen - Hausaufgabe darfst du gleich selbst ran!

----
LZK-Fragen

* Welches Problem löst die Vererbung?
* Wie funktioniert die Vererbung?
* Wie heißen die an einer Vererbung beteiligten Klassen?
* Wie implementiert man die Vererbung in Java?
* Wann sollte man Vererbung nutzen und wann nicht?
* Wie kann man aus einer Subklasse auf Code der Basisklasse zugreifen?
* Wie, wo und wann wird in der Subklasse der Konstruktor der Basisklasse aufgerufen?
* Warum darf eine Basisklasse ihre Subklassen nicht kennen?

----

Deine Hausaufgabe:

Erzeuge eine Klasse "Getraenkeautomat" und übernimm alle Attribute und Methoden
aus der Klasse Kaffeeautomat.
Entferne alle Referenzen auf die Kaffeesorte. Passe auch getBeschreibung() entsprechend an.
Mache alle Methoden public.
Lass die Klasse Kaffeeautomat von Getraenkeautomat erben und entferne den doppelten Code
für Bezeichnung und Füllstand.
Erzeuge eine Klasse "Softdrinkautomat", lasse sie von Getraenkeautomat erben.
Füge ein Enum "Softdrinksorte" hinzu mit den Ausprägungen COLA, FANTA und SPRITE
und ergänze eine Methode getName() analog zur Kaffeesorte.
Füge der Klasse Softdrinkautomat ein Attribut "softdrinksorte" vom Typ des neuen Enums hinzu
und ergänze passende Getter und Setter.
Füge einen Konstruktor mit allen Attributen und einen nur mit der Beschreibung
und sinnvollen Standardwerten analog zu Kaffeeautomat hinzu.
Füge Softdrinkautomat eine Methode fuelleSirupEin(Integer mengeInProzent) hinzu
analog zu fuelleBohnenEin() in Kaffeeautomat.
Extrahiere den gemeinsamen Code von fuelleSirupEin() und fuelleBohnenEin()
in eine neue Methode "public Integer fuelleAuf(Integer mengeInProzent)" in Getraenkeautomat.
Diese Methode gibt die tatsächlich aufgefüllte Menge zurück, anstatt sie auszugeben.
Verwende diese Information für die Ausgabe in den Methoden der beiden Subklassen.
Erzeuge am Ende der Main-Methode in Kantine einen neuen Softdrinkautomat "SDA-001"
für Fanta mit Füllstand 50% und gib seine Beschreibung auf der Konsole aus.
Fülle SDA-001 mit 30% Sirup und gib seine Beschreibung erneut aus.
Prüfe die Ausgabe des Programms. Es sollten alle Automaten ausgegeben werden,
aber die Kaffeesorte bzw. die Softdrinksorte fehlen.

----

00:00 Einleitung
00:19 Bisheriger Stand
00:56 Neue Klasse: Motorrad
01:32 Problem: Doppelter Code
03:11 Warum ist doppelter Code schlecht?
03:45 Vererbung erlaubt Wiederverwendung
04:13 Basisklasse Fahrzeug einführen
05:50 Fahrzeug mit Inhalten von Auto füllen
07:33 Auto und Motorrad erben von Fahrzeug
08:40 Auto extends Fahrzeug
09:49 Motorrad extends Fahrzeug
10:12 Welcher Code ist jetzt wo?
10:30 Basis-/Ober-/Eltern-/Superklasse
10:55 Sub-/Unter-/Kindklasse
11:45 Ist Vererbung immer sinnvoll?
12:19 Compilefehler beheben
12:37 super zeigt auf die Basisklasse
13:21 Konstruktor der Basisklasse aufrufen
15:23 Basiskonstruktor mit super() aufrufen
17:01 Review der Klasse Auto
18:03 Motorrad umbauen
18:42 Läuft der Code noch?
20:16 Basisklasse kennt nicht ihre Subklassen
21:20 Hausaufgabe 06
Рекомендации по теме
Комментарии
Автор

Vererbung? Ist das nicht die Säule, die alles zum Einsturz bringt, wenn man sie zu stark belastet?

MarkusBurrer
Автор

Hallo zusammen, ich verstehe immer noch nicht ganz, warum"Vererbung nicht so gut sein soll". Wir können Vererbung nicht umgehen, da sie, bereits erwähnt, eine der Säulen der OPP ist. Kann mir jemand mehr Info oder Erklärungen dazu geben?? Danke im Voraus :D

karenalvarez