1 / 14

Einführung in die Programmierung mit Java

Einführung in die Programmierung mit Java. 8. Vorlesung WS 2002/2003. Übersicht. Klassen und Objekte: Vererbung Konzeptueller Hintergrund: Spezialisierung Modellierung mittels UML Vererben von Variablen Vererben von Methoden Überlagerung von Methoden Zugriff auf überlagerte Methoden.

bona
Download Presentation

Einführung in die Programmierung mit Java

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Einführung in die Programmierung mit Java 8. Vorlesung WS 2002/2003

  2. Übersicht • Klassen und Objekte: Vererbung • Konzeptueller Hintergrund: Spezialisierung • Modellierung mittels UML • Vererben von Variablen • Vererben von Methoden • Überlagerung von Methoden • Zugriff auf überlagerte Methoden G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

  3. Abstraktion Klassenhierarchien • konzeptueller Hintergrund: Generalisierung  Spezialisierung • Spezifikation in UML (Unified Modeling Language): G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

  4. Person Verwaltungs-angestellter spezieller Student Dozent Ordentlicher Student Gasthörer Beispiel zu Klassenhierarchien Ein Dozent ist eine Person Ein Student ist eine Person Ein Gasthörer ist ein Student G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

  5. Klassenhierarchien in Java (I) Syntax: class UnterklasseextendsOberklasse{ . . . } Beispiel: Datei Person.java:class Person { . . . } Datei Student.java:class Student extends Person { . . . } G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

  6. Klassenhierarchien in Java (II) • Unterklassen haben genau eine Oberklasse • Eine Oberklasse kann beliebig viele Unterklassenbesitzen • 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 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

  7. 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 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

  8. Bsp. für Vererbung von Variablen & Methoden Variablen & Methoden der Klasse 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() G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

  9. Vorteile der Vererbung • Implementation / Funktion einer Oberklasse kann zu einem späteren Zeitpunkt „quasi von außen“ verbessertbzw. 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. G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

  10. Ü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 { ... } G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

  11. Ü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(. . .); G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

  12. 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); }} Ruft die überlagerte Methode der Oberklasse auf (welche bereits für die Ausgabe der darin definierten Variablen sorgt) Überlagert die gleichnamigeMethode der Oberklasse G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

  13. 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; Über die Referenzvariable pkann nur auf die Methoden & Instanzvariablen des Studenten-Objekts zugegriffen werden, die von Person vererbt worden sind. • 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(); G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

  14. Ü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. G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

More Related