Java-Kurs - 10. Übung

12
Java-Kurs - 10. Übung Besprechung der Hausaufgabe Vererbung Konstruktoren (Methode super) Polymorphismus Dynamisches Binden Abstrakte Klassen

description

Java-Kurs - 10. Übung. Besprechung der Hausaufgabe Vererbung Konstruktoren (Methode super) Polymorphismus Dynamisches Binden Abstrakte Klassen. Methode "super". Problem: Wiederholung der Initialisierung für Person im Konstruktor von Dozent (Unterklasse von Person ) - PowerPoint PPT Presentation

Transcript of Java-Kurs - 10. Übung

Page 1: Java-Kurs - 10. Übung

Java-Kurs - 10. Übung

• Besprechung der Hausaufgabe

• Vererbung

• Konstruktoren (Methode super)

• Polymorphismus

• Dynamisches Binden

• Abstrakte Klassen

Page 2: Java-Kurs - 10. Übung

Methode "super"

• Problem: Wiederholung der Initialisierung für Person im Konstruktor von Dozent (Unterklasse von Person)

• Sinnvoll: Nutzung des Konstruktors von Person im Konstruktor von Dozent

• Methode super dient zum Aufruf des Konstruktors der Oberklasse

Page 3: Java-Kurs - 10. Übung

Methode super: Beispiel

class Dozent extends Person {

String institut;

//Konstruktor

Dozent(String vorname, String nachname, String inst)

{

super(vorname,nachname); //Konstruktor von Person

institut = inst;

}

}

Page 4: Java-Kurs - 10. Übung

Beispiel zur Klassenhierarchie

1dimensionale_Figur

Geometrische_Figur

Gerade_ Strecke

2dimensionale_Figur

Spline Kreis-bogen

Dreieck Viereck

Rechteck

Quadrat

Polygon

Page 5: Java-Kurs - 10. Übung

Methoden

1dimensionale_Figur

Geometrische_Figur

Gerade_ Strecke

2dimensionale_Figur

Spline Kreis-bogen

Dreieck Viereck

Rechteck

Quadrat

Polygon

Methode zeichne()

Page 6: Java-Kurs - 10. Übung

Methoden

1dimensionale_Figur

Geometrische_Figur

Gerade_ Strecke

2dimensionale_Figur

Spline Kreis-bogen

Dreieck Viereck

Rechteck

Quadrat

Polygon

Methode umfang()

Page 7: Java-Kurs - 10. Übung

Polymorphismus

• Eine Klassenvariable kann Objekte von Unterklassen aufnehmen• Beispiel (Geometrische Figuren):Geometrische_Figur g1, g2;g1 = new Dreieck();g2 = new Quadrat();

• Es können nur die Methoden der Klassenvariablen aufgerufen werden:g1.zeichne(); //aus Geometrische_Fig.g1.umfang(); //geht nicht; nur bei 2D

Page 8: Java-Kurs - 10. Übung

Polymorphismus

• Eine Klassenvariable kann keine Objekte von Oberklassen aufnehmen• Beispiel:Quadrat q;q = new Geometrische_Figur();//Fehlerq.umfang(); //Fehler

• Für q ist der Aufruf q.umfang() zulässig, umfang() gibt es aber bei Geometrische_Figur nicht.

Page 9: Java-Kurs - 10. Übung

Dynamisches Binden

• Bei Polymorphismus wird erst zur Laufzeit entscheiden, welche Methode verwendet wird

• Beispiel:Geometrische_Figur[] g = new...; g[0] = new Dreieck();g[1] = new Quadrat();g[2] = new Rechteck(); ...;for(int i = 0; i < n ; i = i+1){ g[i].zeichne(); }

Page 10: Java-Kurs - 10. Übung

Abstrakte Klassen

• Problem I:Geometrische_Figur g;g = new Geometrische_Figur();

• Problem II: Wie ist zeichne() in Klasse Geometrische_Figur implementiert?

• Lösung: Abstrakte Klassen• Es dürfen keine Instanzen erzeugt werden• Hat mindestens eine abstrakte Methode (Methode ohne

Implementierung)• Abstrakte Methode muss in Unterklasse implementiert

sein

Page 11: Java-Kurs - 10. Übung

Abstrakte Klassen: Syntax

abstract class Geometrische_Figur{.....abstract void zeichne();...

}

Page 12: Java-Kurs - 10. Übung

Hausaufgabe 9

• Implementieren Sie die drei Klassen Polygon, Dreieck und Rechteck aus dem UML-Diagramm. Polygon soll eine Abstrakte Klasse sein.

• Erweitern Sie jede der drei Klassen um die Methode umfang(). Diese ist bei Polygon abstrakt.

• Erzeugen Sie ein Array, das Dreiecke und Rechtecke enthält.

• Berechnen Sie die Summe der Umfänge aller Dreiecke und Rechtecke im Array.

Dreieck Rechteck

Polygon