17. Grundkonzepte OOP: Intuitive Einführung

Slides:



Advertisements
Ähnliche Präsentationen
Blue J.
Advertisements

der Universität Oldenburg
Objektorientierte Programmierung
Kritische Betrachtung
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Die Definitionsphase -Objektorientierte Analyse - Das statische Modell
Kapselung , toString , equals , Java API
Unter- und Oberklassen: Beispiel
Warum Objektorientierung?
der Universität Oldenburg
Assoziationen Verbindungen zwischen Objekten einer Klasse
Objektorientierter Entwurf
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Grundlagen der Objektorientierung
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Objektorientierte Konzepte und Notation in UML
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 4 Vererbung Sommersemester 2003 Lars Bernard.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Sebastian Grahn Sebastian Kühn
Programmieren mit JAVA
Programmieren mit JAVA
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
DVG Klassen und Objekte
Einführung in die Programmierung Klassendefinition und Objekte
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Programmierung im Netz und Internet: Einführung in die Programmiersprache Java Teil I 1 Klassen Objekte von.
RelationentheorieObjektorientierte Datenbanken AIFB SS Die Objekt-Definitionssprache ODL (1/24) Alle Elemente des Objektmodells können beschrieben.
Wizards & Builders GmbH Einführung in die objektorientierte Programmierung Norbert Abb.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Objektorientierte Modellierung
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
5. Vorlesung: Grundkonzepte Objekt-Orientierung
10. Vorlesung: Dynamische Konzepte
Einführung in die Programmierung
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Objektorientierte Konzepte/UML Geoinformation I Vorlesung 2 WS 2000/2001.
Copyright 2011 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2011/12 Kapitel 11, Folie 1 2 Dr. Christian Herzog Technische.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
1. Entwicklungsumgebung 2. Kontextmenü 3. Compile 4. Objekt 5. Attribut 6. Klasse 7. Deklaration 8. Intialisierung.
Objektorientierung.
Objektorientierte Modellierung mit UML
Klassen und Klassenstruktur
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
HG13_ Herzgen, Jung & Lorkowski1 Java Programmierung BlueJ Workshop.
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Einführung in die Programmierung mit Java
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 9. Vorlesung WS 2001/2002.
Sichtbarkeit einschränken
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Abstrakte Klassen und das Interface-Konzept
Tutorium Software-Engineering SS14 Florian Manghofer.
1 Grundsätze objektorientierter Programmierung. Dr. Wolfram Amme, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS Objektorientierte.
Implementieren von Klassen
 Präsentation transkript:

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)

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.

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

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

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 8973442 Franz Motz 23.1.75 2.3 4776124 Helga Klotz 25.7.77 14.2.94 1.7, 2.0, 1.3

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

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

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

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

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

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

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

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.

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.

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

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

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

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

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 ; }

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.

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

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.