Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

17. Grundkonzepte OOP: Intuitive Einführung

Ähnliche Präsentationen


Präsentation zum Thema: "17. Grundkonzepte OOP: Intuitive Einführung"—  Präsentation transkript:

1 17. Grundkonzepte OOP: Intuitive Einführung
Maklerfirma Grundwert & Co verwaltet zu verkaufende Häuser. Jedes Haus ist ein Objekt. Jedes Objekt ist durch Attribute und ihre Werte beschrieben und kann bestimmte Operationen (Methoden) ausführen. (Einfamilienhaus) (Einfamilienhaus) Haustyp: Stadthaus Besitzer: Dr. Müller Adresse: Lindenau Fläche: 180 Grundstück: 450 Baujahr: 1955 Preis: 490 TDM Preis angeben Haustyp: Landhaus Besitzer: Dr. Meier Adresse: Naumburg Fläche: 240 Grundstück: 950 Baujahr: 1968 Preis: 680 TDM Preis angeben Attributwerte von außen nur über Operationen zugreifbar (Kapselung)

2 Objektklassen Alle bisher betrachteten Objekte gehören zur
selben Klasse Einfamilienhaus Jede Instanz der Klasse besitzt dieselben Attribute und Methoden Die Ausführung von Methoden werden durch Senden einer Nachricht an ein Objekt aktiviert Die ermittelten Ausgabedaten werden an den Sender der Nachricht zurückgegeben Einfamilienhaus Haustyp: Besitzer: Adresse: Fläche: Grundstück: Baujahr: Preis: Preis angeben Firma Grundwert & Co verwaltet auch Geschäftshäuser mit den Attributen Besitzer, Adresse, Anzahl Büros, Aufzug, Tiefgarage, Baujahr, Preis und den Operationen Preis angeben und Anzahl Büros ermitteln.

3 Klassenhierarchien Immobilie Besitzer: Adresse: Baujahr: Preis:
Preis angeben Einfamilienhaus Geschäftshaus Haustyp: Fläche: Grundstück: Anzahl Büros: Aufzug: Tiefgarage: Anz. Büros angeben Klasse Immobilie vererbt Attribute und Operationen an Unterklassen

4 Klassen Objekte sind Entitäten mit festgelegten Eigenschaften und Verhaltensweisen Auf sie kann nur über Operationen zugegriffen werden (Kapselung) Eine Klasse spezifiziert die Gemeinsamkeiten einer Menge von Objekten. Sie besitzt einen Mechanismus, um Objekte zu erzeugen (Neu, new, create ...) Zur Beschreibung einer Klasse gehören üblicherweise: Objekte "wissen", zu welcher Klasse sie gehören. Oft wird in Klassen auch gespeichert, welche Instanzen sie besitzen • Name der Klasse • Namen und Typen der Attribute • Namen und Schnittstelle der Operationen • Angabe der an die Klasse vererbenden Ober-Klassen Klasse Attribute Operationen Objektliste Typen Spezifikationen Objekt1 Objekt2 Objekt der Klasse Objekt der Klasse Attribute Werte Attribute Werte

5 Attribute Attribute (Smalltalk: instance variable) beschreiben Eigenschaften eines Objekts. Alle Objekte einer Klasse besitzen dieselben Attribute, aber möglicherweise unterschiedliche Attributwerte Attributwerte können nur durch Operationen der Klasse geändert und gelesen werden Muß-Attribute müssen stets einen Wert besitzen, Kann-Attribute nicht Attribute, die eindeutiges Identifizieren eines Objekts ermöglichen, heißen Schlüsselattribute Student (Student) (Student) Matrikel-Nr Name Geburtsdatum Datum Vordip Noten Franz Motz 2.3 Helga Klotz 1.7, 2.0, 1.3

