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

Slides:



Advertisements
Ähnliche Präsentationen
C Sharp (C#) Martin Saternus Senior Student Partner
Advertisements

Ziele von EINI I + II Einführen in „Informatik“
der Universität Oldenburg
der Universität Oldenburg
Objektorientierte Programmierung
Konzepte objektorientierter Systeme
Einführung in die Programmierung Zusammenfassung
Unter- und Oberklassen: Beispiel
Kapitel 4 Datenstrukturen
Freie Universität Berlin Institut für Informatik
Abstrakte Klassen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
Java: Grundlagen der Objektorientierung
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.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 5 Sitzung 5: Polymorphismus.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Einführung in die OOP in Java
Programmieren mit JAVA
Programmieren mit JAVA
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
Abstrakte Klassen DVG
Abstrakte Klassen, Interface
DVG Klassen und Objekte
Wizards & Builders GmbH Einführung in die objektorientierte Programmierung Norbert Abb.
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Einführung in die Programmierung Wintersemester 2013/14 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung
Objektorientierte Programmierung
Objektorientiertes Programmieren
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 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 2010/11 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
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
ObjektOrientiertes Programmieren
Programmiersprachen Proseminar Grundlagen wissenschaftlichen Arbeitens
Objektorientierte Programmierung
EPROG Tutorium #6 Philipp Effenberger
EPROG Tutorium #5 Philipp Effenberger
Objektorientierung.
Polymorphie (Vielgestaltigkeit). Wenn eine Methode, wie z.B. print für verschiedene Programmteile steht (und z.B. einmal Objekte verschiedener Klassen.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Inf K1/2 Sj 13/14 GZG FN W.Seyboldt 1 SFZ FN Sj. 13/14 Python Klassen und Objekte.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Vererbung Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
Einführung in die Programmierung mit Java
Objektorientierte (OO) Programmierung
Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Semantik funktionaler Programme.
Objektorientierte Programmierung mit JAVA. © Klasse Wie in C++ ist die Klasse das primäre Mittel um ein Entity abzubilden Die Eigenschaften.
Dr. Wolfram Amme, Generisches Programmieren, Informatik II, FSU Jena, SS Generisches Programmieren.
Tutorium Software-Engineering SS14 Florian Manghofer.
Dr. Wolfram Amme, Virtuelle Vererbung, Informatik II, FSU Jena, SS Auflösung von Konflikten bei Mehrfachvererbung Umbenennung mehrdeutiger Methoden.
1 Eine Einführung in die objektorientierte Programmierung.
, PD Dr. Wolfram Amme, Tutorium zum Programmierpraktikum, FSU Jena, WS 2006/07 1 Objekte in Java.
Dr. Wolfram Amme, Funktionale Programmierung, Informatik II, FSU Jena, SS Funktionale Programmierung.
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Kapselung von Daten I Gründe für die Datenkapselung Datenkonsistenz leichtere.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
© Tenbusch Oberstufenzentrum Informations- und Medizintechnik Objektorientierte Programmierung mit Java.
OOP II.
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
Die Struktur einer Java-Klasse
Definition Felder Konstruktor Methoden Beispiel
Polymorphie Überschreiben
 Präsentation transkript:

1 Grundsätze objektorientierter Programmierung

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

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

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

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

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

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

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

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

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

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

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

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;

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

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;

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;

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

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

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

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