Strukturieren durch Hierarchiebildung VL 3-5 Flashcards

1
Q

Was ist die Motivation für Vererbung?

A

Damit man Code Duplikate vermeidet und gleiche Teilkonzepte gleichartig verwendet.

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

Welche Arten von Vererbung gibt es?

A

-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

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

Was ist Subtyping

A

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.

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

Was ist die Grundidee der Polymorphie?

A

Hinter einer Schnittstelle können verschiedenartige Typen und Implementationen verbergen, von deren Unterschieden auf Ebene der Benutzung durch den Klienten bewusst abstrahiert werden soll.

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

Wozu ist Generalisierung zu verwenden?

A
  • Gemeinsamkeiten mehrerer Klassen in Oberklasse zusammenfassen
  • gemeinsame Bestandteile aus diesen Klassen “herausziehen”

->Redundanz vermeiden

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

Was ist Spezialisierung?

A
  • neue Unterklassen als Spezialisierung von bestehenden Klassen
  • Unterklassen verfeinern/erweitern
  • gemeinsames in Oberklasse, Anpassung für andere Kontexte

->Redundanz vermeiden

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

Wozu verwendet man Vererbung?

A
  • Anpassen durch Spezialisierung(Blinkersteuerung -> Blinkersteuerung mit Anhänger)
  • Vermeiden von Redundanz(z.B. Java Collections Framework (List))
  • Wiederverwendung
  • Weitergabe und Ergänzung geerbter Eigenschaften
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Was ist Überschreiben: Redefinieren?

A

Die Unterklasse überschreibt (@Override) eine Methode der Oberklasse und definiert sie neu.

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

Was ist Erweitern beim Redefinieren?

A

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();
.....
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Was sind Eigenschaften abstrakter Klassen?

A
  • keine Exemplare einer abstrakten Klasse erzeugbar
  • Unterklasse muss alle abstrakten Methoden implementieren, andernfalls auch eine abstrakte Klasse

UML:
abstrakte Klasse: kursiv
konkrete Klasse: normal

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

Was ist eine Schablonenmethode?

A

Eine konkrete Methode, die eine oder mehrere abstrakte Methoden aufruft. Sie legt üblicherweise einen Ablauf, einen Algorithmus oder ein Teilverhalten fest.

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

Was ist eine Einschubmethode?

A

Eine abstrakte Methode, die meist zusammen mit der Schablonenmthode vorkommt. Die erbende Klasse implementiert die Einschubmethode und konkretisiert das Verhalten.

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

Was sind Entwicklungsfehler?

A

Sind vermeidbar, sollten vom Team entdeckt werden und Software sollte Robustheit haben

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

Was sind Umgebungsfehler?

A

Sind außerhalb des Einflussbereichs der Entwickler. Unregelmäßig, können aber vorhersehbar sein. -> Fehlerreaktion

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

Was ist Polymorphie?

A

Verschiedene Typen bieten dieselbe Schnittstelle an, wie z.B. ArrayList ≠ ArrayList

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

Was ist dynamisches Binden?

A

Compiler kann erst zur Laufzeit(dynamisch) entscheiden, welche Methode aufzurufen ist, da erst bei Laufzeit Objekt den dynamischen Typ einer Variable bestimmt.

17
Q

Was sind die Regeln für das Subtyping im Bezug auf Verträge zwischen Klienten und Dienstleister?

A
  • Verträge können an Zulieferer weitergegeben werden
  • Zulieferer darf höchstens Voraussetzungen fordern, wie Anbieter sie fordert
  • Zulieferer muss mindestens gleiche Leistung wie Anbieter haben
18
Q

Was sind die Ziele von Implementationsvererbung in Methoden?

A
  • Anpassung durch Spezialisierung(Klasse für neuen Kontext anpassen)
  • Vermeiden von Redundanz
  • Vervollständigen zwecks Wiederverwendung
19
Q

Was macht das Schlüsselwort throw?

A

Auslösen einer Exception

20
Q

Was macht das Schlüsselwort throws?

A

Deklarieren einer geprüften Exception an der Operationsschnittstelle

21
Q

Wie werden Fehler mithilfe von try, catch und finally behandelt?

A
  • try: Block, in dem Auftreten einer Exception gerechnet wird
  • catch: Block zur Behandlung der auftretenden Exception
  • finally: Block, der in jedem Fall ausgeführt wird
22
Q

Was sind checked und unchecked Exceptions?

A
  • checked Exceptions: Methode wird mit thros im Kopf deklariert, so dass im Bedarfsfall ausgelöst wird
  • unchecked Exceptions: wird nicht deklariert, wird für Entwicklungsfehler benutzt
23
Q

Wie erfolgt traditionelle Fehlerbehandlung und was ist die Kritik dahinter?

A
  1. Programm wird aus fehlerhafter Methode abgebrochen (nicht akzeptabel bei z.B. sicherheitskritischen Systemen)
  2. Return-Werrt, der vom Aufrufer als Fehler Code interpretiert werden soll (großer Aufwand)
  3. Fehlerhafte Methode setzt global lesbare Variable auf eingetretenen Fehlerstatus(Fehler wird nicht erkannt)
  4. Callback-Operation wird aufgerufen(machen Schnittstelle unnötig groß)
24
Q

Welche Möglichkeiten und Verpflichtungen haben checked Exceptions?

A

Programmierer von Methode A gibt Verpflichtung an

Programmierer von Methode B vor, Compiler gibt sie weiter

25
Was ist Polymorphie?
Polymorphie kommt aus dem griechischen und bedeutet Vielgestaltigkeit. Dies soll darauf hinweisen, dass Methoden innerhalb einer Vererbungslinie, trotz gleicher Methodensignatur, ein unterschiedliches Verhalten aufweisen.