Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

1 Eine Einführung in die objektorientierte Programmierung.

Ähnliche Präsentationen


Präsentation zum Thema: "1 Eine Einführung in die objektorientierte Programmierung."—  Präsentation transkript:

1 1 Eine Einführung in die objektorientierte Programmierung

2 07.11.2005 Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 2 Objektorientierte Programmierung Idee objektorientierter Sprachen stammt aus der Simulationstechnik –SIMULA (Anfang der sechziger Jahre) erste objektorientierte Programmiersprache im heutigen Sinn –Smalltalk (1980) Wesentliche Eigenschaften objektorientierter Programmierung –Datenkapselung –Vererbung –Polymorphie –Dynamisches Binden

3 07.11.2005 Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 3 Grundstruktur objektorientierter Systeme Objekte Nachrichten

4 07.11.2005 Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 4 Objekte Nachrichten von anderen Objekten Nachrichten an andere Objekte Objekt-Identität Daten: Methoden: Rectangle draw erase move left x 10 y 20 width 120 height 75

5 07.11.2005 Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 5 Nachrichten Prinzipieller Aufbau einer Nachricht Aufruf von Nachrichten in einem OO-Programm if obj.left < 20 then-- Abfragen des linken Rands obj.erase;-- Löschen an der alten Stelle obj.move(20,0);-- Bewegen um 20 Punkte nach rechts obj.draw;-- Zeichnen an der neuen Stelle end Empfänger Methodenname Argumente

6 07.11.2005 Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 6 Klassen klasse Rectangle interface public... protected... private... var x, y, width, height : Integer;Deklaration der Zustandsvariablen meth Rectangle.move(dx:Integer, dy:Integer) begin x := x + dx;Implementierung der Methodenköpfe y := y + dy; end Rectangle.move... Methodenköpfe

7 07.11.2005 Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 7 Vererbung von Klassen I In OO-Sprachen kann man von Basisklassen neue (abgeleitete) Klassen ableiten klasse ColoredRectangle extends Rectangle var ink : Color; meth fillInk():Color begin... end fill(newColor:Color) begin... end

8 07.11.2005 Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 8 Vererbung von Klassen II Objekt der Klasse ColoredRectangle Daten: Methoden: x 10 y 20 width 120 height 75 Ink blue draw erase move left fillink fill

9 07.11.2005 Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 9 Überschreiben von Methoden Neuimplementierung der Methode draw in ColoredRectangle Ein Methodenaufruf ColoredRectangle.draw führt die in ColoredRectangle implementierte Methode aus. ColoredRectangle.draw überschreibt die von Rectangle geerbte Methode draw ColoredRectangle.draw begin Zeichne den Rahmen des Rechtecks; Fülle das Rechteck mit der Farbe ink; end

10 07.11.2005 Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 10 Überladen von Methoden in OO-Sprachen können Methoden mit gleichem Namen, aber unterschiedlicher Signatur definiert werden die Auswahl der bei einem Methodenaufruf auszuführenden Methode ist durch den Typ der aktuellen Parameter festgelegt betrag(Zahl: double) begin if (zahl < 0) then Zahl := -Zahl; return a; end; betrag( Real:double, Imag: double) local sum; begin sum := Real * Real + Imag *Imag; return math.sqrt(sum); end; var x, r, i: double; betrag(x); betrag(r,i);

11 07.11.2005 Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 11 Ist-Beziehung Vererbung wird im allgemeinen eingesetzt um Spezialisierungen bestehender Klassen zu erzeugen zwischen Basisklasse und abgeleiteter Klasse kann eine asymmetrische Ist-Beziehung definiert werden die Basisklasse einer abgeleiteten Klasse wird auch als Ober- oder Superklasse bezeichnet die abgeleitete Klasse nennt man auch Unter- oder Subklasse

12 07.11.2005 Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 12 Polymorphie Polymorphie (Vielgestaltigkeit) ist die Eigenschaft einer Variablen, für Objekte verschiedener Klassen stehen zu können in typisierten Sprachen kann eine Variable einer Klasse K nur Objekte der Klasse K oder davon abgeleiteter Klassen bezeichnen Einschränkung der Sicht eines Objektes (Im Beispielprogramm: rect.fillink bzw. rect.fill nicht möglich) var rect:Rectangle; cRect: ColoredRectangle; begin rect := cRect; -- erlaubt cRect := rect;-- verboten

