Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Einführung in die Programmierung mit Java

Ähnliche Präsentationen


Präsentation zum Thema: "Einführung in die Programmierung mit Java"—  Präsentation transkript:

1 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 Java 9. Vorlesung WS 2002/2003

2 Letzte 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. IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

3 Vererbung (Wdh.) - bei Methoden -
public class Person{ ... public void ausgabe(){ System.out.println(“Person“); } Person p = new Person(); p.ausgabe(); ? public class Dozent extends Person{ } Dozent d = new Dozent(); d.ausgabe(); ? IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

4 Vererbung (Wdh.) - bei Methoden -
public class Person{ ... public void ausgabe(){ System.out.println(“Person“); } Person p = new Person(); p.ausgabe();  Person public class Dozent extends Person{ } Dozent d = new Dozent(); d.ausgabe();  Person IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

5 Polymorphie (Überlagern) - Methoden -
public class Person{ ... public void ausgabe(){ System.out.println(“Person“); } Person p = new Person(); p.ausgabe(); ? public class Dozent extends Person{ ... public void ausgabe(){ System.out.println(“Dozent“); } Dozent d = new Dozent(); d.ausgabe(); ? IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

6 Polymorphie (Überlagern) - Methoden -
public class Person{ ... public void ausgabe(){ System.out.println(“Person“); } Person p = new Person(); p.ausgabe();  Person public class Dozent extends Person{ ... public void ausgabe(){ System.out.println(“Dozent“); } Dozent d = new Dozent(); d.ausgabe();  Dozent IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

7 Polymorphie (Überlagern) - dynamisches Binden -
public class Person{ ... public void ausgabe(){ System.out.println(“Person“); } Person p = new Person(); p.ausgabe(); ? public class Dozent extends Person{ ... public void ausgabe(){ System.out.println(“Dozent“); } Person p = new Dozent(); p.ausgabe(); ? IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

8 Polymorphie (Überlagern) - dynamisches Binden -
public class Person{ ... public void ausgabe(){ System.out.println(“Person“); } Person p = new Person(); p.ausgabe();  Person public class Dozent extends Person{ ... public void ausgabe(){ System.out.println(“Dozent“); } Person p = new Dozent(); p.ausgabe();  Dozent IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

9 Polymorphie (Überlagern) - dynamisches Binden -
public class Person{ ... public void ausgabe(){ System.out.println(“Person“); } Person p = new Person(); p.ausgabe();  Person public class Dozent extends Person{ ... public void ausgabe(){ System.out.println(“Dozent“); } Person p = new Dozent(); p.ausgabe();  Dozent die Klasse des Objektes bestimmt die Methode nicht die Klasse der Referenzvariable IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

10 dynamisches Binden - ... und warum ? -
public class Universitaet{ private Person[ ] angehoerige; ... public void ausgabe(){ for( int i = 0; i < angehoerige.length; i++){ angehoerige[ i ].ausgabe(); } nachträgliche Ergänzungen der Klassenhierarchie erfordert nicht, dass die Routine zur Ausgabe geändert werden muss IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

11 dynamisches Binden - ... und warum ? -
public class Universitaet{ private Person[ ] angehoerige; ... public void ausgabe(){ for( int i = 0; i < angehoerige.length; i++){ angehoerige[ i ].ausgabe(); } nachträgliche Ergänzungen der Klassenhierarchie erfordert nicht, dass die Routine zur Ausgabe geändert werden muss Eine Überlagerung der Ausgabemethode der neuen Unterklasse ist notwendig , wenn diese etwas Abweichendes von der Oberklasse ausgeben soll ! IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

12 Typ des Objektes prüfen - der instanceof Operator -
Syntax : variablenname instanceof Klasse instanceof liefert ein Ergebnis vom Typ boolean Beispiel : public class Universitaet{ private Person[ ] angehoerige; ... public void studentenausweise_anzeigen(){ for( int i = 0; i < angehoerige.length; i++){ if( angehoerige[ i ] instanceof Student){ ((Student) angehoerige[ i ]).ausweis(); } }}} IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

13 Polymorphie (Überlagern) - Aufruf überlagerter Methoden -
public class Person{ ... public void ausgabe(){ System.out.println(“Person“); } Person p = new Person(); p.ausgabe();  Person public class Dozent extends Person{ public void ausgabe(){ System.out.print(“Ein Dozent“); System.out.print(“ ist eine “); super.ausgabe(); } Person p = new Dozent(); p.ausgabe();  Ein Dozent ist eine Person IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

14 Polymorphie - kurz und knapp -
Eine Methode einer Oberklasse wird genau dann überlagert, wenn die Unterklasse eine Methode hat : mit dem Name der Methode der Oberklasse, mit der Anzahl der Parameter dieser Methode, und den gleichen Typen von Parametern bei überlagerten Methoden findet keine Vererbung statt überlagerte Methoden der direkten Oberklasse können mit super.methodenname( parameter); aufgerufen werden, Konstruktoren, aus Konstruktoren heraus, mit super(parameter); ! dieser Aufruf muss als erste Anweisung im Konstruktor erfolgen ! IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

15 Abstrakte Klassen - abstract class -
eine Klasse muss abstrakt sein, wenn sie mindestens eine abstrakte Methode hat. Eigenschaften : abstrakte Klassen können nicht instanziert werden Unterklassen von abstrakten Klassen müssen solange abstrakt sein, wie sie nicht alle abstrakten Methoden ihrer Oberklassen implementieren oder selbst abstakte Methoden aufweisen abstrakte Klassen können Attribute, Methoden, abstrakte Methoden und Konstruktoren enthalten IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

16 Abstrakte Klassen - abstract class -
Syntax : abstract class klassenname { ... } IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

17 Abstrakte Methoden eine Methode kann abstrakt sein, in diesem Fall muss auch die Klasse abstrakt sein. Eigenschaften : abstrakte Methoden besitzen keinen Rumpf abstrakte Methoden besitzen 0 oder mehr Parameter (wie normale Methoden) Syntax : abstract rueckgabetyp methodenname ( Parameter); IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

18 Abstrakte Klassen & Methoden - Beispiel -
abstract public class Dozent extends Person { public String titel; public String lehrstuhl; public String[] vorlesungen; public Dozent(String _titel, String _vorname, String _nachname, String _lehrstuhl, String[] _vorlesungen){ titel = _titel; vorname = _vorname; nachname = _nachname; lehrstuhl = _lehrstuhl; vorlesung = _vorlesung; } abstract public void ausgabe(); IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

19 Package - denn Ordnung muss sein ! -
Pakete dienen zur Strukturierung von Programmen oberhalb von Klassen. Jedes Paket bildet einen eigenen Namensraum Innerhalb eines Namensraumes dürfen keine gleichnamigen Klassen existieren ergo: in unterschiedlichen Paketen dürfen identische Namen für Klassen vergeben werden. Pakete bilden eigene Bereiche für den Zugriffsschutz IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

20 Package - Struktur - Packages entsprechen Verzeichnissen, in denen man seine Klassen ablegt. eine Klasse, die zu einem Package gehört enthält am Dateianfang immer eine Zeile mit der Syntax : package package_name; z.B. package personen; personen package personen.gemeinschaft; personen/gemeinschaft Verzeichnis IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

21 Package - Struktur - Packages sind relativ zum Hauptverzeichnis !!
in Forte entspricht das Hauptverzeichnis dem Verzeichnis welches ihr mit „MOUNT DIRECTORY“ geöffnet habt. dieses bezeichnet man auch als Default-Package Klassen im Default-Package besitzen keinen Packagenamen ! IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

22 Package - Zugriff - innerhalb eines Packages: Es stehen alle Klassen dieses Packages, wie bisher zur Verfügung. auf eine Klasse X in einem anderem Package P: mit P.X (z.B. personen.Person) mit X, (z.B. Punkt2D), wenn die Klasse P.X importiert wird: import P.X; z.B. import personen.Person; mit X, (z.B. Punkt2D), wenn ein ganzes Package importiert wird: import P.*; z.B. import personen.*; import-Anweisungen stehen im Quelltext immer nach package-Anweisungen und vor der Klasse IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

23 Package - Beispiel (zu innerhalb) -
package personen; public class Person{ ... public void ausgabe(){ ... } } package personen; public class Familie{ private Person[ ] eltern; ... } IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

24 Package - Beispiel (zu 1.) -
package personen; public class Punkt2D{ ... public void ausgabe(){ ... } } package personen.gemeinschaft; public class Familie{ private personen.Person[ ] eltern; ... } IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

25 Package - Beispiel (zu 2.) -
package personen; public class Person{ ... public void ausgabe(){ ... } } package personen.gemeinschaft; import personen.Person; public class Familie{ private Person[ ] eltern; ... } // nur eine Klasse importieren IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

26 Package - Beispiel (zu 3.) -
package personen; public class Person{ ... public void ausgabe(){ ... } } package personen.gemeinschaft; import personen.*; public class Familie{ private Person[ ] eltern; ... } // alle Klassen importieren IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

27 Package - mit Forte erzeugen -
Kontextmenu zu einem Verzeichnis erreichbar über einen Klick mit der rechten Maustaste auf das Verzeichnis ( z.B. U:\JAVA ) New Package IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

28 Package - im JDK enthaltene -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

29 Parameter & lokale Variablen einer Methode
Namen von Parametern dürfen nicht als Namen für lokale Variablen benutzt werden !! Parameter können innerhalb ihrer Methode wie lokale Variablen benutzt werden Werte, die nur in Parametern oder lokalen Variablen gespeichert sind, gehen am Ende der Methode verloren !! Sie können nur innerhalb ihrer Methode benutzt werden IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

30 Parameter & lokale Variablen einer Methode und Attribute
Attribute dürfen die gleichen Namen haben, wie Parametern oder lokale Variablen Parameter und lokale Variablen verdecken innerhalb einer Methode Attribute, die den gleichen Namen tragen verdeckte Attribute können innerhalb der Methode mittels this.attributsname angesprochen werden Punkt 1 bis 3 gelten auch für Konstruktoren !! mittels this(parameter); können die Konstruktoren der Klasse von anderen Konstruktoren der selben Klasse genutzt werden. IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

31 Zugriffsspezifikation
Zugriffsspezifikation regeln welche Klassen, Attribute und Methoden wo verwendet werden können, daher differenziert für Klassen, Methoden und Attribute Wichtiges Konzept der Objektorientierung: Geheimnisprinzip: Verbergen von Details der Implementierung, Zugriff nur über klar definierte Schnittstellen IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

32 Zugriffsspezifikation - public, protected, friendly, private -
Zugriffsspezifikationen : public: Zugriff von allen Klassen protected: Zugriff von Klassen im selben Paket und Zugriff von Unterklassen in anderen Paketen keine Spezifikation (== friendly): Zugriff von Klassen im selben Paket, aber kein Zugriff von Unterklassen in anderen Paketen private: Zugriff nur innerhalb derselben Klasse geheimer IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

33 Zugriffsspezifikation - Beispiel -
public class Vieleck{ private Punkt2D[ ] punkte; public Vieleck( int anz_pkt){ punkte = new Punkt2D[anz_pkt]; } public void ausgabe(){ System.out.println(“Vieleck“); String toString(){ return(“Vieleck“); Zugriffsspezifikationen stehen vor dem Schlüsselwort „class“, dem Typ des Attributs oder dem Rückgabetyp der Methode IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

34 ausgewählte Attribute - von Klassen, Methoden und Attributen -
Zugriffsspezifikation (public, protected oder private) abstract (nur für Methoden und Klassen) static (nur für Methoden und Attribute und nie zusammen mit abstract) Syntax : attribut(e) class Vieleck{ ... } Syntax : attribut(e) rueckgabetyp methodenname( parameter){ ... } die Reihenfolge der Attribute untereinander ist beliebig z.B public abstract == abstract public IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

35 Übungsaufgabe Erstellt eine abstrakte Klasse GeometrischeFigur mit der abstrakter Methode umfang() und mit der Methode umfang_ausgeben(). Erstellt eine Unterklasse Kreis Erstellt eine Unterklasse Dreieck Erzeugt 5 geometrische Figuren (Kreise oder Dreiecke) und lasst den Umfang alle Objekte ausgeben. IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04

36 Hausaufgabe Erstellt eine Unterklasse Vieleck der Klasse GeometrischeFigur und ergänzt die Klasse GeometrischeFigur um die abstrakte Methode geometrietypAusgeben(); Erstellt eine Unterklasse Dreieck der Klasse Vieleck Erstellt eine Unterklasse Quadrat der Klasse Vieleck Erstellt eine Klasse GeometrieSammlung, die GeometrischeFiguren aufnimmt und eine Methode hat, die den Umfang und den Geometrietyp jeder enthaltenen Figur ausgibt. IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04


Herunterladen ppt "Einführung in die Programmierung mit Java"

Ähnliche Präsentationen


Google-Anzeigen