Wizards & Builders GmbH
Einführung in die Einführung in die objektorientierte objektorientierte
Programmierung Programmierung
Norbert Abb
Wizards & Builders GmbH
Seit wann gibt es Objekt-Seit wann gibt es Objekt-orientierte Programmierung?orientierte Programmierung?
Entwicklung von OO Sprachen – Simula 67– Anfang der 70er: Smalltalk– viele nicht bekannte Sprachen– Eiffel, Ada, C++– ... Visual FoxPro!!!
Wizards & Builders GmbH
Was zeichnet objektorientierte Was zeichnet objektorientierte Programmierung aus?Programmierung aus?
Objekte Eigenschaften/Properties Methoden Klassen Vererbung
Wizards & Builders GmbH
ObjekteObjekte
Modelle der Wirklichkeit Substantive Objekte haben eine 'Identität' Abgrenzung 'Verhalten'
Wizards & Builders GmbH
EigenschaftenEigenschaften
Ein Objekt hat bestimmte Eigenschaften, die das Objekt kennzeichnen
Kann aus anderen Objekten zusammengesetzt sein
Ein Objekt 'reagiert' auf bestimmte Ereignisse (Events)
Ein Objekt hat Methoden durch die es manipuliert werden kann
Wizards & Builders GmbH
Eigenschaften (Properties)Eigenschaften (Properties)
Objekte haben Eigenschaften Die Namen der Eigenschaften werden durch
die Klasse des Objekts festgelegt Wenn sie nicht privat deklariert sind
(Protected) können sie von 'außen' gesehen und manipuliert werden:? oStopuhr.nSec
oStopuhr.nSec = 15
Wizards & Builders GmbH
MethodenMethoden
Gebunden an ein Objekt Aktionen, mit denen ein Objekt sich selbst
verändert oder Nachrichten an andere Objekte schickt
Definieren das Verhalten eines Objektes
Wizards & Builders GmbH
MethodenMethoden
Methoden sind Prozeduren, die sich auf Objekte einer Klasse beziehen
Methoden können öffentlich oder privat (protected) sein
Wenn Methoden nicht für das aktuelle Objekt definiert sind, werden sie in den Oberklassen (Hierarchie!) gesucht
Wizards & Builders GmbH
KlassenKlassen
Zusammenfassung von Objekten (?) Schema eines Objektes Bauplan eines Objektes In der Klasse werden die Arten der
Eigenschaften definiert In der Klasse werden die Methoden
definiert
Wizards & Builders GmbH
Klassen (Beispiel)Klassen (Beispiel)
Klassen beschreiben Eigenschaften und Verhalten von Objekten
DEFINE CLASS Stopuhr AS Container
nSek = 0nMin = 0nStd = 0
nAnzSek = 0
PROCEDURE Start
This.timer1.enabled = .t.
ENDPROC
Wizards & Builders GmbH
Instanziierung 1Instanziierung 1
Objekte werden als 'Instanzen' von Klassen erzeugt:– Visual FoxPro:
oMeinObj = CreateObject('CommandButton')– andere OO Sprachen:
oMeinObj := CommandButton.New ()
Wizards & Builders GmbH
Instanziierung 2Instanziierung 2
Eigenschaften der Instanzen werden besetzt:– oMeinObj.FontName = 'Arial'– oMeinObj.Caption = 'OK'– oMeinObj.Default = .T.
Wizards & Builders GmbH
VererbungVererbung
Aufbau aller Klassen auf Basisklassen Klassen können aufeinander Aufbauen
(Klassenhierarchien) Unterklassen erben Methoden und
Eigenschaften von 'Eltern'
Wizards & Builders GmbH
VererbungVererbung
Spezialisierung von Klassen (neue, oder spezielle Eigenschaften)
Unterklassen können Eigenschaften und Methoden neu 'überdefinieren'
Klassen können mehrere Unterklassen haben; so entsteht eine Klassenhierarchie
Wizards & Builders GmbH
KlassenhierarchieKlassenhierarchie
Eine Klasse entsteht durch 'Subclassing' aus einer anderen
Eigenschaften und Methoden werden implizit von der 'Oberklasse' übernommen
Die VFP Basisklassen haben ein default 'Verhalten' das abgeschaltet werden kann (NoDefault)
Code in einer 'Oberklasse' kann durch :: angesprochen werden
Wizards & Builders GmbH
Klassenhierarchie (Beispiel)Klassenhierarchie (Beispiel)Fahrzeuge
(Höchstgeschwindigkeit, Nutzlast) / | \
Landfahrzeuge Wasserfahrzeuge Luftfahrzeuge (Anzahl Räder) ... ... / \Motorfahrzeuge Muskelkraftfahrzeuge(Leistung, Motor an) |Autos(Marke,Typ,...)
Wizards & Builders GmbH
ThisThis
Mit 'This' kann ein Objekt selbst in einer Methode referenziert werden:This.Caption = 'OK' stattMeineMaske.pgfPF1.pagP1.cmdOK.Caption = 'OK'
'relative Referenzierung' von Objekten:This.Parent.Caption = 'Seite 1'
Außer 'This': 'ThisForm' und 'ThisFormSet'
Wizards & Builders GmbH
ObjekthierarchieObjekthierarchie
Objekte können andere Objekte beinhalten (Container)
Dies kann über mehrere Stufen geschehen:oMeinMas.MeinPagFrm.Seite1.Caption = 'Seite 1'
In Methoden kann das Objekt selbst mit 'This' referenziert werden.
Mit 'With' kann die Schreibweise abgekürzt werden
Wizards & Builders GmbH
Arten von Klassen in VFPArten von Klassen in VFP
Arten von Klassen:– NichtContainer Klassen (normale Controls)– Container Klassen
Alle Klassen haben Events:– Init– Destroy– Error
Wizards & Builders GmbH
Container KlassenContainer Klassen
Enthalten andere Objekte (die wiederum andere Objekte enthalten können)
Die Eigenschaften der enthaltenen Objekte können zur der Laufzeit verändert werden
Objekte können zur Laufzeit hinzugefügt werden
Wizards & Builders GmbH
Container KlassenContainer Klassen
Es gibt:– Formset, Form– Grid– ListBox– Pageframe, Page– Toolbar– Container
Wizards & Builders GmbH
Control KlassenControl Klassen
Normale 'einfache' Controls: Labels, Boxen, Buttons ...
Es können keine weiteren Objekte hinzugefügt werden
Wizards & Builders GmbH
Control KlassenControl Klassen
Es gibt:– CheckBox– CommandButton– EditBox– Image– Label– Line– Spinner ...
Wizards & Builders GmbH
KlassenbibliothekenKlassenbibliotheken
Klassen können innerhalb von Dateien zusammengefaßt werden
Klassenbibliotheken entsprechen Funktionsbibliotheken
Kb können durch den Anwender angepaßt werden, ohne daß am Sourcecode geändert wird: Unterklassen bilden und Eigenschaften und Methoden verändern
Wizards & Builders GmbH
Weitere Begriffe 1Weitere Begriffe 1
Polymorphismus: Eine Methode gleichen Namens kann in unterschiedlichen Klassen definiert sein. Die Auswirkungen (der ausgeführte Code) sind aber unterschiedlich
Ereignisse (Events): passieren in der Umgebung von Objekten; Objekte reagieren durch Methoden
Wizards & Builders GmbH
PolymorphismusPolymorphismus
Schwieriges Wort für einfache Tatsache:
Eine Methode kann in unterschiedlichen Klassen verschieden implementiert sein.oStopuhr.Start && Zeit läuft losoListe.Start && erstes Element einer
Liste wird aktiviert
Wizards & Builders GmbH
Weitere Begriffe 2Weitere Begriffe 2
Nachrichten: werden an Objekte gesendet; Objekte reagieren durch Methoden
Kapselung: die Implementierung der Methoden bleibt in der Klasse verborgen
Wizards & Builders GmbH
NachrichtenNachrichten
Nachrichten werden an ein Objekt geschickt um dort bestimmte Methoden auszuführen:=oStopuhr.Start()
Nachrichten können Parameter weitergeben an Methoden (Prozeduren)
Nachrichten können auch innerhalb eines Objekts verwendet werden:This.Parent.UpdateDisplay
Wizards & Builders GmbH
KapselungKapselung Bedeutet dasselbe wie 'Information Hiding' in
der strukturierten Programmierung Alle Daten, die für das Ausführen einer
Methode sollten entweder Eigenschaften des Objekts sein, oder als Parameter übergeben werden
Eigenschaften und Methoden, die außerhalb des Objekts nicht benötigt werden, können innerhalb des Objekts 'versteckt' werden
Wizards & Builders GmbH
Beispiel StopwatchBeispiel Stopwatch
Beispiel aus den 'Control Samles' in VFP Erweiterung einer Klasse