6 Operationen Typ I: Objektoperationen (oder einfach Operationen)
beschreiben Dienstleistungen, die Objekt zur Verfügung stellt Operation ist ausführbare Tätigkeit im Sinne eines Algorithmus Alle Objekte einer Klasse verwenden dieselben Operationen • man unterscheidet: 1. Operationen mit lesendem Zugriff (accessor operation) Studienbescheinigung erstellen, lesender Zugriff auf Attribute von Student 2. Operationen mit schreibendem Zugriff (update operation) Note eintragen, schreibender Zugriff auf Attribut Noten von Student 3. Berechnungsoperationen Durchschnittsnote ermitteln Operationen werden durch Namen, Ein-/Ausgabeschnittstelle und Spezifikation beschrieben Schnittstelle enthält alle Parameter, über die mit aufrufendem Objekt kommuniziert wird

7 Typ II: Klassenoperationen
Operationen, die der jeweiligen Klasse zugeordnet sind und nicht auf ein einzelnes Objekt der Klasse angewendet werden können wirken auf mehrere oder alle Objekte derselben Klasse oder manipulieren Klassenattribute Liste aller Studenten erstellen; Liste der Studenten, die 1999 Vordiplom erworben haben, erstellen dienen dazu, ein neues Objekt der Klasse zu erzeugen und ihre Muß-Attribute zu initialisieren neuer Student soll immatrikuliert werden. Durch Botschaft "Neu" an Klasse Student wird neues, leeres Objekt erzeugt, das dann initialisiert wird. Typ III: Erzeugungsoperationen

8 Spezifikation von Operationen: Standardbefehle
1. Erzeugen eines Objektes: Klasse.Create(Attribut1, Attribut2, ...) Mitarbeiter.Create(Name=Hansen, Geburtsdatum=5/10/65, Gehalt=3000) 2. Löschen eines Objekts Klasse.Delete() Seminar.Delete() 3. Botschaft an Objekt Klasse.Operation (in Param1, out Param2, ...) Sparkonto.Buchen(3000) 4. Schreiben eines Attributwertes Klasse.SetAttribute() Student.SetDatumVordiplom(2/4/97) 5. Lesen eines Attributwertes Klasse.GetAttribute() Roboterarm.GetAktuellePosition()

9 Vererbung Klassen bilden eine Klassenhierarchie (Vererbungsstruktur).
Für jede Klasse werden ihre direkten Oberklassen spezifiziert. Die Oberklassenrelation ist die transitive Hülle der direkten Oberklassenrelation. Wenn Klasse K1 an Klasse K2 vererbt (K1 ist Oberklasse von K2), dann verfügt K2 auch über Eigenschaften und Operationen von K1. K2 kann das von K1 geerbte Verhalten modifizieren. Man spricht von Redefinition oder Überschreiben einer Operation Falls jede Klasse höchstens eine direkte Oberklasse besitzt, spricht man von Einfachvererbung. Bei Mehrfachvererbung kann jede Klasse mehrere direkte Oberklassen besitzen. Namenskonflikte müssen durch geeignete Konventionen gelöst werden. Vorteile des Vererbungskonzeptes: - entspricht der Weise, wie wir begrifflich die Welt strukturieren - Redundanz wird vermieden, Änderbarkeit unterstützt

10 Klassenhierarchie Oberklasse Attribute Klassenattribute Operationen
Typen Typen + Werte Spezifikationen Oberklasse Attribute Klassenattribute Operationen Objekt i Objekt der Klasse1 Attribute Werte Klasse1 Oberklasse Attribute Klassenattribute Operationen Typen Typen + Werte Spezifikationen Objekt j Objekt der Klasse2 Attribute Werte Klasse2 Oberklasse Attribute Klassenattribute Operationen Typen Typen + Werte Spezifikationen Objekt k Objekt der Klasse3 Attribute Werte Klasse3

11 Personenbeispiel Person Name Adresse Adresse drucken  Kunde Dozent
Oberklasse Funktion Umsatz Umsatz ermitteln  Biographie Tageshonorar Honorar ermitteln Instanz Instanz Kunde1 Dozent1 Name: Hans Dampf Adresse: Kleinheim Funktion: Entwickler Umsatz: 5 Mio Adresse drucken  Umsatz ermitteln Name: Petra Schlau Adresse: Winzdorf Biographie: ... Tageshonorar: 2000 Adresse drucken Honorar ermitteln

