340 likes | 533 Views
Einführung in die objektorientierte Programmierung. Norbert Abb. Seit wann gibt es Objekt-orientierte Programmierung?. Entwicklung von OO Sprachen Simula 67 Anfang der 70er: Smalltalk viele nicht bekannte Sprachen Eiffel, Ada, C++ ... Visual FoxPro!!!.
E N D
Einführung in die objektorientierte Programmierung Norbert Abb
Seit wann gibt es Objekt-orientierte Programmierung? • Entwicklung von OO Sprachen • Simula 67 • Anfang der 70er: Smalltalk • viele nicht bekannte Sprachen • Eiffel, Ada, C++ • ... Visual FoxPro!!!
Was zeichnet objektorientierte Programmierung aus? • Objekte • Eigenschaften/Properties • Methoden • Klassen • Vererbung
Objekte • Modelle der Wirklichkeit • Substantive • Objekte haben eine 'Identität' • Abgrenzung • 'Verhalten'
Eigenschaften • 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
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
Methoden • Gebunden an ein Objekt • Aktionen, mit denen ein Objekt sich selbst verändert oder Nachrichten an andere Objekte schickt • Definieren das Verhalten eines Objektes
Methoden • 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
Klassen • 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
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
Instanziierung 1 • Objekte werden als 'Instanzen' von Klassen erzeugt: • Visual FoxPro:oMeinObj = CreateObject('CommandButton') • andere OO Sprachen:oMeinObj := CommandButton.New ()
Instanziierung 2 • Eigenschaften der Instanzen werden besetzt: • oMeinObj.FontName = 'Arial' • oMeinObj.Caption = 'OK' • oMeinObj.Default = .T.
Vererbung • Aufbau aller Klassen auf Basisklassen • Klassen können aufeinander Aufbauen (Klassenhierarchien) • Unterklassen erben Methoden und Eigenschaften von 'Eltern'
Vererbung • 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
Klassenhierarchie • 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
This • 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'
Objekthierarchie • 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
Arten von Klassen in VFP • Arten von Klassen: • NichtContainer Klassen (normale Controls) • Container Klassen • Alle Klassen haben Events: • Init • Destroy • Error
Container 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
Container Klassen • Es gibt: • Formset, Form • Grid • ListBox • Pageframe, Page • Toolbar • Container
Control Klassen • Normale 'einfache' Controls: Labels, Boxen, Buttons ... • Es können keine weiteren Objekte hinzugefügt werden
Control Klassen • Es gibt: • CheckBox • CommandButton • EditBox • Image • Label • Line • Spinner ...
Klassenbibliotheken • 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
Weitere 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
Polymorphismus • 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
Weitere Begriffe 2 • Nachrichten: werden an Objekte gesendet; Objekte reagieren durch Methoden • Kapselung: die Implementierung der Methoden bleibt in der Klasse verborgen
Nachrichten • 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
Kapselung • 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
Beispiel Stopwatch • Beispiel aus den 'Control Samles' in VFP • Erweiterung einer Klasse