150 likes | 232 Views
Objekt - „Jargon“. Programmierung II Prof. Dr. Michael Löwe. Inhalt. Begriffe Objekterzeugung: „New“, „Create“ etc. Das Undefinierte: „Nil“, „Null“, „Nothing“ etc. Objektzuweisung: „:=“, „Set...=“ etc. Das Clonen: „clone“, „copy“, etc. Objektvergleich: „=“, „==“, „Is“ etc.
E N D
Objekt - „Jargon“ Programmierung II Prof. Dr. Michael Löwe
Inhalt Begriffe Objekterzeugung: „New“, „Create“ etc. Das Undefinierte: „Nil“, „Null“, „Nothing“ etc. Objektzuweisung: „:=“, „Set...=“ etc. Das Clonen: „clone“, „copy“, etc. Objektvergleich: „=“, „==“, „Is“ etc. Das Objekt selbst: „Me“, myself, etc. Rekursive Klassen Collections Klassen und Objekte
Begriffe Instanzen zu Klassen(modulen) heißen Objekte. Die Variablen einer Klasse heißen auch Attribute. Die Prozeduren/Funktionen einer Klasse nennt man Methoden. Die öffentlichen Methoden bilden die Schnittstelle einer Klasse. Die Schnittstelle (ohne die implementierenden Rümpfe) nennt man auch Protokoll der Klasse. Den Aufruf einer Methode für ein Objekt nennt man auch Nachricht an das Objekt. Ein Objekt versteht eine Nachricht, wenn Sie zum Protokoll seiner Klasse gehört. Klassen und Objekte
Übung: Wahrheitswerte Definieren Sie eine Klasse MyBool mit folgender Schnittstelle (Initialisierung auf „false“): Class MyBool Public Function myNot As MyBool Public Function myAnd (b As MyBool) As MyBool Public Function myOr (b As MyBool) As MyBool Public Sub setTrue Public Sub setFalse End Class MyBool Klassen und Objekte
Variablen-Assoziation Wert: 0 Name: i Variablen-Assoziation Variablen-Assoziation Name: b V1: ... V2: ... Vn: ... Name: b Objekterzeugung Variablendeklaration und Variablenbelegung: • Dim i As Integer • Dim b As MyBool • b = New MyBool Klassen und Objekte
Variablen-Assoziation Nothing Name: b Das Undefinierte Dim b as MyBool Set b = Nothing „b.method()“ ist undefiniert • Nothing kann nichts • Nothing macht nichts • Auf Nothing kann man nicht zugreifen • Nothing ist die Verkörperung des NICHTS Klassen und Objekte
Objektzuweisung Zuweisungen an Variablen zu (elementaren) Typen: Dim x As Boolean [x: false] Dim y As Boolean [x: false, y: false] x = true [x: true, y: false] y = x [x: true, y: true] y = False [x: true, y: false] If x = y Then ... [(x = y) false] Klassen und Objekte
Objekte: Namen: Nothing x Objekte: Namen: Objekte: Objekte: Objekte: Namen: Namen: Namen: Objekte: Namen: Objekte: Namen: Nothing Nothing Nothing Nothing x x x x Nothing o1: false Nothing x o1: false o1: true o1: true x y y y y o1: false o2: false o2: false o2: false y y Objektzuweisung Zuweisungen an Variablen zu Objekttypen: Dim x As MyBool Dim y As MyBool Set x = New MyBool Set y = New MyBool Call x.setTrue Set y = x Call y.setFalse If x Is y Then ... Klassen und Objekte
Das „Clonen“ von Objekten • Erweitern Sie die MyBool-Schnittstelle um: Public Function cloneMyBool As MyBool `Liefert als Wert eine Kopie von sich selbst • Wie sieht das allgemeine Verfahren zum Kopieren von Objekten aus? Klassen und Objekte
Objekte: Namen: Objekte: Namen: Nothing Nothing x x o1: true o1: true y o3: false y o2: false Objekte: Namen: o3: true Nothing x Objekte: Objekte: Namen: Namen: Objekte: Namen: Objekte: Namen: Nothing Nothing x x Nothing Nothing x o1: true o1: false x y y o1: false o2: false o2: false y y Objekt-Wert-Zuweisungen Zuweisungen an Variablen zu Objekttypen: Dim x As MyBool Dim y As MyBool Set x = New MyBool Set y = New MyBool Call x.setTrue Set y = x.cloneMyBool Call y.setFalse If x Is y Then ... Klassen und Objekte
Objektvergleich Der Operator Is vergleicht, ob zwei Objekt-variablen dasselbe Objekt als Wert haben Der Operator Is vergleicht nicht, ob die zwei Objektwerte inhaltlich gleich sind. ¿Was ist richtig? 1. (x Is y) (x = y) 2. (x = y) (x Is y) Übungen: Ergänzen Sie die Schnittstelle von MyBool um die Gleichheit! Wie sieht das allgemeine Verfahren für den Test auf Gleichheit aus? Klassen und Objekte
Das Objekt selbst Nachrichten an sich selbst schicken call Me. aMethod (...) Set x = Me.aMethod (...) Sich selbst als Parameter übergeben call anObject.aMethod(..., me,...) Set x = anObject.aMethod(..., me,...) Klassen und Objekte
Rekursive Klassen Klassen, die Attribute mit ihrem eigenen Typ definieren Fast alle interessanten Datenstrukturen sind rekursiv: • Listen, Ströme, Stapel, .... • Bäume, Hierarchien, ... • Arrays, Abbildungen, Dictionaries, ... Übung: Realisieren Sie Ströme als rekursive Klasse! Class MyStream Private entry As Variant Private nextEntry As MyStream Public function isEmpty As Boolean Public function first As Variant Public sub append (x As Variant) Public sub removeFirst End Class MyStream Klassen und Objekte
Ganzheitliche Vertiefung Realisieren Sie optimierte Ströme, indem Sie sich das Ende merken: Class MyBetterStream Private start As MyStream Private end As MyStream .... (Protokoll wie gehabt).... End Class MyBetterStream Klassen und Objekte
Objektzuweisung Zuweisungen an Variablen zu Objekttypen: Dim x As New MyBool [x: false] Dim y As New MyBool [x: false, y: false] Call x.setTrue [x: true, y: false] Set y = x [x: true, y: true] Call y.setFalse [x: false, y: false] If x Is y Then ... [(x = y) true] Klassen und Objekte