12 Polymorphismus deutsch etwa: Vielgestaltigkeit
Bedeutung in OO-Kontext: dieselbe Botschaft kann an Objekte verschiedener Klassen geschickt werden, die darauf auf eigene Weise reagieren können. Sender muß also nicht Klasse des Empfängers kennen Botschaft Buchen gesendet an Konto- oder Sparkontoobjekt Konto KontoNr Kontostand Buchen (Betrag: Geld)  Operation Buchen (Betrag:Geld) Kontostand := Kontostand + Betrag Oberklasse Sparkonto Operation Buchen (Betrag:Geld) GetKontostand; if Kontostand+Betrag >= 0 then Konto.Buchen(Betrag) Buchen (Betrag: Geld)  Botschaft Buchen gesendet an ein Sparkonto => redefinierte Operation

13 Noch ein Beispiel Prozedur P soll Information über alle Personen in einer Liste drucken. Für Studenten soll auch die Matrikelnummer gedruckt werden, für Angestellte die Personalnummer, für Wissenschaftler das Institut. In Pascal müßte bei der Abarbeitung der Liste jeweils getestet werden, welche Druckprozedur aufzurufen ist. P müßte die Namen all dieser verschiedenen Prozeduren kennen. OOP: Jedes Objekt versteht die Nachricht drucken und führt die adäquate Methode aus. Erweiterung um neue Typen von Personen führt nicht zur Änderung von P, nur die entsprechende Methode ist für diese Objekte zu definieren.

14 Zusammenfassung Objekt-Orientierung
Ein Objekt ist ein individuelles Exemplar einer Klasse. Operationen (Methoden) beschreiben das Verhalten eines Objekts. Attribute beschreiben die Eigenschaften des Objekts. Attributwerte sind die aktuellen Werte der Attribute. Auf sie kann nur über Operationen zugegriffen werden (Kapselung). Klassen fassen Objekte mit gleichen Attributen und Operationen zusammen. Durch Vererbung werden Attribute und Operationen von Oberklassen an ihre Unterklassen weitergegeben. Es entsteht eine Klassenhierarchie. Geerbte Operationen können in Unterklassen redefiniert werden. Bei Einfachvererbung besitzt jede Unterklasse nur eine direkte Oberklasse, ansonsten spricht man von Mehrfachvererbung. Objekte und Klassen kommunizieren durch Botschaften. Polymorphismus erlaubt es, gleiche Botschaften an Objekte verschiedener Klassen zu senden.

15 Objektorientiertes Programmieren
Was ist objektorientiertes Programmieren? a) engerer Sinn: Programm in bestimmter objektorientierter PS schreiben b) weiterer Sinn: Software-Entwurfsmethodik OOP älter als 30 Jahre (Simula 67) Siegeszug beginnt in 80er Jahren (Smalltalk) heute äußerst populär, auch in kommerzieller SW-Entwicklung

16 Gründe für den Erfolg: 1) Simulation 2) Graphische Benutzeroberflächen
OOP bietet Antwort auf (mindestens) 4 softwaretechnische Probleme: 1) Simulation Modellierung der Komponenten eines Systems Beschreibung der möglichen Dynamik eines Systems Test und Analyse von Abläufen eines Systems (Beispiel: Kreuzung simulieren unter Berücksichtigung örtlicher Gegebenheiten, Ampeln, Fahrzeuge, Ausmaße,...) 2) Graphische Benutzeroberflächen nicht-sequentielle, interaktive Steuerung von Anwendungsprogrammen über direkt manipulierbare graphische Bedienelemente (Eingabefenster, Auswahlmenüs, ... ) Oberflächengestaltung, die der Modellvorstellung des Benutzers entgegenkommt und leichte Bedienbarkeit garantiert quasi-paralleles Arbeiten Verfügbarkeit von Standardfunktionalität (Maushandling,...)

