1 / 22

17. Grundkonzepte OOP: Intuitive Einführung

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

ozzie
Download Presentation

17. Grundkonzepte OOP: Intuitive Einführung

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. 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 Klassen • 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 (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 Attribute Student (Student) (Student) Matrikel-Nr Name Geburtsdatum Datum Vordip Noten 8973442 Franz Motz 23.1.75 2.3 4776124 Helga Klotz 25.7.77 14.2.94 1.7, 2.0, 1.3

  6. 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: Operationen Typ I: Objektoperationen (oder einfach Operationen) 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. 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 II: Klassenoperationen Typ III: Erzeugungsoperationen

  8. 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() Spezifikation von Operationen: Standardbefehle

  9. 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: Vererbung - entspricht der Weise, wie wir begrifflich die Welt strukturieren - Redundanz wird vermieden, Änderbarkeit unterstützt

  10. Oberklasse Attribute Klassenattribute Operationen Klassenhierarchie Typen Typen + Werte Spezifikationen 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  Dozent Kunde Oberklasse Biographie Tageshonorar Honorar ermitteln Funktion Umsatz Umsatz 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. 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 Polymorphismus 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 entsprechendeMethode ist für diese Objekte zu definieren.

  14. 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. Zusammenfassung Objekt-Orientierung

  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: • 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. 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 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. 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.

More Related