Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen Attribute als Referenzvariablen Programme mit mehreren Klassen.

Ähnliche Präsentationen


Präsentation zum Thema: "Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen Attribute als Referenzvariablen Programme mit mehreren Klassen."—  Präsentation transkript:

1 Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen Attribute als Referenzvariablen Programme mit mehreren Klassen

2 Hausaufgabe 5: Dreieck class Dreieck {//Attribute Punkt A; Punkt B; Punkt C; //Konstruktor Dreieck(double xa, double ya, double xb, double yb, double xc, double yc) { A = new Punkt(xa, ya); B = new Punkt(xb, yb); C = new Punkt(xc, yc); } //Methoden void verschiebe(double dx, double dy) { A.verschiebe(dx, dy); B.verschiebe(dx, dy); C.verschiebe(dx, dy); } void ausgabe() { System.out.println(" "); System.out.println("Punkt A:"); A.ausgabe(); System.out.println(" "); System.out.println("Punkt B:"); B.ausgabe(); System.out.println(" "); System.out.println("Punkt C:"); C.ausgabe(); System.out.println(" "); } double flaeche() { //Berechng. der Flaeche ueber die Determinante double flaeche = 0.5*(A.x*(B.y-C.y)+B.x*(C.y-A.y)+C.x*(A.y-B.y)); return flaeche; }

3 Hausaufgabe 5: Trapez class Trapez { // Attribute Punkt A; Punkt B; Punkt C; Punkt D; //Konstruktor Trapez(double ax, double ay, double bx, double by, double cx, double cy, double dx, double dy) { A= new Punkt(ax,ay); B= new Punkt(bx,by); C= new Punkt(cx,cy); D= new Punkt(dx,dy); } // Methoden void verschiebe(double tx, double ty) { A.verschiebe(tx,ty); B.verschiebe(tx,ty); C.verschiebe(tx,ty); D.verschiebe(tx,ty); } void ausgabe() { System.out.println(" "); System.out.println("Punkt A:"); A.ausgabe(); System.out.println(" "); System.out.println("Punkt B:"); B.ausgabe(); System.out.println(" "); System.out.println("Punkt C:"); C.ausgabe(); System.out.println(" "); System.out.println("Punkt D:"); D.ausgabe(); System.out.println(" "); } double flaeche() { return 0.5*(((A.x-B.x)*(A.y+B.y))+((B.x-C.x)*(B.y+C.y))+ ((C.x-D.x)*(C.y+D.y))+((D.x-A.x)*(D.y+A.y))); //Berechnung d. Flaeche nach der Gauss'schen Flaechenformel //fuer Polygone }

4 Hausaufgabe 5: Kreis class Kreis { //Attribute Punkt mitt; //Mittelpunkt double radius; //Konstruktor Kreis(double x_mitt, double y_mitt, double rad) { mitt = new Punkt_muenster(x_mitt, y_mitt); radius = rad; } //Methoden void verschiebe(double dx, double dy) { mitt.verschiebe(dx, dy); } void ausgabe() { System.out.println(" "); System.out.println("Koordinaten des Mittelpunktes: "); mitt.ausgabe(); System.out.println(" "); System.out.println("Radius:"); System.out.println(radius); System.out.println(" "); } double flaeche() { return Math.PI*radius*radius; }

5 Hausaufgabe 5: Ellipse class Ellipse { // Attribute Punkt mitt; double halbachse_a; double halbachse_b; // Konstruktor Ellipse(double x_mitt, double y_mitt, double rad_a, double rad_b) { mitt = new Punkt(x_mitt, y_mitt); halbachse_a = rad_a; halbachse_b = rad_b; } // Methoden void verschiebe(double dx, double dy) { mitt.verschiebe(dx, dy); } void ausgabe() { System.out.println(" "); System.out.println("Mittelpunkt der Ellipse: "); System.out.println(mitt); System.out.println(" "); System.out.print("Halbachse a : "); System.out.println(halbachse_a); System.out.print("Halbachse b : "); System.out.println(halbachse_b); System.out.println(" "); } double flaeche() { return Math.PI*halbachse_a*halbachse_b; }

6 Hausaufgabe 5: Punkt public class Punkt { double x; //x-Koordinate double y; //y-Koordinate /** Creates new Punkt */ public Punkt(double xstartwert, double ystartwert){ x = xstartwert; y = ystartwert; } public Punkt(Punkt p){ x = p.x; y = p.y; } double abstand(Punkt p){ return Math.sqrt( Math.pow(p.x - x,2) + Math.pow(p.y - y,2) ); } boolean gleich(Punkt p){ return x == p.x && y == p.y; } void verschiebe (double dx, double dy) { x = x + dx; y = y + dy; } void ausgabe() { System.out.print("x = "); System.out.print(x); System.out.print(", y = "); System.out.println(y); } double flaeche() { return Math.PI*halbachse_a*halbachse_b; }

7 Referenzvariablen Eine Referenzvariable ist eine Variable, die als Typ eine Klasse hat z.B. Punkt p = new Punkt(3,8); Referenzvariablen zeigen auf Objekte, sie enthalten nicht selber das Objekt (Synonyme: Zeiger, Referenzen, Speicheradressen, Namen,...) Insbesondere können 2 Referenzvariablen auf dasselbe Objekt zeigen

8 Unterschied zu "einfachen" Variablen Referenzvariablen Punkt p1 = new Punkt(2,4); Punkt p2 = new Punkt(7,9); "einfache" Variablen int i = 7; int j = 4; 7 p1p2 ij 4 Punkt(2,4)Punkt(7,9)

9 Unterschied zu "einfachen" Variablen Referenzvariablen Punkt p1 = new Punkt(2,4); Punkt p2 = new Punkt(7,9); p1 = p2; "einfache" Variablen int i = 7; int j = 4; i = j; 4 p1p2 ij 4 Punkt(2,4)Punkt(7,9)

10 Unterschied zu "einfachen" Variablen Referenzvariablen Punkt p1 = new Punkt(2,4); Punkt p2 = new Punkt(7,9); p1 = p2; p2.verschiebe(44,33); "einfache" Variablen int i = 7; int j = 4; i = j; j = 77; 4 p1p2 ij 77 Punkt(2,4)Punkt(51,42)

11 Unterschied zu "einfachen" Variablen Referenzvariablen Punkt p1 = new Punkt(2,4); Punkt p2 = new Punkt(7,9); p1 = p2; p2.verschiebe(44,33); //p1 ebenfalls verschoben "einfache" Variablen int i = 7; int j = 4; i = j; j = 77; //i ist weiterhin 4 4 p1p2 ij 77 Punkt(2,4)Punkt(51,42)

12 Attribute als Referenzvariablen Eine Klasse kann als Attribut eine Referenzvariable haben Beispiel: Klasse Dreieck hat als Attribute 3 Variablen der Klasse Punkt Beispiel aus Vorlesung "Diskrete Mathe": Klasse Liste hat Attribut weiter (Typ Liste) Bestandteilshierarchie (vgl. UML - Vorlesung GIS): Ein Objekt besteht aus anderen Objekten ==> Programme mit mehreren Klassen

13 Programme mit mehreren Klassen Eine Klasse kennt alle Klassen im selben Verzeichnis (Sie sind im selben Package,kommt später) Voraussetzungen: Klasse ist nicht protected Verzeichnis ist unmittelbar in Forte verbunden Genau eine Klasse pro Datei (Dateiname = Klassenname) Genau eine Klasse hat Methode main

14 Erzeugen von Klassen ohne main Explorer-Fenster von Forte mit Maus auf Aktuelles Verzeichnis rechte Maustaste -> New from Template - Classes - Class

15 Programme mit mehreren Klassen: Ausführen Im Explorer von Forte Klasse mit main markieren (Maus) Grünes Dreieck im Hauptfenster oder rechte Maustaste - Execute Vorsicht: andere Dateien (außer der markierten) werden nicht neu compiliert!

16 Programme mit mehreren Klassen: Compilieren Im Explorer von Forte übergeordnetes Verzeichnis markieren (mit Maus) rechte Maustaste - Compile oder Build Compile: Nur geänderte Dateien im Verzeichnis werden compiliert Build: Alle Dateien im Verzeichnis werden compiliert Compile/Build All: Auch in Unterverzeichnissen

17 Übungsaufgabe 6 Entwerfen Sie eine Klassendefinition für (einfache) Polygone mit beliebig vielen Stützpunkten. Als Methoden sollten mindestens die Umfangs- und Flächenberechnung sowie die Verschiebung zur Verfügung gestellt werden. Es soll sichergestellt werden können, dass die Polygone mathematisch korrekt sind. Erzeugen Sie ein Polygon und wenden Sie die definierten Methoden an.


Herunterladen ppt "Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen Attribute als Referenzvariablen Programme mit mehreren Klassen."

Ähnliche Präsentationen


Google-Anzeigen