17 Anforderungen, die sich aus 1-4 ergeben
3) Wiederverwendung von Programmen Auffinden von geeigneten Programmbausteinen Modifizierbarkeit: Strukturierung und Parametrisierung wiederverwendbarer Bausteine 4) Verteilte Programmierung Programme, die auf unterschiedlichen Rechnern laufen, sollen kommunizieren und Daten austauschen können. Räumliche Verteilung von Daten, Parallelität und Kommunikation müssen darstellbar sein. Anforderungen, die sich aus 1-4 ergeben Paralleles Ausführungsmodell, reale Welt muß modellierbar sein Strukturierung der Programme in kooperierende Programmteile mit definierten Schnittstellen Anpaßbarkeit und Spezialisierung von Programmteilen

18 Grundidee des OOP Programm entspricht einem System kommunizierender Objekte Objekte sind selbständige Ausführungseinheiten haben lokalen Zustand, gespeichert in Attributwerten haben Identität und Lebensdauer (können erzeugt und zerstört werden) empfangen und bearbeiten Nachrichten (einzige Möglichkeit auf sie zuzugreifen, Kapselung) gehören zu einer Klasse, diese legt Attribute und Nachrichten (Methoden) des Objekts fest Klassen sind hierarchisch geordnet und vererben Eigenschaften an Unterklassen Alle Operationen gehören zu einem Objekt, lassen sich nur durch Nachricht veranlassen

19 Methodendeklarationen
Aufruf durch Voranstellen des Objekts, das Methode ausführen soll: lampe.brennt() brennt: soll true liefern, falls Lampe an Selektor lampenort: soll Raum liefern, in dem sich die Lampe befindet Selektor umschalten: soll Lampe an- bzw. ausschalten, kein Wert Modifikator Lampe: dient der Erzeugung von Objekten des Typs Lampe Konstruktor new Lampe(bad) liefert neue Lampe im Bad Zustandsinformationen in Attributen gespeichert: hier an und ort class Lampe { public boolean brennt() { return an; } public Raum lampenort() { return ort; } public void umschalten() { an = !an } public Lampe (Raum r) {an = false; ort = r } private boolean an ; private Raum ort ; }

20 Kapselung Vorteile: Beispiel zu 2.
Die Methoden und Attribute einer Klasse, die von anderen Objekten aus zugänglich sein sollen, werden public deklariert. private bedeutet: nur das Objekt selbst kann Methode oder Attribut verwenden Vorteile: 1. Implementierung einer Klasse K kann geändert werden, ohne daß Programme, die K benutzen, zu ändern sind. 2. Konsistenz zwischen Objekten kann gewährleistet werden. Beispiel zu 2. Jeder Raum soll eine Liste der in ihm aufgestellten Lampen verwalten. Aufnahme von r.aufstellen(this) in Rumpf von Konstruktor Lampe soll bewirken, daß in Lampenliste von r die neue Lampe (this) eingetragen wird. Es gilt also: Raum R ist ort einer Lampe L gdw L Element der Lampenliste von R ist. Da von außen nicht auf ort und die Lampenliste zugegriffen werden kann, kann diese Beziehung von außen nicht verletzt werden. Auch Klassen können innerhalb von Paketen (packages) gekapselt sein.

21 Klassifikation Klassen werden in Hierarchien gegliedert
(übliches Vorgehen, etwa Tierarten, Sportarten, Typen von Personen, Musikstile, Fahrzeuge,...) Jede Instanz einer speziellen Klasse ist auch ein Element der jeweils abstrakteren Klassen (is-a Beziehung) Beim OOP werden Objektklassen häufig bzgl. ihrer Schnittstellen klassifiziert: K1 spezieller als K2, wenn K1 mindestens die öffentlichen Methoden und Attribute von K2 besitzt. Allgemeinste Klasse: object

22 Beispiel: Zentraler Aspekt der OO Programmentwicklung:
Entwurf geeigneter Klassenhierarchie. In der Praxis oft: Erweiterung existierender Hierarchien durch Abstraktion bzw. Spezialisierung Beispiel: tool kits, etwa für Benutzeroberflächen, stellen Klassen zur Verfügung, die für Bedürfnisse der konkreten Anwendung weiter zu verfeinern sind. Implementierung für Standardmethoden wird geerbt, nur neue, spezielle Eigenschaften müssen programmiert werden.


Herunterladen ppt "17. Grundkonzepte OOP: Intuitive Einführung"

Ähnliche Präsentationen


Google-Anzeigen