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
Q

Was ist Polymorphie?

A

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