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 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 Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 3 Grundstruktur objektorientierter Systeme Objekte Nachrichten

4 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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