Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003 Institut für Kartographie und...

Post on 06-Apr-2016

216 views 2 download

Transcript of Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003 Institut für Kartographie und...

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)