16
IN FO R M A TIK /TEC H N IK OO implementieren Teil IV Objekte erzeugen

OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt

Embed Size (px)

Citation preview

Page 1: OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt

INFORMATIK / TECHNIK

OO implementieren

Teil IVObjekte erzeugen

Page 2: OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt

© René Probst Modul 226 IV - 2

INFORMATIK / TECHNIK

Von der Klasse zum Objekt

Plan Bau Objekt

Klasse Instanzierung Objekt

● Das Objekt befindet sich nach der Instanzierung im Speicher● Der Speicherort ist die Referenz des Objektes

java

001F 3A00 0010 10F0

Page 3: OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt

© René Probst Modul 226 IV - 3

INFORMATIK / TECHNIK

Der Konstruktor

Jede Klasse verfügt über einen oder mehrere Konstruktoren.● Default-Konstruktor ohne Parameter● Parametrierte Konstruktoren

Code im Konstruktor definiert den Aufbau des Objektes ● Initialisieren von Werten● Einrichten von Beziehungen● …

Page 4: OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt

© René Probst Modul 226 IV - 4

INFORMATIK / TECHNIK

Aufruf des Konstruktors

1. Deklaration eines Attributes (Typ und Name)MyClass myObj;

2. Erzeugung über new-Operator (Inhalt)myObj = new MyClass();

3. Ausführung des Code im KonstruktorReservieren von Speicherplatz und setzen von Attributen

4. Zuweisung der Referenz für ZugriffAdresse des Objekts im Speicher

5. Zugriff auf ObjektmyObj.getCounter();

Page 5: OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt

© René Probst Modul 226 IV - 5

INFORMATIK / TECHNIK

Der Default-Konstruktor

Standardkonstruktor jeder Klasse● wird durch die oberste Klasse (Klasse Object)

bereitgestellt.● wird immer aufgerufen, wenn kein Konstruktor

programmiert wird.● kann überschrieben werden

public class MyClass{

private int counter;

public MyClass(){

counter = 10;

}

}

Page 6: OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt

© René Probst Modul 226 IV - 6

INFORMATIK / TECHNIK

Parametrierte Konstruktoren

Übergabe von Daten für die Instanzierung der Klasse

public class MyClass{private int counter;public MyClass(){ // Standardkonstruktor counter = 10;

}

public MyClass(int startValue){ // parametrierter Konstruktor counter = startValue;

}

}

Page 7: OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt

© René Probst Modul 226 IV - 7

INFORMATIK / TECHNIK

Konstruktoren Überladen

Eine Klasse kann beliebige viele Konstruktoren haben.● Sie müssen sich in der Parameterliste unterscheiden.

public MyClass() {…}

public MyClass(int startValue){…}

Public MyClass(float startValue){…}

Public MyClass(int startValue, String desc){…}

Page 8: OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt

© René Probst Modul 226 IV - 8

INFORMATIK / TECHNIK

Kaskade von Konstruktoren

Regel in OO : alles nur einmal Programmieren! Unterschiedliche Parameter für Instanzierung

public class Person{private String name, firstname;public Person(){ // set the default values name = “none“; firstname = “none“;}public Person(String theName){ this(); name = theName; }public Person(String theName, String first){ this(theName) firstName = first;

}

Page 9: OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt

© René Probst Modul 226 IV - 9

INFORMATIK / TECHNIK

Konstruktor und Vererbung

Bei Vererbung wird immer der Konstruktor der Oberklasse zuerst ausgeführt Defaultkonstruktor● Existiert in der Oberklasse kein Default-Konstruktor,

muss der passende parametrierte Konstruktor verfügbar sein!Public class ClassA{public ClassA(int x){…} // kein Default

}Public class ClassB extends ClassA{public ClassB(int x){ // Aufruf muss super(x); // explizit erfolgen}

}

Page 10: OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt

© René Probst Modul 226 IV - 10

INFORMATIK / TECHNIK

Erzeugen einer Applikation

Keine Regel, nur Tipp! Eigene Erzeuger-Klasse mit main-Methode

1. Klassen der Datenbasis (Data-Layer)

2. Klassen der Verarbeitung (Business-Layer)

3. Klassen der Darstellung (Visual-Layer)● Beispiel

public static void main(){Data dbLayer = new Data();Business business = new Business(dbLayer);GUI appGUI = new GUI(business);

}• Gui-Layer kennt Business-Layer und dieser die Datenbank

Page 11: OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt

© René Probst Modul 226 IV - 11

INFORMATIK / TECHNIK

Destruktion

Objekte die nicht mehr benötigt werden, müssen aus dem Speicher entfernt werden.● Bei Java : myObj = null;

• Garbage Collection gibt speicher frei

● Bei C++• nicht referenzierte Objekte bleiben im Speicher

Speicherlöcher (RAM wird immer weniger) Möglicher Angriffspunkt für Viren

• Explizite Destruktion von Objekten nötig

Page 12: OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt

© René Probst Modul 226 IV - 12

INFORMATIK / TECHNIK

Gleichheit und Identität

Es kann viele Objekte einer Klasse gebendie gleiche Art GleichheitAber unterschiedliche Referenzen (Frida, Vera)

Ein Objekt kann viele Referenzen habengleiche Referenz Identität (Elsa und Elsi)

Kuh

Elsa Elsi Frida Vera

identischgleich

Page 13: OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt

© René Probst Modul 226 IV - 13

INFORMATIK / TECHNIK

Literatur : Goll-Weiss-Müller

10.4.4 Konstruktoren zur Initialisierung 10.4.5 Aufruf eines Konstruktors im

Konstruktor 10.5 Instantiierung von Klassen 10.6 Freigabe von Speicher 11.3.2 Konstruktoren bei abgeleiteten

Klassen 11.6.3 Operatoren für Referenztypen

Page 14: OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt

© René Probst Modul 226 IV - 14

INFORMATIK / TECHNIK

Stichworte

Page 15: OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt

© René Probst Modul 226 IV - 15

INFORMATIK / TECHNIK

Merkblätter

O7 : Instanzierung

Page 16: OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt

© René Probst Modul 226 IV - 16

INFORMATIK / TECHNIK

Übungen

4.1. : Instanzierung mit dem Default-Konstruktor

4.2. : Konstruktor mit einem Parameter 4.3. : Konstruktor mit mehreren Parametern 4.4. : Etwas zum tüfteln