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.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Einführung in die Programmierung Zusammenfassung
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Konstruktoren.
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Objekte und Arbeitsspeicher
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Einführung in die Programmierung mit Java
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 7. Vorlesung WS 2002/2003.
Diskrete Mathematik I Vorlesung Arrays-
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
Programmieren mit JAVA
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
Zusammenfassung Vorwoche
DVG Einführung in Java1 Einführung in JAVA.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Programmierung im Netz und Internet: Einführung in die Programmiersprache Java Teil I 1 Klassen Objekte von.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
IT2 – WS 2005/20061Oct 10, 2005 Externes Verhalten – Quelltext (source code) Durch Aufrufe der Konstruktoren und Methoden kann das externe Verhalten (=die.
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Objektorientiertes Konstruieren
Variablenkonzept Klassisch, in Java Basistyp
Parameterübergabemechanismen für den Methodenaufruf
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
Programmiervorkurs WS 2014/15 Instanzmethoden
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
Java-Kurs - 3. Übung Hausaufgabe Arrays For-Schleifen.
Diskrete Mathematik I Vorlesung 2 Arrays.
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
Einführung in die Programmierung mit Java
Einführung in die Programmierung mit Java
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
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. 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. 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.
Einführung in die Programmierung mit Java
Java Programme nur ein bisschen objektorientiert.
Tutorium Software-Engineering SS14 Florian Manghofer.
C++ FÜR cOMPUTERSPIELENTWICKLER
Tutorium Software-Engineering SS14 Florian Manghofer.
Konstruktoren.
Java-Kurs Übung Grafik in Java - das Abstract Windowing Toolkit
Java-Kurs - 5. Übung Das Paradigma der Objektorientierung (OO)
Java-Kurs - 2. Übung primitive Datentypen, Konstanten
Einführung in die Programmierung mit Java
Grundkurs Informatik 11-13
Von Cem, Maurice und lars
Es gibt Klassen, die mit der Entwicklungsumgebung ausgeliefert werden
Implementieren von Klassen
 Präsentation transkript:

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

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/022 Übersicht Besprechung der Hausaufgabe Statische Attribute (Klassenvariablen) Statische Methoden (Klassenmethoden) Die vordefinierte Klasse String Überladen von Methoden Einarbeitung in Klassen der Java-Bibliothek am Beispiel der Klasse String

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/023 Statische Attribute die bisher behandelten Attribute (nicht-statische Attribute) existieren einmal pro Instanz nicht möglich, Informationen zur Klasse abzuspeichern (z.B. Anzahl der Instanzen) statische Attribute: existieren einmal pro Klasse, für alle Instanzen derselbe Wert Zweck: Speicherung Klassen-globaler Informationen Syntax: class Klassenbezeichner { static Typ Variablenbezeichner ;... }

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/024 Zugriff auf statische Attribute Zugriff auf nicht-statische Attribute: –Referenzvariable.attribut –es muss Instanz der Klasse (Referenzvariable) existieren Zugriff auf statische Attribute: –Klassenname.attribut –es muss nicht unbedingt eine Instanz der Klasse existieren –falls Instanz der existiert: Referenzvariable.attribut –oder innerhalb der Klasse: attribut Beispiel: class MeineKlasse { static int v1; } MeineKlasse.v1 = 40 ;

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/025 Beispiel für Nutzung statischer Attribute class Punkt{ static int anzahl; //statisches Attribut: Anzahl //der Instanzen Punkt(){ anzahl = anzahl + 1; }..... System.out.println(„Anzahl Punkte: „ + Punkt.anzahl); //Ausgabe: 0 Punkt p1 = new Punkt(); Punkt p2 = new Punkt(); System.out.println(„Anzahl Punkte: „ + Punkt.anzahl); //Ausgabe: 2

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/026 Statische Methoden die bisher behandelten Methoden (nicht-statische Methoden) –werden für eine Instanz aufgerufen –haben Zugriff auf alle Attribute der Instanz statische Methoden werden –für eine Klasse, nicht für eine Instanz aufgerufen –haben keinen Zugriff auf (nicht-statische) Attribute einer Instanz –haben Zugriff auf statische Attribute der Klasse Definition: Voranstellen von static vor der Definition: class Klassenbezeichner { static Rückgabetyp Methodenbezeichner (Parameterliste) {... } }

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/027 Aufruf von statischen Methoden Aufruf von nicht-statischen Methoden: –Referenzvariable.methode() –es muss Instanz der Klasse (Referenzvariable) existieren Zugriff auf statische Attribute: –Klassenname.methode() –es muss nicht unbedingt eine Instanz der Klasse existieren –falls Instanz der existiert: Referenzvariable.methode –oder innerhalb der Klasse: methode Beispiel: class MeineKlasse { static int methode(){ } int i = MeineKlasse.methode();

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/028 Bekannte Beispiele für statische Methoden public static main... –wird vom System aufgerufen, obwohl nie eine Instanz der zugehörigen Klasse erzeugt wird Math.sin(double w)

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

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0210 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) {... }

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

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

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0213 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; }

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0214 Nutzung von Methoden: die Klasse String Zweck: Speicherung und Bearbeitung von Zeichenketten (Wörter, Sätze) Beispiel: String s1 = "Das ist das Haus"; String s2 = "Nikolaus."; String s3 = s1 + " vom " + s2; //in s3 steht:"Das ist das Haus vom Nikolaus."; String s4 = s3.substring(12,16); // in s4 steht: "Haus„ Strings sind konstant (können nicht geändert werden) –sie müssen nicht mit new erzeugt werden

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0215 Die Klasse String Erzeugung einer Instanz: –String variable = “Zeichenkette“; Operator +: Konkatenation von Zeichenketten –String s1 = “ABC“ + variable + “DEF“; Nützliche Methoden der Klasse String: –“Geoinformation“.length() liefert 14 –“A B C D“.trim() liefert “ABCD“ –"Geoinformation".substring(3,7) liefert "info“ –"Institution".indexOf("ti") liefert 3 Weitere Methoden: JavaDoc

T. H. Kolbe - Einführung in die Programmierung mit Java - 1. Semester - WS 01/0216 Übungsaufgabe Schreibt ein Programm, das euren Vor- und Nachnamen mit einem Leerzeichen getrennt einer String-Variablen zuweist. Leitet aus diesem String durch entsprechende Methoden der Klasse String folgendes ab: –einen String, der nur den Vornamen enthält –einen String, der nur den Nachnamen enthält –einen String mit Nach- und Vornamen (mit Komma dazwischen) –die Anzahl der Buchstaben des Strings (ohne Leerzeichen) Das Programm soll natürlich für jeden Vor- und Nachnamen funktionieren.....

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

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

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

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

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

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

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

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

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

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