oo implementieren teil iv objekte erzeugen. © rené probstmodul 226iv - 2 von der klasse zum objekt...
TRANSCRIPT
INFORMATIK / TECHNIK
OO implementieren
Teil IVObjekte erzeugen
© 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
© 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● …
© 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();
© 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;
}
}
© 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;
}
}
© 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){…}
© 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;
}
© 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}
}
© 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
© 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
© 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
© 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
© René Probst Modul 226 IV - 14
INFORMATIK / TECHNIK
Stichworte
© René Probst Modul 226 IV - 15
INFORMATIK / TECHNIK
Merkblätter
O7 : Instanzierung
© 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