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

2 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/022 Übersicht Besprechung der Übungsaufgabe Klassenvariablen (static variables) Klassenmethoden (static methods) Überladen von Methoden Einarbeitung in Klassen der Java-Bibliothek am Beispiel der Klasse String

3 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/023 Übungsaufgabe vom Verbinden Sie die beiden Programme „Autsch“ und „Textuelle Zahlenausgabe“ der 3. bzw. 5. Vorlesung. Entwickeln Sie dazu zwei Klassen in eigenen Dateien: –Die Klasse „Zahlenobjekt“ soll Objekte für ganzzahlige Zahlen zwischen 0 und 999 bereitstellen. Die textuelle Ausgabe soll über eine Methode aufrufbar sein. –Die Klasse „Autsch“ soll anstelle einer int-Zahl und der Methode System.out.print auf die Klasse „Zahlenobjekt“ zurückgreifen.

4 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/024 Lösungsvariante 1 siehe Zahlenobjekt1.java und Autsch1.java

5 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/025 Klassenvariablen Klassenvariablen sind nicht Teil von Objekten, sondern existieren nur einmal pro Klasse  Speicherung Klassen-globaler Informationen (z.B. Anzahl der Instanzen einer Klasse) Deklaration erfolgt (genau wie bei Instanzvariablen) innerhalb der Klassendefinition Syntax: class Klassenbezeichner { static Typ Variablenbezeichner ;... // ab hier Methodendefinitionen }

6 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/026 Zugriff auf Klassenvariablen Zugriff auf Klassenvariablen ist auch ohne die Existenz von Instanzen der Klasse möglich Der Zugriff erfolgt a) im Regelfall über den Klassenbezeichner b) oder wie bei Instanzvariablen über eine Referenzvariable, die auf ein Objekt der Klasse verweist Syntax zu Fall a): Klassenbezeichner.Variablenbezeichner Beispiel: Klasse MyClass besitzt Klassenvariable v1; v1 soll auf den Wert 20 gesetzt werden: MyClass.v1 = 20;

7 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/027 Übung im GIS-Labor Ergänzen Sie die Klasse Zahlenobjekt1 um eine statische Variable, die die Anzahl der erzeugten Objekte mitzählt. Tip: Der Konstruktor wird bei jeder neuen Instanz aufgerufen! Ergänzen Sie das Programm Autsch1.java, so dass vor Programmende noch die Anzahl der erzeugten Objekte ausgegeben wird.

8 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/028 Zusammenfassung Variablen (I) Es gibt generell 2 Arten von Variablen 1.Einfache Variablen (primitive Datentypen) –beinhalten den Wert –Initialisierung durch Zuweisen eines Wertes des entsprechenden Typs 2.Referenzvariablen –Referenzieren („zeigen auf“) ein Objekt –Initialisierung durch Instantiierung eines Objekts der entsprechenden Klasse und Zuweisung des Rückgabewertes von new Klasse(...) Zuweisung des Inhalts einer anderen Referenzvariablen der gleichen Klasse Zuweisung von null, falls aktuell auf kein Objekt verwiesen wird

9 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/029 Zusammenfassung Variablen (II) Beide Arten von Variablen können auf folgende Weisen verwendet werden: lokale Variable –Existiert nur innerhalb einer Methode bzw. eines Blockes –wird bei jedem Methodenaufruf neu angelegt und am Methodenende gelöscht –auch die formalen Parameter einer Methode stellen lokale Variablen dar Instanzvariable –Zur Speicherung des Zustands / der Eigenschaften eines Objekts –Jede Instanz besitzt eine eigene Instanzvariable Klassenvariable –Zur Speicherung Klassen-globaler / Instanz-übergreifender Informationen –Existiert pro Klasse (und damit unabhängig von Instanzen der Klasse) nur einmal

10 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0210 Zusammenfassung Variablen (III) Lebensdauer Lokale Variable: –vom Zeitpunkt der Deklaration bis zum Ende des aktuellen Blocks (spätestens am Methodenende) Instanzvariable –gleiche Lebensdauer wie das Objekt (wird mit dem Objekt erschaffen und mit Terminierung des Objekts gelöscht) Klassenvariable –Ab dem ersten Zugriff auf die Klasse (durch Instantiierung eines Objekts oder Aufruf einer statischen Methode)

11 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0211 Zusammenfassung Variablen (IV) Sichtbarkeit innerhalb einer Klasse lokale Variable –nur innerhalb des Blockes, in dem sie deklariert wurde (auf jeden Fall nur innerhalb einer Methode) –verdeckt u.U. Instanz- oder Klassenvariablen  Zugriff auf gleichnamige Instanzvariablen über this.-Referenz Instanzvariable –innerhalb des Objekts selbst (also nicht in Klassenmethoden) Klassenvariablen –in allen Objekten und Methoden der Klasse sichtbar

