einführung in die programmierung mit java 5. vorlesung ws 2002/2003 institut für kartographie und...
Post on 06-Apr-2016
217 Views
Preview:
TRANSCRIPT
Einführung in die Programmierung mit Java
5. Vorlesung WS 2002/2003
Institut für Kartographie und GeoinformationProf.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag
objektorientiertes Programmieren
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Vorstellung wie in der realen Welt:
die Tür
Objekt
objektorientiertes Programmieren
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Vorstellung wie in der realen Welt:
die Tür
• Höhe = 2.0 m• Breite = 0.7 m• u.a.m
Objekt
hat
Attribute
objektorientiertes Programmieren
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Vorstellung wie in der realen Welt:
die Tür
kannman
• Höhe = 2.0 m• Breite = 0.7 m• u.a.m
Objekt
hat
Attribute Methoden
• aufschließen• zuschließen• öffnen• schließen• u.a.m
objektorientiertes Programmieren
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Vorstellung wie in der realen Welt:
die Tür
kannman
• Höhe = 2.0 m• Breite = 0.7 m• u.a.m
Objekt
hat
Attribute Methoden
• aufschließen• zuschließen• öffnen• schließen• u.a.m
Eigenschaften
objektorientiertes Programmieren- Prinzipien -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
1. Abstraktion
jede Tür
Konzept Umsetzung
diese Tür
Klasse Objekt einer Klasse
klare Trennung zwischen :
und
oder auch :alle Objekte mit gleichen Eigenschaften gehören zu einer Klasse Klassenbildung
objektorientiertes Programmieren- Prinzipien -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
1. Abstraktion2. Kapselung
• Zugriff auf die Attribute eines Objektsi.d.R. nur über seine Methoden
• Verbergen unwichtiger Details
damit man z.B. eine abgeschlossene Türnicht öffnen kann ohne sie aufzuschließen !
z.B. die genaue Konstruktion des Schlosses
objektorientiertes Programmieren- Prinzipien -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
1. Abstraktion2. Kapselung3. Vererbung
4. Polymorphismusspäter ...
Java - Klassen
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Klassen besitzen : • einen Klassennamen
Syntax :class Klassenname {
...}
• immer nur eine Klasse je Datei
• der Dateiname ist immer Klassenname.java
Java - Klassen
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Klassen besitzen : • einen Klassennamen
Syntax :class Klassenname {
...}
Beispiel :class Punkt2D {
...}
Java - Klassen- Deklaration von Attributen -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Klassen besitzen : • einen Klassennamen• beliebig viele Attribute
Syntax :class Klassenname {
typ attributsname;...
}
Java - Klassen - Deklaration von Attributen -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Klassen besitzen : • einen Klassennamen• beliebig viele Attribute
Syntax :class Klassenname {
typ attributsname;...
}
Deklaration von Attributenfür jedes Objekt (Instanz) der Klasse:• gleiche Attributsnamen • aber individuelle Werte
Java - Klassen - Deklaration von Attributen -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Klassen besitzen : • einen Klassennamen• beliebig viele Attribute
Syntax :class Klassenname {
typ attributsname;...
}
Beispiel :class Punkt2D {
int nummer;double x;double y;
}
Java - Klassen - Definition von Methoden -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Klassen besitzen : • einen Klassennamen• beliebig viele Attribute• beliebig viele Methoden
Syntax :class Klassenname {
// Attributetyp methodenname( Parameter){
Anweisung; ...
}}
Java - Klassen - Definition von Methoden -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Klassen besitzen : • einen Klassennamen• beliebig viele Attribute• beliebig viele Methoden
Syntax :class Klassenname {
// Attributetyp methodenname( Parameter){
Anweisung; ...
}}
Beispiel :class Punkt2D {
int nummer;double x, y;
double getX(){return( x);
}
void setX( double wert){x = wert;
}}
Java - Klassen - Rückgabewerte von Methoden -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Syntax :
class Klassenname {// Attributetyp methodenname( Parameter){
Anweisung;...
}}
Beispiel :
class Punkt2D {int nummer;double x, y;
double getX(){return( x);
}
void setX( double wert){x = wert;
}}
Typ des Rückgabewertes
Java - Klassen - Rückgabewerte von Methoden -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Syntax :
class Klassenname {// Attributetyp methodenname( Parameter){
Anweisung;...
}}
Beispiel :
class Punkt2D {int nummer;double x, y;
double getX(){return( x);
}
void setX( double wert){x = wert;
}}
Rückgabe eines Wertes
Java - Klassen - Rückgabewerte von Methoden -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Syntax :
class Klassenname {// Attributetyp methodenname( Parameter){
Anweisung;...
}}
Beispiel :
class Punkt2D {int nummer;double x, y;
double getX(){return( x);
}
void setX( double wert){x = wert;
}}
Methoden ohne Rückgabe
Java - Klassen - Parameter von Methoden -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Beispiel :class Punkt2D {
int nummer;double x, y;
double getX(){return( x);
}}
eine Methode muss keine Parameter haben !
Syntax :
class Klassenname {// Attributetyp methodenname( Parameter){
Anweisung;...
}}
Java - Klassen - Parameter von Methoden -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Beispiel :class Punkt2D {
int nummer;double x, y;
void setX( double wert){x = wert;
}}
Syntax eines Parameters: typ parametername
Java - Klassen - Parameter von Methoden -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Beispiel :class Punkt2D {
int nummer;double x, y;
void setPosition( double wert_x, double wert_y){x = wert_x;y = wert_y;
}}
bei mehreren Parametern sind die einzelne Parameter durch ein Komma zu trennen !
Java - Klassen - Zugriff auf Attribute aus Methoden -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Beispiel :class Punkt2D {
int nummer;double x, y;
void setPosition( double wert_x, double wert_y){x = wert_x;y = wert_y;
}}
der Zugriff auf Attribute der Klasse aus ihren Methoden erfolgt genau wie bei Variablen der Methoden
Java - Klassen - Erzeugen von Objekten einer Klasse -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Syntax :Klassenname objektname;objektname = new Klassenname();
oder kurz :Klassenname objektname = new Klassenname();
// Instanziierung// Deklaration
Beispiel :Punkt2D tp_1001;tp_1001 = new Punkt2D();
Objekte - Zugriff auf die Attribute -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Syntax :objektname.attributsname
Objekte - Zugriff auf die Attribute -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Syntax :objektname.attributsname
Beispiel :Punkt2D tp_1001 = new Punkt2D();
tp_1001.x = 56987.43;tp_1001.y = 4365.73;tp_1001.nummer = 1001;
Objekte - Zugriff auf die Attribute -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Syntax :objektname.attributsname
Beispiel :Punkt2D tp_1001 = new Punkt2D();tp_1001.x = 56987.43;tp_1001.y = 4365.73;tp_1001.nummer = 1001;
Attribute eines Objekts können genauso verwendet werden wie andere Variablen desselben Typs
double delta_x = tp_1001.x - tp_1002.x;
Objekte - im Arbeitsspeicher -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Beispiel :Punkt2D tp_1001 ;
tp_1001
Objekte - im Arbeitsspeicher -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Beispiel :Punkt2D tp_1001 ;tp_1001 = new Punkt2D();
tp_1001
x =y =nummer =
Objekte - im Arbeitsspeicher -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Beispiel :Punkt2D tp_1001 ;tp_1001 = new Punkt2D();
tp_1001.x = 56987.43;tp_1001.y = 4365.73;tp_1001.nummer = 1001;
tp_1001
x = 56987.43y = 4365.73nummer = 1001
Objekte - im Arbeitsspeicher -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Beispiel :Punkt2D tp_1001 ;tp_1001 = new Punkt2D();
tp_1001.x = 56987.43;tp_1001.y = 4365.73;tp_1001.nummer = 1001;
Punkt2D tp_1002 ;
tp_1001
x = 56987.43y = 4365.73nummer = 1001
tp_1002
Objekte - im Arbeitsspeicher -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Beispiel :Punkt2D tp_1001 ;tp_1001 = new Punkt2D();
tp_1001.x = 56987.43;tp_1001.y = 4365.73;tp_1001.nummer = 1001;
Punkt2D tp_1002 ;tp_1002 = tp_1001;
tp_1001
x = 56987.43y = 4365.73nummer = 1001
tp_1002
Objekte vergleichen
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
a b
Punkt2D a = new Punkt2D(), b = new Punkt2D();
a.x = 1.0; b.x = 1.0;a.y = 2.0; b.y = 2.0;a.nummer = 1;b.nummer = 1;
Was liefert a == b ?
x = 1.0 y = 1.0 nummer = 1
x = 1.0 y = 1.0 nummer = 1
Objekte vergleichen
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
a b
Punkt2D a = new Punkt2D(), b = new Punkt2D();
a.x = 1.0; b.x = 1.0;a.y = 2.0; b.y = 2.0;a.nummer = 1;b.nummer = 1;
Was liefert a == b ?
false !
x = 1.0 y = 1.0 nummer = 1
x = 1.0 y = 1.0 nummer = 1
Objekte vergleichen
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
a b
Punkt2D a = new Punkt2D(), b = new Punkt2D();
a.x = 1.0; b.x = 1.0;a.y = 2.0; b.y = 2.0;a.nummer = 1;b.nummer = 1;
Was liefert a == b ?
false !
Was liefert a.x == b.x ?
x = 1.0 y = 1.0 nummer = 1
x = 1.0 y = 1.0 nummer = 1
Objekte vergleichen
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
a b
Punkt2D a = new Punkt2D(), b = new Punkt2D();
a.x = 1.0; b.x = 1.0;a.y = 2.0; b.y = 2.0;a.nummer = 1;b.nummer = 1;
Was liefert a == b ?
false !
Was liefert a.x == b.x ?
true !
x = 1.0 y = 1.0 nummer = 1
x = 1.0 y = 1.0 nummer = 1
Arrays - ein Array von Objekten -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Syntax :Klassenname[ ] arrayname;arrayname = new Klassenname[groesse];
arrayname[index] = new Klassenname();
ACHTUNG :jedes Arrayelement ist einzeln zu instanziieren
// Instanziieren// eines Elements
// Instanziieren// eines Arrays
// Deklarieren
Arrays - ein Array von Objekten -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Beispiel :Punkt2D[ ] linie;
linie
Arrays - ein Array von Objekten -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Beispiel :Punkt2D[ ] linie;linie = new Punkt2D[2];
linie
10
Arrays - ein Array von Objekten -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Beispiel :Punkt2D[ ] linie;linie = new Punkt2D[2];linie[0] = new Punkt2D();
linie
x = y = nummer =
10
Arrays - ein Array von Objekten -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Beispiel :Punkt2D[ ] linie;linie = new Punkt2D[2];linie[0] = new Punkt2D();linie[1] = new Punkt2D();
linie
x = y = nummer =
10
x = y = nummer =
Arrays - Zugriff auf Objektattribute im Array -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Syntax :arrayname[index].attributsname;
Arrays - Zugriff auf Objektattribute im Array -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Syntax :arrayname[index].attributsname;
Beispiel :Punkt2D[ ] linie;linie = new Punkt2D[2];
linie
10
Arrays - Zugriff auf Objektattribute im Array -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Syntax :arrayname[index].attributsname;
Beispiel :Punkt2D[ ] linie;linie = new Punkt2D[2];linie[0] = new Punkt2D();
linie
x =y = nummer =
10
Arrays - Zugriff auf Objektattribute im Array -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Syntax :arrayname[index].attributsname;
Beispiel :Punkt2D[ ] linie;linie = new Punkt2D[2];linie[0] = new Punkt2D();
linie[0].x = 56743.43;
linie
x = 56743.43; y = nummer =
10
Java - Klassen - Zusammenspiel von Klassen -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Beispiel :
class Punkt2D {int nummer ;double x;double y;
}
class Dreieck {int nummer ;Punkt2D a, b, c;
}
Attribute vom Typ einer Klasse :
zugehörige Datei :Punkt2D.java
zugehörige Datei :Dreieck.java
Java - Klassen - Zusammenspiel von Klassen -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Beispiel :
class Punkt2D {int nummer ;double x;double y;
}
class BerechneStrecke2D {static public void main(String arg[ ]){
Punkt2D anfang = new Point2D(), ende = new Point2D();
anfang.x = 10.0; anfang.y = 20.0;ende.x = -10.0; ende.y = -20.0;
double delta_x = anfang.x – ende.x;double delta_y = anfang.y – ende.y;double strecke = Math.sqrt(
delta_x * delta_x + delta_y * delta_y);
}}
Variablen vom Typ einer Klasse :
Methode
Java - Klassen - Anlegen einer neuen Klasse mit Forte -
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Kontextmenu zu einem Verzeichniserreichbar über einenKlick mit der rechten Maustasteauf das Verzeichnis ( z.B. U:\JAVA )
weiter, genau wie immer ...
NewClasses
Class
Übungsaufgabe (1/2)
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
Hinweis zu (2.) :Lege eine neue Klasse “Kreise“ an undinnerhalb von main(...){ } geht‘s weiter ...
1. Definiert eine Klasse "Kreis" mit den Eigenschaften eines Kreises (Radius, Mittelpunkt).
2. Erzeugt fünf Instanzen der Klasse mit gleichem Mittelpunkt und verschiedenen Radien.
Übungsaufgabe (2/2)
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
1. Definiert eine Klasse "Kreis" mit den Eigenschaften eines Kreises (Radius, Mittelpunkt).
2. Erzeugt fünf Instanzen der Klasse mit gleichem Mittelpunkt und verschiedenen Radien.
3. Speichert die fünf erzeugten Instanzen der Klasse "Kreis" in einem Array ab.
Hausaufgabe
IKG Dörschlag, Gröger, Plümer – Einführung in die Programmierung mit Java – WS 03/04
• Entwerft analog zur Definition von Kreisen die Klassendefinitionen für Dreiecke, Ellipsen und Trapeze. Erzeugt mindestens eine Instanz jeder Klasse und weist ihnen sinnvolle Werte zu.
• Hinweis: Die Lösung umfasst mehrere .java-Dateien. In jedem der Dateinamen (und auch Klassennamen) muss Euer Nachname auftauchen (z.B. Schmitz_Dreieck.java)
top related