{ "@context": "https://schema.org", "@type": "Organization", "name": "Brainscape", "url": "https://www.brainscape.com/", "logo": "https://www.brainscape.com/pks/images/cms/public-views/shared/Brainscape-logo-c4e172b280b4616f7fda.svg", "sameAs": [ "https://www.facebook.com/Brainscape", "https://x.com/brainscape", "https://www.linkedin.com/company/brainscape", "https://www.instagram.com/brainscape/", "https://www.tiktok.com/@brainscapeu", "https://www.pinterest.com/brainscape/", "https://www.youtube.com/@BrainscapeNY" ], "contactPoint": { "@type": "ContactPoint", "telephone": "(929) 334-4005", "contactType": "customer service", "availableLanguage": ["English"] }, "founder": { "@type": "Person", "name": "Andrew Cohen" }, "description": "Brainscape’s spaced repetition system is proven to DOUBLE learning results! Find, make, and study flashcards online or in our mobile app. Serious learners only.", "address": { "@type": "PostalAddress", "streetAddress": "159 W 25th St, Ste 517", "addressLocality": "New York", "addressRegion": "NY", "postalCode": "10001", "addressCountry": "USA" } }

04 OOP-Vererbung Flashcards

(46 cards)

1
Q

Welche drei zentrale Konzepte der ojektorientierten Programmierung gibt es unter anderem?

A

Das Prinzip der Vererbung, Abstraktion und Kapselung

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Was ermöglicht das Prinzip der Vererbung?

A

Es ermöglicht die Wiederverwendbarkeit von Programmcode

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Wie wird eine Klasse genannt, die ihre Elemente vererbt?

A

Basisklasse, Superklasse, Oberklasse, oder Elternklasse

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Wie wird die Klasse, die die Elemenete erbt genannt?

A

Abgeleitete Klasse, Subklasse, Unterklasse, Kindklasse

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Welche Elemente einer Klasse werden vererbt?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Was ist die Syntax der Vererbung?

A

Syntax der Vererbung
Klasse “Abgeleitet” erbt von Klasse “Basis”:

