17. Grundkonzepte OOP: Intuitive Einführung

22
G.Heyer Digitale Informationsverarbeitung 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) Haustyp: Stadthaus Besitzer: Dr. Müller Adresse: Lindenau Fläche: 180 Grundstück: 450 Baujahr: 1955 Preis: 490 TDM Preis angeben (Einfamilienhaus) 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)

description

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

Transcript of 17. Grundkonzepte OOP: Intuitive Einführung

Page 1: 17. Grundkonzepte OOP: Intuitive Einführung

G.Heyer Digitale Informationsverarbeitung1

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)

Haustyp: StadthausBesitzer: Dr. MüllerAdresse: LindenauFläche: 180Grundstück: 450Baujahr: 1955Preis: 490 TDM

Preis angeben

(Einfamilienhaus)

Haustyp: LandhausBesitzer: Dr. MeierAdresse: NaumburgFläche: 240Grundstück: 950Baujahr: 1968Preis: 680 TDM

Preis angeben

Attributwerte von außen nur über Operationen zugreifbar (Kapselung)

Page 2: 17. Grundkonzepte OOP: Intuitive Einführung

G.Heyer Digitale Informationsverarbeitung2

Objektklassen

Einfamilienhaus

Haustyp:Besitzer: Adresse: Fläche:Grundstück: Baujahr: Preis:

Preis angeben

Alle bisher betrachteten Objekte gehören zurselben Klasse Einfamilienhaus

Jede Instanz der Klasse besitzt dieselbenAttribute und Methoden

Die Ausführung von Methoden werden durch Senden einer Nachricht an ein Objekt aktiviert

Die ermittelten Ausgabedaten werden an denSender der Nachricht zurückgegeben

Firma Grundwert & Co verwaltet auch Geschäftshäuser mit den AttributenBesitzer, Adresse, Anzahl Büros, Aufzug, Tiefgarage, Baujahr, Preis und den Operationen Preis angeben und Anzahl Büros ermitteln.

Page 3: 17. Grundkonzepte OOP: Intuitive Einführung

G.Heyer Digitale Informationsverarbeitung3

Klassenhierarchien

Einfamilienhaus

Haustyp:Fläche:Grundstück:

Immobilie

Besitzer: Adresse: Baujahr: Preis:

Geschäftshaus

Anzahl Büros:Aufzug:Tiefgarage:

Anz. Büros angeben

Preis angeben

Klasse Immobilie vererbt Attribute und Operationen an Unterklassen

Page 4: 17. Grundkonzepte OOP: Intuitive Einführung

G.Heyer Digitale Informationsverarbeitung4

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

Objekt1

AttributeOperationen

Objektliste

TypenSpezifikationen

Objekt der Klasse

Attribute Werte

Objekt2Objekt der Klasse

Attribute Werte

Page 5: 17. Grundkonzepte OOP: Intuitive Einführung

G.Heyer Digitale Informationsverarbeitung5

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-NrNameGeburtsdatumDatum VordipNoten

8973442Franz Motz23.1.75

2.3

4776124Helga Klotz25.7.7714.2.941.7, 2.0, 1.3

Page 6: 17. Grundkonzepte OOP: Intuitive Einführung

G.Heyer Digitale Informationsverarbeitung6

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

Typ I: Objektoperationen (oder einfach Operationen)

• Operationen werden durch Namen, Ein-/Ausgabeschnittstelle und Spezifikation beschrieben• Schnittstelle enthält alle Parameter, über die mit aufrufendem Objekt kommuniziert wird

Page 7: 17. Grundkonzepte OOP: Intuitive Einführung

G.Heyer Digitale Informationsverarbeitung7

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 KlassenattributeListe 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 initialisierenneuer Student soll immatrikuliert werden. Durch Botschaft "Neu" an Klasse Student wird neues, leeres Objekt erzeugt, das dann initialisiert wird.

Typ III: Erzeugungsoperationen

Page 8: 17. Grundkonzepte OOP: Intuitive Einführung

G.Heyer Digitale Informationsverarbeitung8

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 ObjektsKlasse.Delete() Seminar.Delete()

3.Botschaft an ObjektKlasse.Operation (in Param1, out Param2, ...) Sparkonto.Buchen(3000)

4.Schreiben eines AttributwertesKlasse.SetAttribute()

Student.SetDatumVordiplom(2/4/97)

5.Lesen eines AttributwertesKlasse.GetAttribute() Roboterarm.GetAktuellePosition()

Page 9: 17. Grundkonzepte OOP: Intuitive Einführung

G.Heyer Digitale Informationsverarbeitung9

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