13 07.11.2005 Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 13 Referenzsemantik I eine Variable in OO-Sprachen enthält in den meisten kein Objekt, sondern nur einen Verweis auf ein Objekt Objekterzeugung durch den new-Operator Objekte einer Klasse nennen wir auch Exemplare oder Instanzen automatische Speicherfreigabe var rect: Rectangle; cRect: ColoredRectangle; begin rect := new Rectangle; cRect := new ColoredRectangle; rect := cRect;

14 07.11.2005 Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 14 Achtung !!! Programmierfehler durch Auftreten von Alias-Paaren Unterscheide !!! Objektidentität versus Objektgleichheit zuweisen versus kopieren Referenzsemantik II Rectangle rect := cRect ColoredRectangle Rectangle rect cRect

15 07.11.2005 Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 15 Dynamische Bindung I Bindung bedeutet einen Methodenaufruf mit dem aufzurufenden Code zu verbinden statische Bindung => Festlegung des Codes zur Übersetzungszeit dynamische Bindung => Aufsuchen des Codes zur Laufzeit var rects : array[1..max] of Rectangle; begin for i := 1 to max do rects[i].move(10,5); rects[i].draw; end;

16 07.11.2005 Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 16 Dynamische Bindung II dynamische Bindung durch Methodensuche dynamische Bindung mit Methodentabellen Methodentabelle Methoden-Code Methodentabelle für Rectangle für ColoredRectangle x 10 y 20 mTab Rectangle width 120 height 75 draw erase move left R.draw R.erase R.move R.left CR.draw CR.fillink CR.fill draw erase move left fillink fill ColoredRectangle mTab x 10 y 20 width 120 height 75 ink blue

17 07.11.2005 Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 17 Abstrakte Klassen eine Klasse mit definierten, aber noch nicht implementierten Methoden nennen wir eine abstrakte Klasse klasse Image var x, y, penSize: Integer; penInk: Color; meth x: Integer; y: Integer; move(x :Integer, y: Integer): Integer;... draw; erase;

18 07.11.2005 Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 18 Klassenhierarchien Abstrakte Klasse Konkrete Klasse Image Line Arrow Area Image3D Rectangle Circle Polygon Cube Sphere Cylinder

19 07.11.2005 Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 19 Mehrfachvererbung Image Line Arrow Area Image3D Rectangle Circle Polygon Cube Sphere Cylinder ShadedShadedLine ShadedRectangle

20 07.11.2005 Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 20 Generische Klassen Generische Klassen erlauben bei der Klassendefinition formale Parameter durch die Deklaration var picture : List(Image) wird aus einer Klassenschablone eine Klasse erzeugt (“generiert”) klasse List (Element) meth add(item: Element); first: Element;...

21 07.11.2005 Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 21 Vorteile objektorientierter Programmierung Vererbung, Klassenbibliotheken erlauben Wiederverwendbarkeit von Programmen Wartung von OO-Programmen wird einfacher Polymorphie und dynamische Bindung führen zu einer sauberen erweiterbaren Programmstruktur Abstrakte Klassen fördern die Schaffung von einheitlichen Schnittstellen Objektorientierter Entwurf findet auf einer hohen problem- orientierten Abstraktionsebenen statt OO-Programmierung ein geeignetes Mittel, umfangreiche, flexible Programme mit vergleichsweise geringem Aufwand zu entwickeln

22 07.11.2005 Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 22 Nachteile objektorientierter Programmierung OO-Programmierung erfordert sehr viel Einarbeitungszeit OO-Denken muß gelernt werden Beherrschung der eigentlichen Programmiersprache reicht oft nicht aus Programme haben wegen dynamischer Speicherverwaltung oft höheren Speicherbedarf bzw. eine längere Laufzeit

23 07.11.2005 Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 23 Objektorientierte Programmiersprachen


Herunterladen ppt "1 Eine Einführung in die objektorientierte Programmierung."

Ähnliche Präsentationen


Google-Anzeigen