Kapitel 4 Flashcards

Konzepte der OOS

1
Q

Konzepte der OOS

  • programmiert wird in?
A
  • OO-Programme bestehen aus interagierenden Objekten

- programmiert werden Klassen (davon werden dann Objekte als Instanzen erzeugt)

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

Klassen

A

Def.: Beschreibung eines oder mehrerer ähnlicher Objekte (Abstraktion)

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

UML-Notation:

A

3 Rechtecke: Name, Attributdeklaration, Methodendeklaration

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

Objekte Def.

A

Def.: Ein Objekt ist ein tatsächlich existierendes „Ding“. Es ist eindeutig identifizierbar durch
Objekt-ID (Referenz) und hat Zustand (Attributwerte) und Verhalten (Methoden).

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

Objekt in UML:

A

Objekt in UML:
meistens Objekte nicht in UML dargestellt, ansonsten wie Klassen, aber Name (Kleinbuchstabe
vorne!) unterstrichen, Attribute haben Werte

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

Auto meinAuto;

A

//Legt auf Stack Referenz an, die spater auf ein Auto-Objekt zeigen wird:

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

meinAuto = new Auto();

A

//Erzeugt Objekt auf Heap:

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

“this“

A

„this“ ist Referenz auf sich selbst
- muss immer dann verwendet werden, wenn Attribut durch Parameter/lokale Variable
(innerhalb einer Methode) überlagert wird
- später: mit this Referenz auf sich selbst anderen Objekten mitteilen

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

call-by-value in Java

A

call-by-value: Veränderungen der Parameter werden nach außen nicht sichtbar (s.o.: in
aktJahr steht weiterhin 2008)
- a bleibt unverändert

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

Konstruktoren

A

Bei Erzeugung neuer Objekte:
Auto meinAuto = new Auto();
// Defaultkonstruktor (Auto()) so lange vorhanden,
// bis manuell anderer Konstruktor definiert
Konstruktor stellt Speicherplatz auf Heap zur Verfügung und initialisiert Attribute
defaultmäßig
man kann auch eigenen Konstruktor implementieren

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

Konstruktoren Def.

A

Def.: Konstruktoren sind Methoden ohne explizit aufgeführten Rückgabetyp (also auch kein
void), die den Namen der Klasse erhalten, zu der sie gehören. Die Anzahl der Parameter ist
beliebig.
- Rückgabewert des Konstruktors ist Referenz auf neu erzeugten Speicherplatz
- möglichst immer vor die anderen Methode der Klasse schreiben

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

Überladung:

A

Überladung: mehrere Implementierungen einer Methode mit gleichem Namen mit
unterschiedlichen Signaturen in gleicher Klasse

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

Vererbung Def.

A

unterstützt die Wiederverwendung
- Def.: Die Möglichkeit eine Klasse B so zu definieren, dass sie ohne explizite Deklaration
alle Attribute und Methoden einer bereits definierten Klasse übernimmt (erbt), heißt
Vererbung.

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

Mehrfachvererbung

A

Gibt es in Java nicht! Simulation durch Interf

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

Zuweisungskompatibilitat

A

Man kann einer Objektreferenz auf ein Oberklassenobjekt eine Referenz auf ein Objekt einer
Unterklasse zuweisen.

Da jeder LKW ein Auto ist, sind in LKWs auch alle Dinge der Autos enthalten ) kein
Problem
Umgedreht geht nicht, später aber mit cast

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

Zuweisungskompatibilitat auch in Parametern

A

auch als Parameter von Konstruktoren / Methoden kann man anstelle einer Referenz
auf ein Oberklassenobjekt eine Referenz auf ein Unterklassenobjekt übergeben
- Methode verwendet nur Dinge des Oberklassenobjekts (in Unterklassenobjekt auch
vorhanden)

17
Q

Uberlagerung von geerbten Methoden in Unterklassen

A
Auto auto = new Auto();
LKW lkw = new LKW();
auto = lkw; // kann nur auf Auto-Attribute / -Methoden zugreifen
System.out.println(auto.alter(2003)); // falls Methode aus Auto
// allerdings uberlagert wurde, wird die Unterklassenimplementierung
// ausgefuhrt

Da auto auf ein Objekt der Klasse LKW zeigt, wird Methodenimplementierung aus LKW
ausgeführt.

18
Q

Dynamisches Binden

A

Bei überlagerten Methoden kann erst zur Laufzeit (in Abhängigkeit des Objekttyps) entschieden
werden, welche Implementierung ausgeführt wird.
Möchte man die Methodenimplementierung der Oberklasse verwenden, so kann man dies
mit super.methodenName(..) innerhalb der abgeleiteten Klasse ausführen.

Wichtig: Man muss mindestens die gleichen Zugriffsrechte in der Unterklasse, wie in der
Oberklasse geben.
Ohne dynamisches Binden wäre Polymorphismus (Überlagerung) nicht möglich.

19
Q

Klasse Object

A

alle Klassen sind automatisch von Object abgeleitet

-stellt nützliche Methoden zur Verfügung, die in erbenden Klassen überlagert werden
müssen

bei Objekten immer equals benutzen und nicht ==

20
Q

Konstruktoren in Vererbungshierarchien

A

Bei Konstruktoraufruf einer erbenden Klasse, wird implizit zuerst der Defaultkonstruktor
der Oberklasse mit super() aufgerufen.

21
Q

Aggregation

A

bisher: Vererbung (ist_ein) als einzige Relation zwischen Objekten
- jetzt: Aggregation (hat_ein, besteht_aus)

Aggregation der Vererbung vorziehen, da in Java keine Mehrfachvererbung möglich
und Vererbung oft auch bei nicht - ist_ein-Relationen eingesetzt

22
Q

Konstruktoren bei Aggregation

A

Unterschied zur Vererbung, wo Konstruktor der Oberklasse implizit aufgerufen wird!

Definiert man Klasse A durch Aggregation mit Klasse B, so muss ggf. im Konstruktor von A
der von B explizit aufgerufen werden, um Speicherplatz für das Attribut zur Verfügung zu
stellen.

23
Q

Abstrakte Methode Def.

A

Def.: Abstrakte Methode: Wenn eine Methode nicht implementiert ist, so heißt diese abstrakt

24
Q

Def.: Abstrakte Klasse

A

Def.: Abstrakte Klasse: Eine Klasse, die mindestens eine als abstrakt definierte Methode
enthält, muss selbst als abstrakt definiert werden