12 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0212 this-Referenz (I) Soll explizit auf Instanzvariablen eines Objektes zugegriffen werden (z.B. zur Sicherstellung, dass keine gleichnamige lokale Variable angesprochen wird), so wird dem Variablennamen ein this. vorangestellt. Beispiel: class Test { int zahl; // Instanzvariable Test (int zahl) { // Konstruktor this.zahl = zahl; } } Der formale Parameter zahl ist eine lokale Variable und verdeckt die gleichnamige Instanzvariable. Der Zugriff ist nur über this. möglich.

13 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/ Lösungsvariante zur Übungsaufgabe siehe Zahlenobjekt1.java und Autsch2.java

14 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/ Lösungsvariante zur Übungsaufgabe siehe Zahlenobjekt3.java und Autsch3.java

15 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0215 Klassenmethoden Klassenmethoden beziehen sich nicht auf ein bestimmtes Objekt, sondern nur auf die Klasse  der Aufruf von Klassenmethoden ist unabhängig von der Existenz von Instanzen der Klasse Definition von Klassenmethoden erfolgt über das Voranstellen des Modifikators static vor der Methodendefinition Syntax: class Klassenbezeichner { static Rückgabetyp Methodenbezeichner (Parameterliste) {... } }

16 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0216 Aufruf von Klassenmethoden Aufruf der Klassenmethode erfolgt über den Klassennamen: Klassenbezeichner.Methodenbezeichner (Parameterliste) es ist auch möglich (aber eher unüblich), Klassenmethoden über eine Referenz auf ein Objekt aufzurufen (wie Instanzmethoden) –Instanzmethoden sind jedoch nur über eine Referenz auf ein Objekt aufrufbar

17 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/ Lösungsvariante zur Übungsaufgabe mittels einer Klassenmethode siehe Zahlenobjekt4.java und Autsch4.java

18 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0218 Signatur von Methoden Identifikation einer auszuführenden Methode erfolgt nicht ausschliesslich über den Methodenbezeichner, sondern über ihre Signatur Signatur einer Methode besteht aus –Methodenbezeichner –Liste der Datentypen der formalen Parameter (die Reihenfolge spielt dabei eine Rolle) Beispiel: int meineMethode1(int par1, char par2) {... }

19 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0219 Überladen von Methoden Überladen (engl. Overloading): Definition gleichnamiger Methoden innerhalb einer Klasse mit unterschiedlichen Parameterlisten –„der Methodenname ist mehrfach (über-)belegt“ –Die Zuordnung von Methodenaufruf und auszuführender Methode wird vom Compiler über die Signatur entschieden –zwei Methoden mit gleichen Signaturen, aber verschiedenen Rückgabetypen sind nicht möglich Mittels Überladen kann ein Objekt auf Botschaften (Aufruf seiner Methoden aus anderen Objekten) in Abhängigkeit der Datentypen ihrer Parameter angemessen reagieren.

20 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0220 Beispiele für das Überladen von Methoden Beispiel: int addition(int a, int b) { return a+b; } double addition(double a, double b) { return a+b; } Bei einem Aufruf int wert=addition(4,6); würde diese Methode ausgeführt Bei einem Aufruf double wert=addition(4.7,6.0); würde diese Methode ausgeführt

21 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0221 Beispiele für das Überladen von Methoden Beispiele aus Java-Klassenbibliothek: –Methoden der Klasse Math sind wie oben für verschiedene Datentypen definiert –Die Methode System.out.println(...) ist auch für verschiedene Datentypen unterschiedlich definiert Beispiel: int addition(int a, int b) { return a+b; } double addition(double a, double b) { return a+b; }

22 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0222 Arbeiten mit Zeichenketten - die Klasse String siehe Java-Online-Dokumentation

23 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0223 Übungsaufgabe Stichwort: selbstständiges Arbeiten mit der Java-Dokumentation Aufgabe: Schreiben Sie ein Programm, das Ihren Vor- und Nachnamen mit einem Leerzeichen getrennt einer String-Variablen zuweist. Leiten Sie aus diesem String folgendes durch entsprechende Methoden der Klasse String ab: –einen String, der nur den Vornamen enthält –einen String, der nur den Nachnamen enthält –einen String mit Nach- und Vornamen (mit Leerzeichen) –die Anzahl der Buchstaben des Strings


Herunterladen ppt "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 2001/2002."

Ähnliche Präsentationen


Google-Anzeigen