Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

1 Grundsätze objektorientierter Programmierung. Dr. Wolfram Amme, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS 2002 2 Objektorientierte.

Ähnliche Präsentationen


Präsentation zum Thema: "1 Grundsätze objektorientierter Programmierung. Dr. Wolfram Amme, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS 2002 2 Objektorientierte."—  Präsentation transkript:

1 1 Grundsätze objektorientierter Programmierung

2 Dr. Wolfram Amme, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS Objektorientierte Programmierung Idee objektorientierter Sprachen stammt aus der Simulationstechnik –SIMULA (60er Jahre) erste objektorientierte Programmiersprache im heutigen Sinn –Smalltalk (1980) Wesentliche Eigenschaften objektorientierter Programmierung –Datenkapselung –Vererbung –Polymorphie –Dynamisches Binden

3 Dr. Wolfram Amme, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS Grundstruktur objektorientierter Systeme Objekte Nachrichten

4 Dr. Wolfram Amme, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS 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, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS 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, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS Klassen 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 klasseRectangle interface public... protected... private... Name

7 Dr. Wolfram Amme, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS Vererbung von Klassen In OO-Sprachen kann man von Basisklassen neue (abgeleitete) Klassen bilden klasse ColoredRectangle extends Rectangle var ink : Color; meth fillInk():Color begin... end fill(newColor:Color) begin... end

8 Dr. Wolfram Amme, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS Beispiel: Vererbung von Klassen 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, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS Überschreiben von Methoden Reimplementierung 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, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS Überladen von Methoden in OO-Sprachen können Methoden mit gleichem Namen, aber unterschiedlicher Signatur definiert werden Auswahl der bei einem Methodenaufruf auszuführenden Methode ist durch den aktuellen Parametertyp festgelegt betrag(Zahl: double) begin if (Zahl < 0) then Zahl := -Zahl; return a; end; betrag( Real: double, Imag: double) local double 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, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS 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, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS Polymorphie (Vielgestaltigkeit) Polymorphie 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 var rect:Rectangle; cRect: ColoredRectangle; begin rect := cRect; -- erlaubt cRect := rect;-- verboten

13 Dr. Wolfram Amme, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS Referenzsemantik eine Variable in OO-Sprachen enthält oft kein Objekt, sondern nur einen Verweis auf ein Objekt Objekterzeugung durch den Konstruktor 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, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS Achtung !!! Programmierfehler durch Auftreten von Alias-Paaren Unterscheide !!! Objektidentität versus Objektgleichheit Zuweisen versus Kopieren Beispiel: Referenzsemantik Rectangle rect := cRect ColoredRectangle Rectangle rect cRect

15 Dr. Wolfram Amme, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS Dynamische Bindung 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, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS Abstrakte Klassen eine Klasse mit definierten, aber noch nicht implementierten Methoden nennen wir eine abstrakte Klasse Faktorisierung und Konkretisierung klasse Image var x, y, penSize: Integer; penInk: Color; meth move(x: Integer, y: Integer): Integer;... draw; erase;

17 Dr. Wolfram Amme, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS Klassenhierarchien Abstrakte Klasse Konkrete Klasse Image Line Arrow Area Image3D Rectangle Circle Polygon Cube Sphere Cylinder

18 Dr. Wolfram Amme, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS 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 problemorientierten Abstraktionsebenen statt Umfangreiche, flexible Programme können mit vergleichsweise geringem Aufwand entwickelt werden

19 Dr. Wolfram Amme, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS 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

20 Dr. Wolfram Amme, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS Objektorientierte Programmiersprachen


Herunterladen ppt "1 Grundsätze objektorientierter Programmierung. Dr. Wolfram Amme, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS 2002 2 Objektorientierte."

Ähnliche Präsentationen


Google-Anzeigen