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.

  1. 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; 
  2. 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, ...); 
  3. 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);
        }
 
    }
Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Noncommercial-Share Alike 4.0 International