Einführung in die objektorientierte Programmierung

30
Wizards & Builders GmbH Einführung in die Einführung in die objektorientierte objektorientierte Programmierung Programmierung Norbert Abb

description

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!!!. - PowerPoint PPT Presentation

Transcript of Einführung in die objektorientierte Programmierung

Page 1: Einführung in die objektorientierte Programmierung

Wizards & Builders GmbH

Einführung in die Einführung in die objektorientierte objektorientierte

Programmierung Programmierung

Norbert Abb

Page 2: Einführung in die objektorientierte Programmierung

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!!!

Page 3: Einführung in die objektorientierte Programmierung

Wizards & Builders GmbH

Was zeichnet objektorientierte Was zeichnet objektorientierte Programmierung aus?Programmierung aus?

Objekte Eigenschaften/Properties Methoden Klassen Vererbung

Page 4: Einführung in die objektorientierte Programmierung

Wizards & Builders GmbH

ObjekteObjekte

Modelle der Wirklichkeit Substantive Objekte haben eine 'Identität' Abgrenzung 'Verhalten'

Page 5: Einführung in die objektorientierte Programmierung

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

Page 6: Einführung in die objektorientierte Programmierung

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

Page 7: Einführung in die objektorientierte Programmierung

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

Page 8: Einführung in die objektorientierte Programmierung

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

Page 9: Einführung in die objektorientierte Programmierung

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

Page 10: Einführung in die objektorientierte Programmierung

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

Page 11: Einführung in die objektorientierte Programmierung

Wizards & Builders GmbH

Instanziierung 1Instanziierung 1

Objekte werden als 'Instanzen' von Klassen erzeugt:– Visual FoxPro:

oMeinObj = CreateObject('CommandButton')– andere OO Sprachen:

oMeinObj := CommandButton.New ()

Page 12: Einführung in die objektorientierte Programmierung

Wizards & Builders GmbH

Instanziierung 2Instanziierung 2

Eigenschaften der Instanzen werden besetzt:– oMeinObj.FontName = 'Arial'– oMeinObj.Caption = 'OK'– oMeinObj.Default = .T.

Page 13: Einführung in die objektorientierte Programmierung

Wizards & Builders GmbH

VererbungVererbung

Aufbau aller Klassen auf Basisklassen Klassen können aufeinander Aufbauen

(Klassenhierarchien) Unterklassen erben Methoden und

Eigenschaften von 'Eltern'

Page 14: Einführung in die objektorientierte Programmierung

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

Page 15: Einführung in die objektorientierte Programmierung

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

Page 16: Einführung in die objektorientierte Programmierung

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,...)

Page 17: Einführung in die objektorientierte Programmierung

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'

Page 18: Einführung in die objektorientierte Programmierung

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

Page 19: Einführung in die objektorientierte Programmierung

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

Page 20: Einführung in die objektorientierte Programmierung

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

Page 21: Einführung in die objektorientierte Programmierung

Wizards & Builders GmbH

Container KlassenContainer Klassen

Es gibt:– Formset, Form– Grid– ListBox– Pageframe, Page– Toolbar– Container

Page 22: Einführung in die objektorientierte Programmierung

Wizards & Builders GmbH

Control KlassenControl Klassen

Normale 'einfache' Controls: Labels, Boxen, Buttons ...

Es können keine weiteren Objekte hinzugefügt werden

Page 23: Einführung in die objektorientierte Programmierung

Wizards & Builders GmbH

Control KlassenControl Klassen

Es gibt:– CheckBox– CommandButton– EditBox– Image– Label– Line– Spinner ...

Page 24: Einführung in die objektorientierte Programmierung

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

Page 25: Einführung in die objektorientierte Programmierung

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

Page 26: Einführung in die objektorientierte Programmierung

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

Page 27: Einführung in die objektorientierte Programmierung

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

Page 28: Einführung in die objektorientierte Programmierung

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

Page 29: Einführung in die objektorientierte Programmierung

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

Page 30: Einführung in die objektorientierte Programmierung

Wizards & Builders GmbH

Beispiel StopwatchBeispiel Stopwatch

Beispiel aus den 'Control Samles' in VFP Erweiterung einer Klasse