Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 9. Vorlesung WS 2002/2003.

Slides:



Advertisements
Ähnliche Präsentationen
Objektorientierte Programmierung
Advertisements

der Universität Oldenburg
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Kritische Betrachtung
der Universität Oldenburg
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Konstruktoren.
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 9. Vorlesung WS 2002/2003.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 7. Vorlesung WS 2002/2003.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. D. Dörschlag Einführung in die Programmierung mit Java.
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Programmieren mit JAVA
Vererbung Spezialisierung von Klassen in JAVA möglich durch
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Klassendefinitionen in Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation I Vorlesung 12 WS 2000/2001 Gerhard Gröger Modellierung mit Geodatabases.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Objektorientierte Konzepte/UML Geoinformation I Vorlesung 2 WS 2000/2001.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Variablenkonzept Klassisch, in Java Basistyp
EPROG Tutorium #6 Philipp Effenberger
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Vererbung Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang
Java-Kurs - 3. Übung Hausaufgabe Arrays For-Schleifen.
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 8. Vorlesung WS 2002/2003.
Einführung in die Programmierung mit Java
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
Lösung der Hausaufgaben von Vorlesung 10 Universität Bonn Institut für Kartografie und Geoinformation Dipl.-Ing. Dörschlag, Dr. Gröger, Prof. Dr. Plümer.
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 11. Vorlesung WS 2001/2002.
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/ Übungsaufgabe vom Logische Ausdrücke 1.true & false | true 2.(10>2)
Institut für Kartographie und Geoinformation Prof. Dr. L. Plümer, Dipl.-Ing. D. Dörschlag, Dr. G. Gröger Einführung in die Programmierung mit Java 13.
Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003 Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger,
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 9. Vorlesung WS 2002/2003.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 7. Vorlesung WS 2002/2003.
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.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. D. Dörschlag Einführung in die Programmierung mit Java.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 10. Vorlesung WS 2002/2003.
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 03/041 Übungsaufgabe Ergänzt die Klasse Dreieck aus der Hausaufgabe um eine Methode,
Java-Kurs - 9. Übung Besprechung der Hausaufgabe
Java Programme nur ein bisschen objektorientiert.
Tutorium Software-Engineering SS14 Florian Manghofer.
Dr. Wolfram Amme, Virtuelle Vererbung, Informatik II, FSU Jena, SS Auflösung von Konflikten bei Mehrfachvererbung Umbenennung mehrdeutiger Methoden.
Java-Kurs - 8. Übung Klassen und Objekte: Vererbung
Einführung in die Programmierung mit Java
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
Einführung in die Programmierung mit Java
Implementieren von Klassen
 Präsentation transkript:

Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 9. Vorlesung WS 2002/2003

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/032 Übersicht Besprechung der Hausaufgabe Generalisierung/ Spezialisierung –Polymorphismus/Dynamisches Binden –Vererben von Methoden –Vererbung und Arrays –Typkonvertierung

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/033 Hausaufgabe Ergänzt die vorgestellten Klassen „Person“, „Student“ und "Mitarbeiter" um die Klasse „Dozent“ (Unterklassen von Person). Die Unterklasse „Dozent“ soll dabei noch weiter in „Professor“ und „Assistent“ unterschieden werden. Erzeugt ein Objekt jeder Klasse und initialisiert dieses mit Beispieldaten. Erzeugt ein Array, das Professoren und Assistenten speichert. Füllt dieses mit einigen Objekten.

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/034 Hausaufgabe: Lösung class Person{String nachname; Person(String nach){nachname = nach;}} class Dozent extends Person{String fach; Dozent(String nach) {super(nach), fach = f;}} class Assistent extends Dozent{int vertragsdauer; Assistent(String nach, String f, int d) {super(String nach, String f), vertragsdauer = d;}} class Professor extends Dozent{String besoldungsGr; Professor(String nach, String f, int d, String bg) {super(String nach, String f), besoldungsGr = bg;}} //von Außen (z.B. in main): Dozent [] dArray = new Dozent[3]; dArray[0] = new Assistent("Kolbe","GIS",3); dArray[1] = new Professor("Plümer","GIS","C4"); dArray[2] = new Professor("Förstner","Photo","C4");

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/035 Wdh: Vererbung von Methoden class Person{String nachname; void ausgabe(){System.out.println(nachname);} } class Dozent extends Person{String fach;} class Professor extends Dozent{String besoldungsGr;}... Person p = new Person(); Dozent d = new Dozent(); Professor pr = new Professor(); p.ausgabe();//Methode von Person d.ausgabe();//geerbt von Person pr.ausgabe();//geerbt von Person

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/036 Überlagerung von Methoden Beispiel: class Person{String nachname; void ausgabe(){System.out.println(nachname);}} class Dozent extends Person{String fach; void ausgabe(){System.out.println(nachname + " " + fach);}} class Professor extends Dozent{String besoldungsGr; void ausgabe(){System.out.println(nachname + " " + fach + " " + besoldungsGr);}}} Eine Methode einer Unterklasse kann denselben Namen (z. B. ausgabe) und dieselbe Anzahl/denselben Typ der Parameter (z. B. 0) wie eine Methode einer Oberklassen haben Die Methode der Unterklasse überlagert die Methode der Oberklasse Es findet keine Vererbung statt

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/037 Überlagerung von Methoden Bei Überlagerung von Methoden spricht man von Polymorphismus Überlagerte Methoden sind beim Aufruf nicht unterscheidbar Frage: Welche Methode wird verwendet? Antwort: die der Klasse des Objekts, nicht die der Klasse der Referenzvariablen Beispiel: (wie eben mit überlagerter Methode ausgabe()) Professor pr = new Professor(); Person p = pr; p.ausgabe();//ausgabe() von Professor, nicht von Person Dies wird als Dynamisches Binden bezeichnet

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/038 Dynamisches Binden: Beispiel class Person{...void ausgabe(){...}} class Dozent extends Person{...void ausgabe(){...}} class Professor extends Dozent{...void ausgabe(){...}} //von Außen (z.B. in main): Person [] pArray = new Person[1000]; pArray[0] = new Assistent("Kolbe","GIS",3); pArray[1] = new Person("Schmitz"); pArray[999] = new Professor("Förstner","Photo","C4"); for(int i = 0 ; i < 1000 ; i = i + 1) pArray[i].ausgabe(); //Welche der drei Methoden "ausgabe" aufgerufen wird, //wird zur Laufzeit ("dynamisch") abhängig von der //Klasse (Person, Dozent oder Prof) entschieden

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/039 Dynamisches Binden: Vorteil Die nachträgliche Ergänzung der Klassenhierarchie erfordert nicht, dass die Routine zur Ausgabe: for(int i = 0 ; i < 1000 ; i = i + 1) pArray[i].ausgabe(); geändert werden muss Wird z.B. die Juniorprofessur eingefügt (neue Unterklasse von Dozent), so muss die Ausgabeprozedur nicht angepasst werden

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

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0311 Besprechung: Summe der Dreiecksumfänge class Dreieck{.... static double summeDerUmfaenge = 0; //Konstruktor Dreieck(double p1x, double p1y, double p2x,...){.... summeDerUmfaenge = summeDerUmfaenge + umfang(); } double umfang(){...} static double summeUmfaenge(){return summeDerUmfaenge;} } //Benutzung: System.out.println(Dreieck.summeUmfaenge()); //liefert 0 Dreieck d1 = new Dreieck(1.7,4.3,6.2); Dreieck d2 = new Dreieck(6.2,1.4,3.9); System.out.println(Dreieck.summeUmfaenge()); //liefert Summe //der Umfänge der Dreiecke d1 und d2

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0312 Besprechung der Hausaufgabe: Strings Ersetzt in einem String jedes Vorkommen von ä,ö,ü,ß durch ae, oe, ue, ss 1. Schritt: Ersetzten eines Vorkommens von ä,ö,ü,ß: String s =...; int i = s.indexOf("ö"); if(i != -1) { s = s.substring(0,i) + "oe" + s.substring(i+1,s.length()); }

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0313 Besprechung der Hausaufgabe: Strings Ersetzt in einem String jedes Vorkommen von ä,ö,ü,ß durch ae, oe, ue, ss 2. Schritt: Ersetzten aller Vorkommen von ä,ö,ü,ß: String s =...; int i = s.indexOf("ö"); if(i != -1) { s = s.substring(0,i) + "oe" + s.substring(i+1,s.length()); } i = s.indexOf("ä"); if(i != -1) { s = s.substring(0,i) + "ae" + s.substring(i+1,s.length()); }

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0314 Besprechung der Hausaufgabe: Strings Ersetzt in einem String jedes Vorkommen von ä,ö,ü,ß durch ae, oe, ue, ss 2. Schritt: Ersetzten aller Vorkommen von ä,ö,ü,ß: String s =...; boolean ende = false; while ( ! ende ) {ende = true; int i = s.indexOf("ö"); if(i != -1) { s = s.substring(0,i) + "oe" + s.substring(i+1,s.length()); ende = false; } i = s.indexOf("ä"); if(i != -1) { s = s.substring(0,i) + "ae" + s.substring(i+1,s.length()); ende = false; } }

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

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

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0317 Klassenhierarchien in Java: Syntax Syntax: class Unterklasse extends Oberklasse {... } 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/0318 Klassenhierarchien in Java: Allgemeines Eine Klasse hat höchstens eine Oberklasse (Einfachvererbung) Eine Klasse 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

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0319 Vererbung Konsequenz aus Spezialisierung 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 Variablen und Methoden aller darüber liegenden Oberklassen wenn A Unterklasse von B ist und B Unterklasse von C, dann erbt A auch von C

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

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0321 Übung im GIS-Labor Implementiert die Klassen Person, Student und Mitarbeiter, wobei Person Oberklasse der beiden anderen Klassen ist: –Personen haben als Attribute: Vor- und Nachname –Studenten haben zusätzlich: Matrikelnummer Studiengang –Mitarbeiter haben zusätzlich Namen des Instituts zur Erinnerung: class Unter extends Ober {... }

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0322 Konstruktoren: Beispiel class Person{ String nachname; Person(){nachname = "unbekannt";} Person(String nach){nachname = nach;} } class Student extends Person{ long matnr; Student() {nachname = "unbekannt"; matnr = -999;} Student(String nach, long matr){ nachname = nach; matrikelnr = matr;} } Problem: Konstruktoren der Unterklasse wiederholen Befehle der Konstruktoren der Oberklasse

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0323 Konstruktoren: Beispiel class Person{ String nachname; Person(){nachname = "unbekannt";} Person(String nach){nachname = nach;} } class Student extends Person{ long matnr; Student() {nachname = "unbekannt"; matnr = -999;} Student(String nach, long matr){ nachname = nach; matrikelnr = matr;} } Bessere Lösung: Konstruktoren der Unterklasse rufen Konstruktoren der Oberklasse auf Verwendung der Methode super()

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0324 Konstruktoren: Beispiel mit Methode super class Person{ String nachname; Person(){nachname = "unbekannt";} Person(String nach){nachname = nach;} } class Student extends Person{ long matnr; Student() {super(); matnr = -999;} Student(String nach, long matr){ super(nachname); matrikelnr = matr;} } super() ruft den Konstruktor der Oberklasse auf, der dieselbe Anzahl/Typ von Parametern hat. ruft Person() auf ruft Person(nachname) auf

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0325 Typkompatibilität I Referenzvariablen gehören zu Klassen und Objekte gehören zu Klassen Frage: Welche Objekte dürfen welchen Referenzvariablen zugewiesen werden? Antwort: Einer Referenzvariablen der Klasse K dürfen Objekte der Klasse K sowie aller Unterklassen von K zugewiesen werden. Beispiel: Student s = new Student(); Person p = s; //OK, da Person Oberklasse von //Student ist

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0326 Typkompatibilität II 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 1: Person p = new Person(); Student s = p; //geht nicht, da nicht jede Person //ein Student ist Beispiel 2: Student s1 = new Student(); Person p = s1; //s1 wird als Person angesehen Student s2 = p;//geht nicht, da nicht jede Person //ein Student ist

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0327 Typkompatibilität: Zulässige Attribute/Methoden Welche Attribute/Methoden können verwendet werden? Es können nur die Attribute/Methoden der Klasse der Referenzvariablen verwendet werden, nicht die der Klasse des Objekts Beispiel: Student s = new Student(); Person p = s; //Student p wird als Person angesehen p.nachname = "Schmitz"; //OK, da nachname Attribut //von Person ist p.matrikelnr = ; //geht nicht, da matrikelnr //kein Attribut von Person //ist –p zeigt zwar auf ein Objekt der Klasse Student (mit matrikelnr), dieses Objekt wird jedoch wie eine Person behandelt. Personen haben i. Allg. keine matrikelnr.

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0328 Vererbung und Arrayelemente: Beispiel Für die Verwaltung des Hochschulsports sollen Studenten, Mitarbeiter und Externe in einem Array gespeichert werden. Welchen Elementtyp hat das Array? 1. Ansatz: Elementtyp Object: Object [] hsspArray = new Object[200]; hsspArray[0] = new Student("Schmitz"); hsspArray[1] = new Mitarbeiter("Meyer"); hsspArray[2] = new Person("Schulz"); //Durchsuchen nach Person namens "Schulz": for(int i = 0 ; i < 3 ; i = i + 1) if( hsspArray[i].name == "Schulz")... //geht nicht Problem I: Object hat kein Attribut "name" Problem II: in Array kann alles (jede Unterklasse von Object) hereingesteckt werden Klasse zu allgemein

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0329 Vererbung und Arrayelemente: Beispiel Für die Verwaltung des Hochschulsports sollen Studenten, Mitarbeiter und Externe in einem Array gespeichert werden. Welchen Elementtyp hat das Array? 2. Ansatz: Elementtyp Student Student [] hsspArray = new Student[200]; hsspArray[0] = new Student("Schmitz"); hsspArray[1] = new Mitarbeiter("Meyer"); //geht nicht Problem: ein Mitarbeiter ist kein Student Klasse zu speziell

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0330 Vererbung und Arrayelemente: Beispiel Für die Verwaltung des Hochschulsports sollen Studenten, Mitarbeiter und Externe in einem Array gespeichert werden. Welchen Elementtyp hat das Array? 3. Ansatz: Elementtyp Person: Person [] hsspArray = new Person[200]; hsspArray[0] = new Student("Schmitz"); hsspArray[1] = new Mitarbeiter("Meyer"); hsspArray[2] = new Person("Schulz"); //Durchsuchen nach Person namens "Schulz": for(int i = 0 ; i < 3 ; i = i + 1) if( hsspArray[i].name == "Schulz")... //OK Person hat Attribut "name" Funktioniert dank Vererbung (Mitarbeiter und Student sind Unterklasse von Person) Auch Mitarbeiter und Student werden als Person angesehen

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0331 Typkonvertierung zwischen Klassen Beispiel: In dem Hochschulsportarray (Elementtyp: Person) soll der Student mit der Matrikelnummer 1234 gesucht werden Problem: Personen haben keine Matrikelnummer Lösung: Typkonvertierung von Person zu Student: Person [] hsspArray = new Person[200]; Student s = (Student) hsspArray[i]; if( s.matrikelnr == 1234 )...} Vgl. Typkonvertierung von double zu int in Vorlesung 2 Vorsicht: Typkonvertierung ist nur erlaubt, wenn Referenzvariable ( hsspArray[i]) tatsächlich auf ein Objekt vom Typ Student (oder einer Unterklasse von Student) verweist Wie ermittelt man, ob ein Objekt zu einer bestimmten Klasse gehört?

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0332 Ermittlung der Klassenzugehörigkeit Wie ermittelt man, ob ein Objekt zu einer bestimmten Klasse gehört? Operator instanceof Syntax: referenzvariable instanceof Klassenname liefert true, wenn referenzvariable auf ein Objekt der Klasse Klassenname oder einer Unterklasse von Klassenname verweist Beispiel (Student Unterklasse von Person): Person p = new Person(); Student s = new Student(); Object o = p; if( o instanceof Person )... //liefert true if( o instanceof Student )... //liefert false o = s; if( o instanceof Person )... //liefert true if( o instanceof Student )... //liefert true Object Person Student

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0333 Bsp: Suchen nach Matrikelnummer Beispiel: In dem Hochulsportarray (Elementtyp: Person) soll der Student mit der Matrikelnummer 1234 gesucht werden Person [] hsspArray = new Person[200]; hsspArray[0] = new Student("Schmitz"); hsspArray[1] = new Mitarbeiter("Meyer"); hsspArray[2] = new Person("Schulz"); //Durchsuchen nach Student mit Matrikelnr 1234 for(int i = 0 ; i < hsspArray.length ; i = i + 1) { if( hsspArray[i] instanceof Student) { Student s = (Student) hsspArray[i]; //Typkonvert. if( s.matrikelnr == 1234 ).... }

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0334 Übungsaufgabe Schreibt ein Programm, das in dem Hochschulsportarray (Elementtyp: Person) die Anzahl der Studenten ermittelt. Hinweise: – Person [] hsspArray = new Person[200]; –hsspArray[0] = new Student("Schmitz");