Strukturieren durch Hierarchiebildung VL 3-5 Flashcards
Was ist die Motivation für Vererbung?
Damit man Code Duplikate vermeidet und gleiche Teilkonzepte gleichartig verwendet.
Welche Arten von Vererbung gibt es?
-Typ-Vererbung(Interfaces):
Die Schnittstelle wird vererbt und die Operationen werden überall gleich aufgerufen
-Implementationsvererbung: Unterklassen enthalten Implementation ihrer Elternklassen und sind eine Spezialisierung ihrer Elternklassen. Die Elternklassen abstrahieren von Unterschieden ihrer Unterklassen
Was ist Subtyping
Typen werden hierarchisch miteinander in Beziehung gesetzt. Sollte eine ist-ein-Beziehung ausdrücken(nicht jede ist-ein-Beziheung ist eine Subtyp Beziehung.
Der Fokus beim Subtyping ist Ersetzbarkeit.
Was ist die Grundidee der Polymorphie?
Hinter einer Schnittstelle können verschiedenartige Typen und Implementationen verbergen, von deren Unterschieden auf Ebene der Benutzung durch den Klienten bewusst abstrahiert werden soll.
Wozu ist Generalisierung zu verwenden?
- Gemeinsamkeiten mehrerer Klassen in Oberklasse zusammenfassen
- gemeinsame Bestandteile aus diesen Klassen “herausziehen”
->Redundanz vermeiden
Was ist Spezialisierung?
- neue Unterklassen als Spezialisierung von bestehenden Klassen
- Unterklassen verfeinern/erweitern
- gemeinsames in Oberklasse, Anpassung für andere Kontexte
->Redundanz vermeiden
Wozu verwendet man Vererbung?
- Anpassen durch Spezialisierung(Blinkersteuerung -> Blinkersteuerung mit Anhänger)
- Vermeiden von Redundanz(z.B. Java Collections Framework (List))
- Wiederverwendung
- Weitergabe und Ergänzung geerbter Eigenschaften
Was ist Überschreiben: Redefinieren?
Die Unterklasse überschreibt (@Override) eine Methode der Oberklasse und definiert sie neu.
Was ist Erweitern beim Redefinieren?
Die Methode der Oberklasse wird mit Schlüsselwort super aufgerufen und dann erweitert.
Beispiel:
Oberklasse:
public void eins(){}
Unterklasse: @Override public void eins() { super.eins(); ..... }
Was sind Eigenschaften abstrakter Klassen?
- keine Exemplare einer abstrakten Klasse erzeugbar
- Unterklasse muss alle abstrakten Methoden implementieren, andernfalls auch eine abstrakte Klasse
UML:
abstrakte Klasse: kursiv
konkrete Klasse: normal
Was ist eine Schablonenmethode?
Eine konkrete Methode, die eine oder mehrere abstrakte Methoden aufruft. Sie legt üblicherweise einen Ablauf, einen Algorithmus oder ein Teilverhalten fest.
Was ist eine Einschubmethode?
Eine abstrakte Methode, die meist zusammen mit der Schablonenmthode vorkommt. Die erbende Klasse implementiert die Einschubmethode und konkretisiert das Verhalten.
Was sind Entwicklungsfehler?
Sind vermeidbar, sollten vom Team entdeckt werden und Software sollte Robustheit haben
Was sind Umgebungsfehler?
Sind außerhalb des Einflussbereichs der Entwickler. Unregelmäßig, können aber vorhersehbar sein. -> Fehlerreaktion
Was ist Polymorphie?
Verschiedene Typen bieten dieselbe Schnittstelle an, wie z.B. ArrayList ≠ ArrayList