16
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

Einführung in die Programmierung mit Java

  • Upload
    shlomo

  • View
    29

  • Download
    0

Embed Size (px)

DESCRIPTION

Einführung in die Programmierung mit Java. 5. Vorlesung WS 2002/2003. Übersicht. Besprechung der Übungsaufgabe Objektorientierte Programmierung/Modellierung: Grundbegriffe Klasse, Objekt, Kapselung, ... Klassen und Objekte Definition von Klassen Erzeugen von Objekten (Instanzen) - PowerPoint PPT Presentation

Citation preview

Page 1: Einführung in die Programmierung mit Java

Institut für Kartographie und GeoinformationProf. Dr. Lutz Plümer, Dr. Gerhard Gröger

Einführung in die Programmierung mit Java

5. Vorlesung WS 2002/2003

Page 2: Einführung in die Programmierung mit Java

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

2 2

Übersicht

• Besprechung der Übungsaufgabe

• Objektorientierte Programmierung/Modellierung: Grundbegriffe

– Klasse, Objekt, Kapselung, ...

• Klassen und Objekte

– Definition von Klassen

– Erzeugen von Objekten (Instanzen)

– Zugriff auf Attribute eines Objekts

Page 3: Einführung in die Programmierung mit Java

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

3 3

Hausaufgabe

Schreibt ein Programm, das den Wert einer ganzzahligen Variablen w im Bereich von 20 bis 99 so als Text ausgibt, wie er ausgesprochen wird. Gebt dabei alle Werte von 20 bis 99 entsprechend aus.

Ausgabe: w = 20 Ausgabe: "zwanzig" ..................... w = 98 Ausgabe: „achtundneunzig" w = 99 Ausgabe: "neunundneunzig"

Page 4: Einführung in die Programmierung mit Java

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

4 4

Lösung der Hausaufgabepublic static void main (String args[]) {

for (int i = 20; i <100; i++){

int a = i % 10; //Einer-Stelle

int b = i / 10; //Zehner-Stelle

switch (a){ //Anfang mit Einer-Stelle

case 0: {System.out.print("");break;}

case 1: {System.out.print("einund");break;}

case 2: {System.out.print("zweiund");break;}

............................ case 9: {System.out.print("neunund");break;}

}

switch (b){

case 2: {System.out.println("zwanzig");break;}

case 3: {System.out.println("dreißig");break;}

.................... case 9: {System.out.println("neunzig");break;}

}

}

}

Page 5: Einführung in die Programmierung mit Java

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

5 5

Objektorientierte Prinzipien

• Klassenbildung

– Objekte mit gleichen Eigenschaften werden zu Klassen zusammengefasst

– Objekte haben Attribute und Methoden

• Kapselung

– Zugriff auf Objekte nur über wohldefinierte Schnittstellen (Methoden)

– Verbergen von unwichtigen Details

• Vererbung (später ... )

• Polymorphismus (später ... )

Page 6: Einführung in die Programmierung mit Java

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

6 6

Klassen

• zunächst nur 'einfache' Klassen– haben nur Attribute (Eigenschaften)– keine Methoden (erst in nächster Stunde)

zunächst keine Kapselung

• Klasse besteht aus– einem Klassennamen– beliebig vielen Attributen – Attribute haben einen (einfachen) Typ, z.B. int, double– Beispiel: Klasse „Punkt“ mit x- und y-Koordinate (Typ

double) und Nummer (Typ int).

Page 7: Einführung in die Programmierung mit Java

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

7 7

Definition einer Klasse

• Syntax:class Klassenname {

Typ1 Variablenname1;Typ2 Variablenname2;. . .

}

• Beispiel: class Punkt {

double x_Koordinate;double y_Koordinate;int Punktnummer;

}

KlassennameKlassenname

Deklaration der Attribute: jede Instanz (Objekt) der Klasse hat gleichnamige Variablen (Attribute); die Werte können aber für jedes Objekt individuell zugewiesen werden.

Deklaration der Attribute: jede Instanz (Objekt) der Klasse hat gleichnamige Variablen (Attribute); die Werte können aber für jedes Objekt individuell zugewiesen werden.

Attribute werden deklariert wie Variablen, stehen jedoch innerhalb einer Klasse.

Attribute werden deklariert wie Variablen, stehen jedoch innerhalb einer Klasse.

Page 8: Einführung in die Programmierung mit Java

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

8 8

Forte: Hinzufügen einer neuen Klasse

• Rechtsklick auf Verzeichnismit "main"-Klasse

