objekt - jargon programmierung ii prof. dr. michael löwe

15
Objekt - „Jargon“ Programmierung II Prof. Dr. Michael Löwe

Upload: luise-borg

Post on 05-Apr-2015

119 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Objekt - Jargon Programmierung II Prof. Dr. Michael Löwe

Objekt - „Jargon“

Programmierung II

Prof. Dr. Michael Löwe

Page 2: Objekt - Jargon Programmierung II Prof. Dr. Michael Löwe

Klassen und Objekte 2

Inhalt

BegriffeObjekterzeugung: „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 KlassenCollections

Page 3: Objekt - Jargon Programmierung II Prof. Dr. Michael Löwe

Klassen und Objekte 3

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.

Page 4: Objekt - Jargon Programmierung II Prof. Dr. Michael Löwe

Klassen und Objekte 4

Übung: Wahrheitswerte

Definieren Sie eine Klasse MyBool mit folgender Schnittstelle (Initialisierung auf „false“):

Class MyBoolPublic Function myNot As MyBoolPublic Function myAnd (b As MyBool) As MyBoolPublic Function myOr (b As MyBool) As MyBoolPublic Sub setTrue Public Sub setFalse End Class MyBool

Page 5: Objekt - Jargon Programmierung II Prof. Dr. Michael Löwe

Klassen und Objekte 5

Objekterzeugung

Variablendeklaration und Variablenbelegung:

• Dim i As Integer

• Dim b As MyBool

• b = New MyBool

Name: iName: i Wert: 0Wert: 0Variablen-Assoziation

Name: bName: bVariablen-Assoziation

Name: bName: b

Variablen-AssoziationV1: ...V2: ...Vn: ...

V1: ...V2: ...Vn: ...

Page 6: Objekt - Jargon Programmierung II Prof. Dr. Michael Löwe

Klassen und Objekte 6

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

Name: bName: bVariablen-Assoziation

NothingNothing

Page 7: Objekt - Jargon Programmierung II Prof. Dr. Michael Löwe

Klassen und Objekte 7

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]

Page 8: Objekt - Jargon Programmierung II Prof. Dr. Michael Löwe

Klassen und Objekte 8

Objektzuweisung

Zuweisungen an Variablen zu Objekttypen:Dim x As MyBoolDim y As MyBoolSet x = New MyBoolSet y = New MyBoolCall x.setTrueSet y = xCall y.setFalseIf x Is y Then ...

Namen: Objekte:

xxNothingNothing

Namen: Objekte:

xxNothingNothing

yy

Namen: Objekte:

xxNothingNothing

yyo1: falseo1: false

Namen: Objekte:

xxNothingNothing

yyo1: falseo1: false

o2: falseo2: false

Namen: Objekte:

xxNothingNothing

yyo1: trueo1: true

o2: falseo2: false

Namen: Objekte:

xxNothingNothing

yyo1: trueo1: true

o2: false

Namen: Objekte:

xxNothingNothing

yyo1: falseo1: false

Page 9: Objekt - Jargon Programmierung II Prof. Dr. Michael Löwe

Klassen und Objekte 9

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?

Page 10: Objekt - Jargon Programmierung II Prof. Dr. Michael Löwe

Klassen und Objekte 10

Objekt-Wert-Zuweisungen

Zuweisungen an Variablen zu Objekttypen:Dim x As MyBoolDim y As MyBoolSet x = New MyBoolSet y = New MyBoolCall x.setTrueSet y = x.cloneMyBoolCall y.setFalseIf x Is y Then ...

Namen: Objekte:

xxNothingNothing

Namen: Objekte:

xxNothingNothing

yy

Namen: Objekte:

xxNothingNothing

yyo1: falseo1: false

Namen: Objekte:

xxNothingNothing

yyo1: falseo1: false

o2: falseo2: false

Namen: Objekte:

xxNothingNothing

yyo1: trueo1: true

o2: falseo2: false

Namen: Objekte:

xxNothingNothing

yyo1: trueo1: true

o2: false

o3: trueo3: true

Namen: Objekte:

xxNothingNothing

yyo1: trueo1: true

o3: falseo3: false

Page 11: Objekt - Jargon Programmierung II Prof. Dr. Michael Löwe

Klassen und Objekte 11

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?

Page 12: Objekt - Jargon Programmierung II Prof. Dr. Michael Löwe

Klassen und Objekte 12

Das Objekt selbst

Nachrichten an sich selbst schickencall Me. aMethod (...)

Set x = Me.aMethod (...)

Sich selbst als Parameter übergebencall anObject.aMethod(..., me,...)

Set x = anObject.aMethod(..., me,...)

Page 13: Objekt - Jargon Programmierung II Prof. Dr. Michael Löwe

Klassen und Objekte 13

Rekursive KlassenKlassen, die Attribute mit ihrem eigenen Typ definierenFast 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 VariantPrivate nextEntry As MyStreamPublic function isEmpty As BooleanPublic function first As VariantPublic sub append (x As Variant)Public sub removeFirst

End Class MyStream

Page 14: Objekt - Jargon Programmierung II Prof. Dr. Michael Löwe

Klassen und Objekte 14

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

Page 15: Objekt - Jargon Programmierung II Prof. Dr. Michael Löwe

Klassen und Objekte 15

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]