===== Objekte ===== sind, nun ja, Objekte halt. Sie werden mit Hilfe der Klasse erstellt. Wird eine Klasse Dreieck definiert, so kann man an Hand dieser Klasse beliebig viele Objekte konstruieren. So ähnlich, wie man an Hand eines Backrezeptes beliebig viele Kuchen erstellen kann. Hat die Klasse einen Namen, so braucht man nur noch einen Namen für das Objekt, das man erstellen möchte. Eine Klasse ''dreieck'' sei nun gegeben. - Ein neues Objekt namens ''d1'' soll erstellt werden. Dafür wird zunächst diesem Namen die Klasse (als eine Art Datentyp) ''Dreieck'' zugewiesen. Genauer ist dieser Name nun ein Verweis auf einen Speicherbereich, an dem ein Objekt dieser Klasse gespeichert wird. Dreieck d1; - Nun wird das Objekt erstellt, indem der Konstruktor der Klasse (evtl. mit Parametern) aufgerufen wird. Das bedeutet, der Speicherplatz für das Objekt wird reserviert und die Methoden zur Verfügung gestellt. new Dreieck (parameter1, parameter2, ...); - Danach wird dafür gesorgt, dass der angelegte Verweis auf das neue Objekt zeigt. d1 = Die letzten beiden Punkte lassen sich in Java aber nicht trennen. Die ausführliche Variante lautet daher insgesamt: Dreieck d1; d1 = new Dreieck (parameter1, parameter2, ...); Die abgekürzte Variante lautet: Dreieck d1 = new Dreieck (parameter1, parameter2, ...); Dann kann mit Hilfe des Verweises das neue Objekt verwendet werden. ===== Fehlvorstellungen! ===== * Der Ausdruck "ein Schüler der Klasse 8f" hat rein gar nichts mit dem Ausdruck "ein Objekt der Klasse x" zu tun! Der Schüler ist Mitglied der Klasse, während ein Objekt nach der Bauanleitung der Klasse konstruiert wird. Ein Objekt ist also **kein** Mitglied in seiner Klasse! * Der Verweis ist nicht das Objekt selbst. Schreibt man zusätzlich folgenden Code: Dreieck d2 = d1; existiert nicht noch ein Objekt der Klasse ''Dreieck'', sondern lediglich ein zweiter Verweis auf dasselbe Dreieck, sodass sowohl mit ''d1'' als auch mit ''d2'' dasselbe Objekt bearbeitet wird. Man beachte: Tatsächlich dasselbe, nicht nur das Gleiche! ===== Objektdiagramme ===== Hier fehlen noch einige Übungen zum einfachen Zeichnen mit ''drawLine()''... ===== Die Schildkröte ===== Danach kann man schöne Dinge mit einer Schildkröte oder einem Igel machen. Die Schildkröte sieht dann so aus: package Zeichnen; import java.awt.Graphics; /** * * @author euteneuer */ public class Schildkröte { double winkel; double bogenmaß=0; double x, y; Graphics g; public Schildkröte (double x, double y, double winkel, Graphics g) { this.x = x; this.y = y; this.winkel = winkel; this.g = g; this.bogenmaß=Math.PI * 2 * this.winkel / 360; } public void setX (double x) { this.x = x; } public void setY (double y) { this.y = y; } public void setWinkel (double winkel) { this.winkel = winkel; this.bogenmaß=Math.PI * 2 * this.winkel / 360; } public void setRichtung (double x, double y) { this.bogenmaß=Math.atan2((this.y-y),-(this.x-x)); this.winkel = this.bogenmaß / 2 / Math.PI * 360; } public void gehe (double weite) { double dx = (double)(weite*Math.cos(bogenmaß)); double dy = -(double)(weite*Math.sin(bogenmaß)); double xNeu = x+dx; double yNeu = y+dy; g.drawLine((int)Math.round(x), (int)Math.round(y), (int)Math.round(xNeu), (int)Math.round(yNeu)); x = xNeu; y = yNeu; } public void dreheLinks (double winkel) { this.winkel += winkel+360; this.winkel = this.winkel % 360; bogenmaß = Math.PI * this.winkel / 360 * 2; } public void dreheRechts (double winkel) { this.winkel -= winkel+360; this.winkel = this.winkel % 360; bogenmaß =Math.PI * this.winkel / 360 * 2; } public double getX () { return (x); } public double getY () { return (y); } public double getWinkel () { return (winkel); } public Graphics getGraphics () { return (g); } } ===== Die Schildkröte verwenden ===== Um die Schildkröte zu benutzen sind nur wenige Voraussetzungen nötig: * Ein ''jpanel'' namens ''pZeichenbrett''. * Ein ''jButton'' namens ''bZeichne'' mit ''ActionListener''. Dann kann's schon losgehen. Folgende Methode zeichnet beispielsweise ein Quadrat. Dabei startet ''fabian'' im Punkt (200|200) (Ursprung links oben!) und sieht nach rechts. private void bZeichneActionPerformed(java.awt.event.ActionEvent evt) { Schildkröte fabian; fabian = new Schildkröte (200 , 200 , 90 , pZeichenbrett.getGraphics()); for (int i=1; i<=4; i++) { fabian.gehe(30); fabian.dreheLinks(90); } }