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 9. 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 9. 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 9. Vorlesung WS 2001/2002

2 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/022 Übersicht Klassen und Objekte: Vererbung –Konzeptueller Hintergrund: Spezialisierung –Modellierung mittels UML –Vererben von Variablen –Vererben von Methoden Überlagerung von Methoden Zugriff auf überlagerte Methoden

3 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/023 Klassenhierarchien konzeptueller Hintergrund: Generalisierung  Spezialisierung Spezifikation in UML (Unified Modeling Language): Abstraktion

4 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/024 Beispiel zu Klassenhierarchien spezieller StudentDozent Verwaltungs- angestellter Person Ordentlicher Student Gasthörer

5 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/025 Klassenhierarchien in Java (I) Syntax: class Unterklasse extends Oberklasse {... } Beispiel: Datei Person.java: class Person {... } Datei Student.java: class Student extends Person {... }

6 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/026 Klassenhierarchien in Java (II) Unterklassen haben genau eine Oberklasse Eine Oberklasse kann beliebig viele Unterklassen besitzen Unterklassen können selber wieder Unterklassen besitzen Die oberste Klasse in Java ist die Klasse Object –alle Klassen sind direkt oder indirekt (wg. Transitivität) Unterklassen von Object –wird bei der Klassendefinition kein extends-Schlüsselwort angegeben, so ist die neue Klasse automatisch direkte Unterklasse von Object

7 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/027 Vererbung Eine Unterklasse erbt alle Eigenschaften ihrer Oberklasse: –Eine Unterklasse erbt alle Variablen ihrer Oberklasse –Eine Unterklasse erbt alle Methoden ihrer Oberklasse Vererbungsbeziehung ist transitiv –eine Unterklasse erbt die Eigenschaften aller darüberliegenden Oberklassen

8 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/028 Bsp. für Vererbung von Variablen & Methoden class A { int aVar; aVar void aMethode(){...} aMethode() } class B extends A { int bVar; aVar, bVar void bMethode(){...} aMethode(), bMethode() } class C extends B { int cVar; aVar, bVar, cVar void cMethode(){...} aMethode(), bMethode(), cMethode() } class D extends C { int dVar; aVar, bVar, cVar, dVar void dMethode(){...} aMethode(), bMethode(), } cMethode(), dMethode() Variablen & Methoden der Klasse

9 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/029 Vorteile der Vererbung Implementation / Funktion einer Oberklasse kann zu einem späteren Zeitpunkt „quasi von außen“ verbessert bzw. korrigiert werden –es wird eine entsprechende Unterklasse definiert, die die zu ändernden Methoden und Variablen durch neue Versionen überlagert Dadurch, dass Klassen durch Unterklassen in eigenen Quelltext- Dateien spezialisiert werden können, bleiben Programme langfristig erweiterbar. Stufenweise Abstraktion der Klassenhierarchie ermöglicht die Wiederverwendbarkeit der generelleren Klassen für andere Projekte. –In einzelnen Projekten werden dann speziellere Unterklassen der eher generellen Klassen definiert.

10 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0210 Übung im GIS-Labor Implementieren Sie die zwei Klassen Person und Student als Ober- bzw. Unterklasse: –Personen haben als Attribute (Instanzvariablen): Vor- und Nachname Straße und Hausnummer PLZ und Ort –Studenten haben zusätzlich: Matrikelnummer Studiengang Datum des Erstsemesters zur Erinnerung: class x extends y {... }

11 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0211 Überlagerung (engl.: Overriding) Methoden einer Unterklasse können Methoden gleicher Signatur (Name+Parameterliste) aus den Oberklassen überlagern –Zweck: Unterklassen modellieren speziellere Objekte; Methoden der Oberklasse müssen häufig ebenfalls spezialisiert werden Zugriff: –im Normalfall wird die speziellste Methode verwendet –expliziter Aufruf einer überlagerten Methode Name der Oberklasse mittels: super.Name(...);

12 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0212 Beispiel zur Überlagerung von Methoden class Person { String vorname, nachname; void ausgeben() { System.out.println(vorname + nachname); } } class Student extends Person { long matrikelnr; void ausgeben() { super.ausgeben(); System.out.println(matrikelnr); } } Überlagert die gleichnamige Methode der Oberklasse Ruft die überlagerte Methode der Oberklasse auf (welche bereits für die Ausgabe der darin definierten Variablen sorgt)

13 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0213 Typkompatibilität Einer Variablen der Klasse K dürfen Objekte der Klasse K sowie aller ihrer Unterklassen zugewiesen werden. Beispiel: Student s = new Student(); Person p = s; Der umgekehrte Weg geht nicht: –Einer Variablen der Unterklasse K kann kein Objekt ihrer Oberklasse zugewiesen werden (dem Objekt fehlen die für die Unterklasse spezifischen Eigenschaften) Beispiel: Student s = new Person(); Über die Referenzvariable p kann nur auf die Methoden & Instanzvariablen des Studenten-Objekts zugegriffen werden, die von Person vererbt worden sind.

14 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0214 Übungsaufgabe 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.


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

Ähnliche Präsentationen


Google-Anzeigen