1 Eine Einführung in die objektorientierte Programmierung.

Slides:



Advertisements
Ähnliche Präsentationen
Blue J.
Advertisements

C Sharp (C#) Martin Saternus Senior Student Partner
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
Freie Universität Berlin Institut für Informatik
der Universität Oldenburg
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
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.
Einführung in die Programmierung mit Java
Programmieren mit JAVA
Programmieren mit JAVA
Die Skriptsprache Perl (8) Wolfgang Friebel DESY Zeuthen.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
C++ Vererbung und Polymorphie
Entwurfsmuster EDV Entwurfsmuster.
Abstrakte Klassen, Interface
DVG Klassen und Objekte
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.
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
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 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Java Programmierung.
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
Einführung in die Programmierung mit Java
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003.
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
Objektorientierte (OO) Programmierung
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.
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 Generische Programmierung in Java.
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 Grundsätze objektorientierter Programmierung. Dr. Wolfram Amme, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS Objektorientierte.
, 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.
© Tenbusch Oberstufenzentrum Informations- und Medizintechnik Objektorientierte Programmierung mit Java.
OOP II.
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
Die Struktur einer Java-Klasse
Implementieren von Klassen
 Präsentation transkript:

1 Eine Einführung in die objektorientierte Programmierung

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

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

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

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

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

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

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

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

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

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

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

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;

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

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;

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

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;

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

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

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

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

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

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