Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 10. Vorlesung WS 2001/2002.

Ähnliche Präsentationen


Präsentation zum Thema: "Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 10. Vorlesung WS 2001/2002."—  Präsentation transkript:

1 Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 10. Vorlesung WS 2001/2002

2 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/022 Übersicht Besprechung der Übungsaufgabe Polymorphie –Dynamisches Binden Vererbung Fortsetzung –Abstrakte Klassen

3 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/023 Übungsaufgabe vom Ergänzen Sie die vorgestellten Klassen „Person“ und „Student“ um die Unterklassen „Dozent“ und „Verwaltungsangestellter“. Die Unterklasse „Dozent“ soll dabei noch weiter in „Professor“ und „Assistent“ unterschieden werden. Alle Klassen sollen eine Methode void ausgeben() besitzen, die den Inhalt aller Instanzvariablen ausgibt. (Die Methoden ausgeben() der Unterklasse überlagern dann die gleichnamige Methode der Oberklasse(n)) Erzeugen Sie ein Objekt jeder Klasse, initialisieren Sie sie mit Beispieldaten und geben Sie die Objekte anschliessend mittels der Methode ausgeben() aus.

4 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/024 Lösung Schritt 1: Klassendiagramm in UML spezieller StudentDozent Verwaltungs- angestellter Person ProfessorAssistent

5 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/025 Lösung Schritt 2: Implementierung Entwurfsentscheidungen –Die Methode ausgeben() von Unterklassen soll zur Ausgabe aller geerbten Instanzvariablen auf die (überlagerte) Methode ausgeben() der Oberklasse zurückgreifen. –Zur Sicherstellung der vollständigen Initialisierung neuer Objekte sollte jede Klasse mindestens einen Kontruktor erhalten, dessen Parameterliste alle Instanzvariable der Klasse (inklusive der geerbten) enthält. Siehe Dateien –Person.java –Student.java und Dozent.java –Assistent.java

6 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/026 Polymorphie (Vielgestaltigkeit) Es gibt zwei Arten von Polymorphie: 1.Polymorphie von Operationen –ein und derselbe Methodenaufruf kann in verschiedenen Klassen klassenspezifisch, d.h. durch jeweils eigene Methodenrümpfe behandelt werden 2.Polymorphie von Objekten –gibt es nur bei Vererbungshierarchien –an die Stelle eines Objektes in einem Programm kann stets auch ein Objekt eines seiner Unterklassen treten –andersherum formuliert: ein Objekt einer bestimmten Klasse kann in der Gestalt aller in der Vererbungshierarchie darüberliegenden Klassen auftreten

7 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/027 Dynamisches Binden Aufgrund des Polymorphismus kann bei überlagerten Methoden erst zur Laufzeit entschieden werden, in welcher Unterklasse die entsprechende Methode aufgerufen wird. Die Bindung des Methodennamens an ein konkretes Programmteilstück im Hauptspeicher erfolgt somit dynamisch. Beispiel: Person[] personen = new Person[4]; personen[0] = new Dozent(...); personen[1] = new Student(...); personen[2] = new Assistent(...); personen[3] = new Person(...); for (int i=0; i<4; i++) personen[i].ausgeben();

8 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/028 Abfrage der Klassenzugehörigkeit Die Frage, von welcher Klasse ein bestimmtes Objekt eine Instanz ist, kann mit dem instanceof-Operator abgefragt werden: Beispiel: if (Referenzvariable instanceof Klasse) {...} Sinn: Vermeidung von Runtime-Exceptions / Abstürzen Beispiel: Anzahl der Studenten in einem Personenarray zählen

9 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/029 Abstrakte Klassen Motivation am Beispiel geometrischer Figuren Figur fläche() ausgeben() verschiedene geometrische Figuren, aber gleiche Schnittstellen gemeinsame Oberklasse als Abstraktion Methode fläche() kann auf dieser Ebene nicht implementiert werden, da Flächenberechnung vom konkreten Typ abhängt. Methode fläche() kann auf dieser Ebene nicht implementiert werden, da Flächenberechnung vom konkreten Typ abhängt. Aufgabenstellung: 1.In einem Array sollen beliebige geometrische Figuren abgelegt werden können. Wie geht man vor? Aufgabenstellung: 2.Wo ist das Problem, wenn man den Flächeninhalt aller im Array enthaltenen Figuren berechnen will? Lösung: man definiert die Methode fläche() als abstrakte Methode und markiert dadurch, dass Sie erst in einer Unterklasse implementiert wird.

10 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0210 abstract class Figur {... abstract double fläche(); // abstrakte Methode... } Definition abstrakter Klassen Bei der Definition abstrakter Methoden werden nur die Methodenköpfe (Methodenname sowie Parameterliste) festgelegt.

11 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0211 Anmerkungen (I) zu abstrakten Klassen Eine Klasse ist abstrakt, wenn sie mindestens eine abstrakte Methode enthält. –Abstrakte Klassen können auch konkrete Methoden und Variablen enthalten. Eine abstrakte Methode verspricht, dass alle nichtabstrakten Unterklassen dieser Klasse diese abstrakte Methode implementieren Von abstrakten Klassen lassen sich keine Instanzen erzeugen.

12 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0212 Anmerkungen (II) zu abstrakten Klassen Man kann trotzdem Referenzvariablen vom Typ einer abstrakten Klasse verwenden – diese dürfen aber nur Objekte von nicht abstrakten Unterklasse enthalten. Beispiel: Figur f=new Kreis(4.0); double area=f.fläche(); Figur f1= new Figur(); Nicht möglich, da Figur abstrakte Klasse

13 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0213 Übungsaufgabe Implementieren Sie die Klassen Figur, Dreieck, Ellipse und Trapez aus dem Beispiel auf Folie 9. Figur soll eine abstrakte Klasse sein. Erweitern Sie jede der vier Klassen um die Methode umfang(). Diese ist bei Figur abstrakt. Erzeugen Sie ein Array, das Dreiecke, Ellipsen und Trapeze enthält. Berechnen Sie die Summe der Umfänge aller geometrischen Figuren im Array.


Herunterladen ppt "Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 10. Vorlesung WS 2001/2002."

Ähnliche Präsentationen


Google-Anzeigen