Page 10: 17. Grundkonzepte OOP: Intuitive Einführung

G.Heyer Digitale Informationsverarbeitung10

Klassenhierarchie

Oberklasse

AttributeKlassenattributeOperationen

Typen

Typen + Werte

SpezifikationenKlasse1

Klasse2

Klasse3

Objekt der Klasse1Attribute Werte

Objekt i

Objekt k

Objekt j

Objekt der Klasse2Attribute Werte

Objekt der Klasse3Attribute Werte

Oberklasse

AttributeKlassenattributeOperationen

Oberklasse

AttributeKlassenattributeOperationen

Typen

Typen + Werte

Spezifikationen

Typen

Typen + Werte

Spezifikationen

Page 11: 17. Grundkonzepte OOP: Intuitive Einführung

G.Heyer Digitale Informationsverarbeitung11

Personenbeispiel

Person

NameAdresseAdresse drucken

KundeFunktionUmsatzUmsatz ermitteln

Dozent

BiographieTageshonorarHonorar ermitteln

Kunde1

Name: Hans DampfAdresse: KleinheimFunktion: EntwicklerUmsatz: 5 Mio

Adresse drucken Umsatz ermitteln

Dozent1

Name: Petra SchlauAdresse: WinzdorfBiographie: ...Tageshonorar: 2000

Adresse druckenHonorar ermitteln

Oberklasse

Instanz Instanz

Page 12: 17. Grundkonzepte OOP: Intuitive Einführung

G.Heyer Digitale Informationsverarbeitung12

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 kennenBotschaft Buchen gesendet an Konto- oder Sparkontoobjekt

Konto

KontoNrKontostand

Buchen (Betrag: Geld)

Sparkonto

Buchen (Betrag: Geld)

Oberklasse

Operation Buchen (Betrag:Geld)Kontostand := Kontostand + Betrag

Operation Buchen (Betrag:Geld)GetKontostand;if Kontostand+Betrag >= 0 then Konto.Buchen(Betrag)

Botschaft Buchen gesendet an ein Sparkonto => redefinierte Operation

Page 13: 17. Grundkonzepte OOP: Intuitive Einführung

G.Heyer Digitale Informationsverarbeitung13

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.

Noch ein Beispiel

Page 14: 17. Grundkonzepte OOP: Intuitive Einführung

G.Heyer Digitale Informationsverarbeitung14

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.

Page 15: 17. Grundkonzepte OOP: Intuitive Einführung

G.Heyer Digitale Informationsverarbeitung15

Objektorientiertes Programmieren

Was ist objektorientiertes Programmieren?a) engerer Sinn: Programm in bestimmter objektorientierter PS schreibenb) 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

Page 16: 17. Grundkonzepte OOP: Intuitive Einführung

G.Heyer Digitale Informationsverarbeitung16

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

Page 17: 17. Grundkonzepte OOP: Intuitive Einführung

G.Heyer Digitale Informationsverarbeitung17

Anforderungen, die sich aus 1-4 ergeben

3) Wiederverwendung von ProgrammenAuffinden von geeigneten ProgrammbausteinenModifizierbarkeit: 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.

• Paralleles Ausführungsmodell, reale Welt muß modellierbar sein• Strukturierung der Programme in kooperierende Programmteile mit definierten Schnittstellen• Anpaßbarkeit und Spezialisierung von Programmteilen

Page 18: 17. Grundkonzepte OOP: Intuitive Einführung

G.Heyer Digitale Informationsverarbeitung18

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

Page 19: 17. Grundkonzepte OOP: Intuitive Einführung

G.Heyer Digitale Informationsverarbeitung19

Methodendeklarationen

Aufruf durch Voranstellen des Objekts, das Methode ausführen soll: lampe.brennt()

brennt: soll true liefern, falls Lampe an Selektorlampenort: soll Raum liefern, in dem sich die Lampe befindet Selektorumschalten: soll Lampe an- bzw. ausschalten, kein Wert ModifikatorLampe: dient der Erzeugung von Objekten des Typs Lampe Konstruktor

new Lampe(bad) liefert neue Lampe im Bad

Zustandsinformationen in Attributen gespeichert: hier an und ortclass 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 ;

}

Page 20: 17. Grundkonzepte OOP: Intuitive Einführung

G.Heyer Digitale Informationsverarbeitung20

KapselungDie 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 verwendenVorteile: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.

Page 21: 17. Grundkonzepte OOP: Intuitive Einführung

G.Heyer Digitale Informationsverarbeitung21

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

Page 22: 17. Grundkonzepte OOP: Intuitive Einführung

G.Heyer Digitale Informationsverarbeitung22

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.