Vorlesung 5

Werbung
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
Ü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
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
2
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
.....................
w = 98
w = 99
Ausgabe: "zwanzig"
Ausgabe: „achtundneunzig"
Ausgabe: "neunundneunzig"
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
3
Lösung der Hausaufgabe
public 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;}
}
}
}
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
4
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 ... )
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
5
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).
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
6
Klassenname
Definition einer Klasse
Attribute werden deklariert
• Syntax:
wie Variablen, stehen
class Klassenname {
jedoch innerhalb einer Klasse.
Typ1 Variablenname1;
Typ2 Variablenname2;
...
Deklaration der Attribute: jede Instanz
}
(Objekt) der Klasse hat gleichnamige
Variablen (Attribute); die Werte können aber
für jedes Objekt individuell zugewiesen werden.
• Beispiel:
class Punkt {
double x_Koordinate;
double y_Koordinate;
int Punktnummer;
}
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
7
Forte: Hinzufügen einer neuen Klasse
• Rechtsklick auf Verzeichnis
mit "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
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
8
Erzeugen von Objekten einer Klasse
• Syntax:
Klassenname Variable;
Variable = new Klassenname ();
// Deklaration
//Instantiierung
• Beispiel:
Punkt p1;
p1 = new Punkt();
//Deklaration der Variablen p1
// Erzeugung einer Instanz der
//Klasse Punkt; p1 ist eine
//Referenz auf die Instanz
Punkt p2;
p2 = new Punkt();
Punkt p3 = new Punkt();
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
9
Zugriff auf Attribute eines Objekts
class Punkt {
• Syntax:
double x_Koordinate;
Variablenname.Attributname
double y_Koordinate;
int Punktnummer;
• Beispiel:
}
Punkt p1;
p1 = new Punkt();
p1.x_Koordinate = 56987.43;
p1.y_Koordinate = 4365.43;
p1.Punktnummer = 6564;
double Abstand = ... + p1.x_Koordinate + ...
Attribute eines Objekts können genauso verwendet
werden wie andere Variablen desselben Typs
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
10
Beispiel: Rechteck
class Rechteck {
double breite;
double hoehe;
}
class XXXX {
Klassendefinition in Datei
Rechteck.java
Hauptprogramm in Datei
XXXX.java in Methode "main"
public static void main (String args[]) { // Hauptprogramm
Rechteck my_rechteck1;
// Deklaration einer Objektvariablen
my_rechteck1 = new Rechteck();
// Instantiierung eines Objekts
my_rechteck1.breite = 10.0;
// Zugriff auf Variablen der
my_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;
}
}
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
11
Ü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;
.......
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
12
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();
0 1 2 3 4 5
PunktArray
x = 0.0
y = 0.0
nummer = 0
x = 0.0
y = 0.0
nummer = 0
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
13
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;
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
14
Ü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;
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
15
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)
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
16
Herunterladen