• New - Classes - Class• Klassenamen eingeben• Finish• Ergebnis:

public class Punkt extends Object {

/** Creates new Punkt */ public Punkt() { }

}Attribute hinzufügen

• ... in einer Datei Punkt.java

Page 9: Einführung in die Programmierung mit Java

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

9 9

Erzeugen von Objekten einer Klasse

• Syntax:Klassenname Variable; // DeklarationVariable = new Klassenname (); //Instantiierung

• Beispiel:Punkt p1; //Deklaration der Variablen p1 p1 = new Punkt(); // Erzeugung einer Instanz der

//Klasse Punkt; p1 ist eine //Referenz auf die Instanz

Punkt p2; p2 = new Punkt(); Punkt p3 = new Punkt();

Page 10: Einführung in die Programmierung mit Java

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

10 10

Zugriff auf Attribute eines Objekts

• Syntax: Variablenname.Attributname

• Beispiel:Punkt p1; p1 = new Punkt(); p1.x_Koordinate = 56987.43;p1.y_Koordinate = 4365.43;p1.Punktnummer = 6564;double Abstand = ... + p1.x_Koordinate + ...

class Punkt {double x_Koordinate;double y_Koordinate;int Punktnummer;

}

Attribute eines Objekts können genauso verwendet werden wie andere Variablen desselben Typs

Page 11: Einführung in die Programmierung mit Java

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

11 11

Beispiel: Rechteck

class Rechteck {double breite;double hoehe;

}

class XXXX {

public static void main (String args[]) { // HauptprogrammRechteck my_rechteck1; // Deklaration einer Objektvariablenmy_rechteck1 = new Rechteck(); // Instantiierung eines Objektsmy_rechteck1.breite = 10.0; // Zugriff auf Variablen dermy_rechteck1.hoehe = 5.0; // Instanz (Zuweisung eines Werts)

Rechteck my_rechteck2 = new Rechteck(); // 2. Objekt dekl. & instant.my_rechteck2.breite = my_rechteck1.breite - 2.0; my_rechteck2.hoehe = 7.5; }

}

Klassendefinition in Datei Rechteck.java

Hauptprogramm in Datei XXXX.java in Methode "main"

Page 12: Einführung in die Programmierung mit Java

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

12 12

Übungsaufgabe

• Definiert eine Klasse "Kreis" mit den Eigenschaften eines Kreises (Radius, Mittelpunkt). Erzeugt fünf Instanzen der Klasse mit gleichem Mittelpunkt und verschiedenen Radien.

• Hinweise:class Rechteck {

double breite;double hoehe;

}

public static void main (String args[]) {Rechteck my_rechteck1;my_rechteck1 = new Rechteck(); my_rechteck1.breite = 10.0;.......

Page 13: Einführung in die Programmierung mit Java

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

13 13

Einschub: Arrays vom Typ einer Klasse

• Wie erhält man Arrays mit Instanzen einer Klasse, z.B. Punkt?

• int [ ] IntegerArray = new int[6];• Punkt [ ] PunktArray = new Punkt[6];• Typ der Arrayelemente ist Punkt (statt int)• erforderlich: Instantiieren der einzelnen Punkte:

– PunktArray[0] = new Punkt();– PunktArray[1] = new Punkt();

PunktArray

x = 0.0y = 0.0nummer = 0

x = 0.0y = 0.0nummer = 0

0 1 2 3 4 5

Page 14: Einführung in die Programmierung mit Java

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

14 14

Zugriff auf Attribute von Instanzen in Array

• Zugriff auf Arrayelement: Arrayname[index]– Beispiel: my_array[0];

• Zugriff auf Attribut: Referenzvariable.Attributname

– Beispiel: p1.X_Koordinate

• Kombination: Arrayname[index].Attributname

– Beispiel: PunktArray[0].X_Koordinate = 565.99;

Page 15: Einführung in die Programmierung mit Java

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

15 15

Übungsaufgabe

• Speichert die in der vorherigen Übung erzeugten fünf Instanzen der Klasse "Kreis" in einem Array ab.

• Hinweis zur Syntax:– Punkt [ ] PunktArray = new Punkt[6];

– PunktArray[0] = new Punkt();

– PunktArray[0].X_Koordinate = 565.99;

Page 16: Einführung in die Programmierung mit Java

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

16 16

Hausaufgabe

• Entwerft analog zur Definition von Rechtecken die

Klassendefinitionen für Dreiecke, Ellipsen und

Trapeze. Erzeugt mindestens eine Instanz jeder

Klasse 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.

SchmitzDreieck.java)