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 6. 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 6. 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 6. Vorlesung WS 2001/2002 Vorläufige Version! fehlende Folien werden noch nachgereicht

2 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/022 Übersicht Besprechung der Übungsaufgabe Referenzvariablen Methoden im Detail –Parameterübergabe –Lokale Variablen –Konstruktoren Klassen aus verschiedenen Dateien verwenden

3 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/ Übungsaufgabe vom Entwerfen und Implementieren Sie analog zur Definition von Rechtecken die Klassendefinitionen für Dreiecke, Kreise, Ellipsen und Trapeze. Als Methoden sollten mindestens die Flächenberechnung und die textuelle Ausgabe der Variableninhalte zur Verfügung gestellt werden. Lösungsansatz: Wiederverwendung großer Teile der Klasse Rechteck.

4 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/024 Lösung zur 1. Aufgabe: Ausgangspunkt ist die Klasse Rechteck class Rechteck { double breite, höhe;// Instanzvariablen (jedes Objekt der Klasse // Rechteck hat jeweils eigene Variablen) // Methode zur Berechnung des Flächeninhalts double fläche () { // keine Parameter; Rückgabewert vom Typ double double flächeninhalt;// lokale Variable (ex. nur in der Methode) flächeninhalt=breite*höhe; // Berechnung anhand der Instanzvariablen return flächeninhalt; // Rückgabe des berechneten Wertes } // Methode zur Ausgabe des Objekts (als Text) void ausgeben() {// keine Parameter; kein Rückgabewert System.out.println("Dieses Rechteck hat folgende Eigenschaften:"); System.out.print("Breite: "); System.out.println(breite); System.out.print("Höhe: "); System.out.println(höhe); System.out.print("Fläche: "); System.out.println(fläche());// hier steckt ein Methodenaufruf! } Diese Stellen müssen für die Erstellung der Klassen Dreieck, Kreis etc. angepasst werden.

5 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/025 Lösung zur 1. Aufgabe: Klasse Kreis class Kreis { double radius;// Instanzvariable (jedes Objekt der Klasse // Rechteck hat jeweils eine eigene Variable) // Methode zur Berechnung des Flächeninhalts double fläche () { // keine Parameter; Rückgabewert vom Typ double double flächeninhalt;// lokale Variable (ex. nur in der Methode) flächeninhalt=Math.PI*radius*radius; return flächeninhalt; // Rückgabe des berechneten Wertes } // Methode zur Ausgabe des Objekts (als Text) void ausgeben() {// keine Parameter; kein Rückgabewert System.out.println("Dieser Kreis hat folgende Eigenschaften:"); System.out.print("Radius: "); System.out.println(radius); System.out.print("Fläche: "); System.out.println(fläche());// hier steckt ein Methodenaufruf! }

6 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/ Übungsaufgabe vom Entwerfen Sie die Klasse Student, die alle zur Verwaltung eines Studentenregisters wesentlichen Informationen beinhaltet. a)Welche Methoden können Sie sich dazu vorstellen? b)Welche Informationen (Variablen & Methoden) sind auch auf Dozenten oder Verwaltungsangestellte anwendbar?

7 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/027 Wdh.: Klassen und Objekte Klassen definieren allgemeine Eigenschaften (z.B. Definition geometrischer Figuren oder den Bauplan für ein Haus) Von einer Klasse können Objekte (Instanzen) erzeugt werden (konkrete Ausprägung einer Klasse, z.B.: Rechteck mit Seitenlängen 10 und 7.5; oder das Beethoven-Haus)

8 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/028 Referenzvariablen Bisher: normale Variablen –Stehen als Platzhalter für Werte –Normale Variable beinhaltet ihren Wert radius 2.7

9 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/029 Referenzvariablen Bisher: normale Variablen –Stehen als Platzhalter für Werte –Normale Variable beinhaltet ihren Wert Referenzvariablen zeigen auf Objekte; sie enthalten nicht selber das Objekt radius 2.7 kreis1? Instanz von Kreis radius 2.7

10 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0210 Referenzvariablen Bisher: normale Variablen –Stehen als Platzhalter für Werte –Normale Variable beinhaltet ihren Wert Referenzvariablen zeigen auf Objekte; sie enthalten nicht selber das Objekt –Referenzvariablen, die auf kein konkretes Objekt verweisen, sollte der Wert null zugewiesen werden (z.B. direkt bei der Deklaration) Beispiel: Kreis kreis2 = null; radius 2.7 kreis1? Instanz von Kreis radius 2.7 kreis2

11 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0211 Referenzvariablen - Beispiel Beispiel: Kreis kreis1, kreis2; kreis1 = new Kreis(); kreis1.radius = 1.0; kreis2 = kreis1; kreis2.radius = 2.5; kreis1.ausgeben(); kreis1? kreis2? Instanz von Kreis radius? Deklaration zweier Referenzvariablen Instantiierung eines Objekts Kopieren der Referenz (nicht des Objekts!!!) Initialisierung der Instanzvariablen Neuer Wert für Instanzvariable, da kreis2 und kreis1 dasselbe Objekte bezeichnen!!! Ausgabe: Kreis hat Radius 2.5 Fazit: Zum Kopieren von Objekten oder Erzeugen neuer Objekte reicht es nicht, die Referenzen zu kopieren Zum Vergleich zweier unterschiedlicher Objekte reicht es nicht auf Gleichheit der Referenzen zu prüfen Fazit: Zum Kopieren von Objekten oder Erzeugen neuer Objekte reicht es nicht, die Referenzen zu kopieren Zum Vergleich zweier unterschiedlicher Objekte reicht es nicht auf Gleichheit der Referenzen zu prüfen

12 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0212 Methoden im Detail

13 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0213 Methoden - Lokale Variablen Variablen, die innerhalb von Methoden deklariert werden heißen lokale Variablen. Lokale Variablen werden bei jedem Aufruf einer Methode neu angelegt und existieren nur für die Zeitdauer der Abarbeitung der Methode. Im Gegensatz: Die evtl. innerhalb einer Methode erzeugten Objekte bestehen fort über die Methodenabarbeitung hinaus. –Aber: sollten alle Referenzen auf neue Objekte entfallen, weil am Ende einer Methode alle lokalen Referenzvariablen Aufhören zu existieren, so werden auch diese Objekte gelöscht.

14 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0214 Methoden - Parameterübergabe Definition der Parameterliste Formale Parameter Aktuelle Parameter Rückgabewerte

15 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0215 Konstruktoren (I) Konstruktoren sind spezielle Methoden, die implizit bei der Erzeugung von Objekten aufgerufen werden è Zweck: Initialisierungen (u.a. von Instanzvariablen) –Methodenname entspricht dem Klassennamen –keine Angabe des Rückgabewerts Beispiel: Konstruktor für die Klasse Kreis Kreis(double r) { radius = r; }

16 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0216 Konstruktoren (II) Aufruf von Konstruktoren geschieht automatisch bei der Instantiierung von Objekten Beispiel: Kreis kreis1; kreis1 = new Kreis(3.5); Wird kein Konstruktor definiert, so verwendet Java den voreingestellten eingebauten Standardkonstruktor –Aufruf mit leerer Parameterliste: kreis1 = new Kreis(); Anmerkung zu Forté: Bei der Neuerstellung einer Klasse in Forté wird automatisch das Gerüst für einen Konstruktor mitgeneriert.

17 T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0217 Programme mit mehreren Klassen

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


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

Ähnliche Präsentationen


Google-Anzeigen