class Abgeleitet : Basis 
{
   // Programmcode der abgeleiteten Klasse
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Wie baut man Klassenhierarchien auf?

A

Durch eine wiederholte Vererbung, indem eine abgeleitete Klasse wiederum Basisklasse für eine neue Vererbung ist

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

An wie viele abgeleitete Klassen kann eine Basisklasse vererben

A

an beliebig viele abgeleitete Klassen

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Von wie vielen Basisklassen kann bei C# eine abgeleitete Klasse erben?

A

Nur von einer Basisklasse

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

In welchem “Sinne” muss Vererbung durchgeführt werden? Gib ein (selbst gewähltes) Beispiel dafür an!

A

Im Sinne einer Spezialisierung

Fahrzeug
Personenkraftwagen
Skoda

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Welche Beziehung muss zwischen den abgeleiteten Klassen einer Klassenhierarchie bestehen? Gib ein (selbst gewähltes) Beispiel dafür an!

A

Ist ein Beziehung

Essen –> Obst –> Apfel

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Wie muss eine “Hat ein-Beziehung” zwischen Klassen beim Klassendesign berücksichtigt werden? Gib ein (selbst gewähltes) Beispiel an!

A

Sie darf beim Klassendesign nicht durch eine Vererbung, sondern eine Einbettung abgebildet werden

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Beschreibe die Funktion von “protected”!

A

Protected Elemente sind aus Sicht der abgeleiteten Klasse public aus der Sicht der Außenwelt, also außerhalb der Klassenhierarchie private

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Was sollte im Zusammenhang mit “protected” beachtet werden?

A

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!!!

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Wie wird die Neudefinition von Elementen der Basisklasse in einer abgeleiteten Klasse bezeichnet und welches Schlüsselwort sollte dabei verwendet werden?

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Auf welche Felder und Eigenschaften greifen geerbte Methoden immer zu, auch wenn diese in einer abgeleiteten Klasse neu definiert wurden?

A

Auf die verdeckten Felder und Eigenschaften des eigenen Objekts (des Basisklassenunterobjekts)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Werden bei einer Vererbung vermehrt Elemente der Basisklasse verdeckt, ist das häufig ein Zeichen von …

A

Design-Fehlern in den Basisklassen oder in der abgeleiteten Klasse

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Was bilden die von einer Basisklasse geerbten Elemente innerhalb eines Objekts der abgeleiteten Klasse?

A

Ein Unterobjekt

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Was ist wichtig für das Verständnis und den sinnvollen Einsatz der Vererbung bei der objektorientierten Programmierung

A

Die Berücksichtigung der Tatsache, dass die von der Basisklasse geerbten Elemente innerhalb des Objekts der abgeleiteten Klasse “quasi ein Unterobjekt bilden”

20
Q

Was passiert wenn eine Basisklasse einen Konstruktor definiert

A

Es resultiert in einer abgeleiteten Klasse ohne einen expliziten Aufruf dieses Konstruktors eine Fehlermeldung!

21
Q

Kann in einer abgeleiteten Klasse auf private Elemente der Basisklasse zugegriffen werden?

A

Nein, sie werden vererbt, aber es ist kein direkter Zugriff möglich

22
Q

Syntax automatische Eigenschaften

A

public double Op1 {get; set;}

23
Q

Warum implementiert man automatische Eigenschaften

A

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.

24
Q

Welche zwei Funktionen haben Klassenhierarchien?

A

bestehenden Code in neuen Klassen wiederzuverwenden

Weiterführung der Basisklasse im Sinne einer Spezialisierung

25
Wann ist bei Klassenhierarchien eine Spezialisierung gegeben?
Wenn eine Ist-eine-Beziehung zwischen den Objekten der abgeleiteten Klasse und der Basisklasse besteht. Jedes Objekt einer abgeleiteten Klasse kann immer auch als Objekt einer Basisklasse angesehen werden: "Ein Nadelbaum ist immer auch ein Baum". "Eine Tanne ist immer auch ein Nadelbaum und immer auch ein Baum". Jedoch: "Ein Baum muss nicht immer ein Nadelbaum sein." "Ein Nadelbaum muss nicht immer eine Tanne sein."
26
Was ist wichtig bei einer Hat-eine Beziehung?
Eine "Hat-ein-Beziehung" darf beim Klassendesign nicht durch eine Vererbung, sondern durch eine Einbettung abgebildet werden. Dabei wird in einer Klasse eine Instanzvariable einer anderen Klasse definiert:
27
Was ist beim Zugriffsmodifizierer "protected" zu beachten?
Auf private-Elemente einer Basisklasse kann auch in davon abgeleiteten Klassen nicht direkt zugegriffen werden. Protected-Elemente sind aus Sicht der abgeleiteten Klasse public, aus Sicht der "Außenwelt" (außerhalb der Klassenhierarchie) private. Protected-Elemente vereinfachen in abgeleiteten Klassen den Zugriff auf interne Elemente der Basisklasse, bergen aber das Risiko, dass dort wiederum die Elemente in unsachgemäßer Weise verändert werden können. Sensible Daten (Felder) sollten in der Basisklasse nicht als "protected" deklarieret werden, der Zugriff sollte lediglich über protected- oder public-Methoden oder Eigenschaften erfolgen (Konzept der Datenkapselung)!
28
Wann verwenden geerbte Methoden die Felder und Eigenschaften des Unterobjekts ihrer eigenen Klasse?
auch dann, wenn diese durch die Neudefinition von gleichnamigen Feldern oder Eigenschaften in einer abgeleiteten Klasse verdeckt wurden
29
Was ist Verdeckung und was soll man dabei beachten?
Verdeckung = Die Neudefinition von geerbten Elementen einer Basiklasse in einer abgeleiteten Klasse Sie soll nach Möglichkeit vermieden werden. zB wird dann damit der "Mehrwert der Vererbung" völlig zunichte gemacht! Eine Verdeckung (mit dem Schlüsselwort new) ist häufig ein Zeichen von Design-Fehlern in der Basisklasse oder in der abgeleiteten Klasse!
30
Wie wird die Neudefinition von Elementen der Basisklasse in einer abgeleiteten Klasse bezeichnet und welches Schlüsselwort sollte dabei verwendet werden?
Verdeckt, New
31
Wie lautet der Quelltext für einen catch-Block, der die Fehlermeldung der oben erzeugten Ausnahme in der Konsole zur Anzeige bringt?
Catch (Exception ex) { Console.WriteLine("FEHLER: " + ex.Message); }
32
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
33
Was passiert wenn in einer Basisklasse ein Konstruktor definiert wird?
Ohne einen expliziten Aufruf des Konstruktors resultiert in der abgeleiteten Klasse eine Fehlermeldung
34
Was passiert, wenn ein Objekt einer abgeleiteten Klasse erstellt wird?
Zuerst wird der Konstruktor der abgeleiteten Klasse aufgerufen. Dieser richtet gemeinsam mit dem new-Operator das Objekt im Speicher ein. Dabei wird festgestellt, dass das Objekt über ein Unterobjekt der Basisklasse verfügt. Zur Einrichtung dieses Unterobjekts muss der Konstruktor der Basisklasse aufgerufen werden. Wurde in der Basisklasse ein eigener Konstruktor programmiert, so steht dort der Standardkonstruktor für einen automatischen (impliziten) Aufruf nicht mehr zur Verfügung:
35
Durch welche Methoden kann man das Fehlen eines Standardkonstruktors beheben?
1. der explizite Aufruf eines Basisklassenkonstruktors | 2. Konstruktorüberladung
36
Was muss man bei überladenen Methoden beachten?
Überladene Methoden besitzen denselben Namen, aber eine unterschiedliche Parameterliste. D.h. sie dürfen gleich heißen, wenn sie sich in ihren Parametern, welche in den runden Klammern angegeben werden, unterscheiden. Dabei muss die Anzahl und/oder es müssen die Datentypen der Parameter unterschiedlich sein.
37
Wie sehen überladene Konstruktoren aus?
Das Gleiche gilt auch für Konstruktoren! So kann das Fehlen eines Standardkonstruktors durch das Überladen mit einem parameterlosen Konstruktor "kompensiert werden". Ein parameterloser Konstruktor wird wie ein Standardkonstruktor verwendet, wenn bei der Instanziierung einer Klasse keine Konstruktor-Argumente angegeben werden.
38
Welche Funktion hat ein parameterloser Konstruktor?
Er wird anstelle des Standardkonstruktors verwendet, wenn bei der Instanziierung einer Klasse keine Konstruktor Argumente angegeben werden
39
Was muss in einer abgeleiteten Klasse erfolgen, wenn in einer Basisklasse der Standardkonstruktor nicht vorhanden ist und dort auch kein parameterloser Konstruktor hinzugefügt werden kann?
Es muss in der abgeleiteten Klasse der Basisklassenkonstruktor explizit aufgerufen werden
40
Syntax eplizites Aufrufen Basisklassenkonstruktor
Nach der Konstruktor Definition in der abgeleiteten Klasse wird ":" angegeben dann base mit den Parametern in runden Klammern
41
Was ist eine Methodenüberladung? Können Konstruktoren überladen werden?
Eine Neudefinition einer Methode mit dem selben Namen aber einer unterschiedlichen Parameterliste Ja
42
Was ist Verdeckung oder Vererbung?
Wenn geerbte Elemente in einer abgeleiteten Klasse neu definiert werden,
43
Was ist bei dieser Neudefinition zu beachten? | also Verdeckung
Diese muss genauso erfolgen, wie in der Basisklasse, lediglich die in Methoden und Eigenschaften erhaltenen Anweisungen können sich unterscheiden
44
Wozu dient das Schlüsselwort "new"?
Damit kann eine Compiler-Warnung beim Verdecken vermieden werden
45
Wozu dient das Schlüsselwort "base" allgemein?
Damit kann in einer abgeleiteten Klasse auf die verdeckten Elemente der Basisklasse zugegriffen werden
46
Werden bei einer Vererbung vermehrt Elemente der Basisklasse verdeckt, ist das meist ein Zeichen von …
Design-Fehlern in der Basisklasse oder in der abgeleiteten Klasse