160 likes | 267 Views
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)
E N D
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
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" G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
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
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
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
Klassenname Definition einer Klasse Attribute werden deklariert wie Variablen, stehen jedoch innerhalb einer Klasse. • Syntax:classKlassenname { Typ1 Variablenname1; Typ2Variablenname2; . . . } • Beispiel: classPunkt {double x_Koordinate;double y_Koordinate;int Punktnummer;} Deklaration der Attribute: jede Instanz (Objekt) der Klasse hat gleichnamige Variablen (Attribute); die Werte können aber für jedes Objekt individuell zugewiesen werden. G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
Attribute hinzufügen 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() { } } • ... in einer Datei Punkt.java G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
Erzeugen von Objekten einer Klasse • Syntax: KlassennameVariable;// Deklaration Variable =newKlassenname ();//Instantiierung • Beispiel:Punktp1; //Deklaration der Variablen p1 p1 = newPunkt(); // Erzeugung einer Instanz der //Klasse Punkt; p1 ist eine //Referenz auf die Instanz Punktp2; p2 = newPunkt(); Punktp3 = newPunkt(); G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
Zugriff auf Attribute eines Objekts class Punkt { double x_Koordinate; double y_Koordinate; int Punktnummer;} • 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 + ... 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
Beispiel: Rechteck class Rechteck { double breite; double hoehe; } class XXXX { 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; } } Klassendefinition in Datei Rechteck.java Hauptprogramm in Datei XXXX.java in Methode "main" G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
Ü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
PunktArray x = 0.0 y = 0.0 nummer = 0 x = 0.0 y = 0.0 nummer = 0 0 3 1 4 2 5 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(); G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
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
Ü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
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