04 OOP-Vererbung Flashcards
(46 cards)
Welche drei zentrale Konzepte der ojektorientierten Programmierung gibt es unter anderem?
Das Prinzip der Vererbung, Abstraktion und Kapselung
Was ermöglicht das Prinzip der Vererbung?
Es ermöglicht die Wiederverwendbarkeit von Programmcode
Wie wird eine Klasse genannt, die ihre Elemente vererbt?
Basisklasse, Superklasse, Oberklasse, oder Elternklasse
Wie wird die Klasse, die die Elemenete erbt genannt?
Abgeleitete Klasse, Subklasse, Unterklasse, Kindklasse
Welche Elemente einer Klasse werden vererbt?
Alle Elemente der Basisklasse außer dem Konstruktor und Destruktor, private Elemente ebenfalls aber es ist in der abgeleiteten Klasse keine direkter Zugriff möglich
Was ist die Syntax der Vererbung?
Syntax der Vererbung
Klasse “Abgeleitet” erbt von Klasse “Basis”:
class Abgeleitet : Basis { // Programmcode der abgeleiteten Klasse }
Wie baut man Klassenhierarchien auf?
Durch eine wiederholte Vererbung, indem eine abgeleitete Klasse wiederum Basisklasse für eine neue Vererbung ist
An wie viele abgeleitete Klassen kann eine Basisklasse vererben
an beliebig viele abgeleitete Klassen
Von wie vielen Basisklassen kann bei C# eine abgeleitete Klasse erben?
Nur von einer Basisklasse
In welchem “Sinne” muss Vererbung durchgeführt werden? Gib ein (selbst gewähltes) Beispiel dafür an!
Im Sinne einer Spezialisierung
Fahrzeug
Personenkraftwagen
Skoda
Welche Beziehung muss zwischen den abgeleiteten Klassen einer Klassenhierarchie bestehen? Gib ein (selbst gewähltes) Beispiel dafür an!
Ist ein Beziehung
Essen –> Obst –> Apfel
Wie muss eine “Hat ein-Beziehung” zwischen Klassen beim Klassendesign berücksichtigt werden? Gib ein (selbst gewähltes) Beispiel an!
Sie darf beim Klassendesign nicht durch eine Vererbung, sondern eine Einbettung abgebildet werden
Beschreibe die Funktion von “protected”!
Protected Elemente sind aus Sicht der abgeleiteten Klasse public aus der Sicht der Außenwelt, also außerhalb der Klassenhierarchie private
Was sollte im Zusammenhang mit “protected” beachtet werden?
Es gibt das Risiko, dass die Elemente in der Basisklasse unsachgemäßer Weise verändert werden können
sensible Daten sollen daher in der Basisklasse nicht als protected deklariert werden!!!
Wie wird die Neudefinition von Elementen der Basisklasse in einer abgeleiteten Klasse bezeichnet und welches Schlüsselwort sollte dabei verwendet werden?
Auf welche Felder und Eigenschaften greifen geerbte Methoden immer zu, auch wenn diese in einer abgeleiteten Klasse neu definiert wurden?
Auf die verdeckten Felder und Eigenschaften des eigenen Objekts (des Basisklassenunterobjekts)
Werden bei einer Vererbung vermehrt Elemente der Basisklasse verdeckt, ist das häufig ein Zeichen von …
Design-Fehlern in den Basisklassen oder in der abgeleiteten Klasse
Was bilden die von einer Basisklasse geerbten Elemente innerhalb eines Objekts der abgeleiteten Klasse?
Ein Unterobjekt
Was ist wichtig für das Verständnis und den sinnvollen Einsatz der Vererbung bei der objektorientierten Programmierung
Die Berücksichtigung der Tatsache, dass die von der Basisklasse geerbten Elemente innerhalb des Objekts der abgeleiteten Klasse “quasi ein Unterobjekt bilden”
Was passiert wenn eine Basisklasse einen Konstruktor definiert
Es resultiert in einer abgeleiteten Klasse ohne einen expliziten Aufruf dieses Konstruktors eine Fehlermeldung!
Kann in einer abgeleiteten Klasse auf private Elemente der Basisklasse zugegriffen werden?
Nein, sie werden vererbt, aber es ist kein direkter Zugriff möglich
Syntax automatische Eigenschaften
public double Op1 {get; set;}
Warum implementiert man automatische Eigenschaften
Zur raschen und einfachen Implementierung von Feldern welche von anderen Klassen aus ohne Zugriffskontrollen verwendbar sein sollen.
Automatische Eigenschaften ermöglichen auch die nachträgliche Implementierung von Zugriffskontrollen, ohne die Schnittstelle der Klasse nach außen verändern zu müssen. Dazu wird die automatische Eigenschaft einfach in eine “normale Eigenschaft” umgewandelt.
Welche zwei Funktionen haben Klassenhierarchien?
bestehenden Code in neuen Klassen wiederzuverwenden
Weiterführung der Basisklasse im Sinne einer Spezialisierung