Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.

Ähnliche Präsentationen


Präsentation zum Thema: "Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard."—  Präsentation transkript:

1 Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard

2 Geosoftware I – Lars Bernard Ziel Begriff Polymorphismus einführen Bedeutung Arten Realisierung in Java abstrakte Klassen Interfaces

3 Geosoftware I – Lars Bernard Was ist Polymorphismus ? Bedeutung des Wortes polymorph = vielgestaltig (mehrere Formen) vgl. Polymorphismus in Biologie und Chemie: Unterschiedliche Formen von Lebewesen derselben Art Körper oder Stoffe, die abhängig von der Umgebung (z.B. Temperatur) unterschiedliche (poly-) Formen (-morph) annehmen können (z.B. Wasser)

4 Geosoftware I – Lars Bernard Was ist Polymorphismus ? Bedeutung in der OOP Eine Operation (Operator, Methode) ist für verschiedene Typen (Objektklassen) zulässig. Jedes Objekt weiß selbst, wie es die Operation auszuführen hat. Deklaration genereller Eigenschaften durch abstrakte Klassen und Interfaces. Überschreibung vordeklarierter Methoden

5 Geosoftware I – Lars Bernard Statische Bindung int i, k, l; double x, y, z; l = k + l; z = x + y; z = k + 1; // Operator '+' für integer // Operator '+' für double // Operator '+' für integer // und cast auf double Die Entscheidung für den geeigneten Operator wird zur Compile-Zeit gefällt. Das wird als statische Bindung bezeichnet.

6 Geosoftware I – Lars Bernard Dynamische Bindung Die Entscheidung für die benötigte Methode wird zur Laufzeit getroffen. Das wird als dynamische Bindung bezeichnet.

7 Geosoftware I – Lars Bernard Wozu Polymorphismus ? Erweiterbarkeit Das grundsätzliche Verhalten eines Objektes wird durch die Methoden-Deklarationen der Superklasse festgelegt: +, Addition zweier Zahlen und Rückgabe der Summe area(), Berechnung und Rückgabe der Flächengröße Die Implementierung der Methode erfolgt jedoch erst in einer speziellen Klasse (= Überschreiben) - also an der Stelle, wo das Wissen über die Eigenschaften der Objekte ist.

8 Geosoftware I – Lars Bernard Wozu Polymorphismus ? Fördert die klare Konzeption Verwendung einheitlicher Namen für Operationen Es kann zunächst (abstrakt) beschrieben was zu tun ist und erst später wie es für einzelne Objekttypen (=Klassen) zu tun ist. Der (geschickte) Einsatz des Polymorphismus erlaubt eine sehr elegante objektorientierte Entwicklung...bedarf jedoch auch einiger Erfahrung.

9 Geosoftware I – Lars Bernard Polymorphismus in Java Beschreibung des abstrakten Verhaltens durch a) abstrakte Methoden b) Interfaceklassen Die abstrakten Methoden bzw. die Methoden der Interfaceklassen müssen in den abgeleiteten Klassen überschrieben und implementiert werden.

10 Geosoftware I – Lars Bernard Abstrakte Klassen.... abstract class AbstractClass { abstract void abstractMethod(); /* Muß überschrieben werden. */ void baseMethod() { /* Kann überschrieben werden */ }; } Können implementierte und abstrakte (zu überschreibende) Methoden enthalten Ableitung via extends Keine Mehrfachvererbung möglich

11 Geosoftware I – Lars Bernard.... und Interfaces interface AbstractClass { int useArrayList = 1; /*...usw.*/ void baseMethod(); /* Muß in der abgeleiteten Klasse überschrieben und implementiert werden. */ } Kann als Attribute lediglich Konstanten enthalten (flags) und alle Methoden müssen überschrieben werden (Ableitung via implements) Mehrfachvererbung von Interfaceklassen ist möglich - Aber selten notwendig !

12 Geosoftware I – Lars Bernard Java Beispiel interface FigureInterface { public double area(); } class Rectangle implements FigureInterface{ Rectangle(double widthIn, double heightIn) { width_ = widthIn; height_ = heightIn; } public double area(){ // überschreibe area()für Rechteck: return (width_*height_); } double width_, height_; } für Circle analog...

13 Geosoftware I – Lars Bernard Java Beispiel FigureInterface[] figures; figures = new FigureInterface[2]; figures[0] = new Rectangle(1.0,2.0); figures[1] = new Circle(3.0); double areaSum = 0; for (int i=0; i < figures.length; i++) { areaSum += figures[i].area(); } System.out.println("Cummulated area: " + areaSum );

14 Geosoftware I – Lars Bernard Zusammenfassung Polymorphismus ist ein wesentliches Konzept der Objektorientierung. Es dient der Abstraktion bei Entwurf und Implementierung gleiche Namen für gleiches Verhalten Trennung von Verhalten und Implementierung (= Form) der Implementierung von Methoden an der Stelle, wo das Wissen um die Eigenschaften eines Objektes vorhanden ist.

15 Geosoftware I – Lars Bernard Aufgabe 4 Vorab: Implementierung des Figure Beispiels die HA 4 via e-mail an: Lars Bernard (bernard@uni-muenster.de) Simon Jirka (jirka@uni-muenster.de) Montag 02.06; 12.00 st


Herunterladen ppt "Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard."

Ähnliche Präsentationen


Google-Anzeigen