Inhaltsverzeichnis

Vererbung

Angenommen ein Programm für einen Gebrauchtwagenhändler soll erstellt werden. Da sehr unterschiedliche Fahrzeugtypen verwaltet werden sollen, soll auch für jeden Typ eine eigene Klasse erstellt werden. Unmittelbar klar ist jedoch auch, dass die Fahrzeuge einige Gemeinsamkeiten haben. (Fahrgestellnr, Vorbesitzer, Preis, TÜV, ASU, Steuerklasse, …) Damit diese Gemeinsamkeiten nicht für jede Fahrzeugtypklasse neu erstellt werden müssen, kann zunächst eine (Ober-)Klasse fahrzeug erstellt werden, die genau diese Gemeinsamkeiten schon beinhaltet. Beim Erstellen einer neuen (Unter-)Klasse transporter wird angegeben, dass sie die (Ober-)Klasse fahrzeug beerbt. Nun werden sämtliche Attribute und Methoden dieser Klasse vererbt und müssen nicht nochmal implementiert werden. Neue Attribute und neue Methoden können in gewohnter Weise zugefügt werden.

Der Maulwurf

— Fortsetzung des Beispiels Schildkröte aus Objekte. —

Möchte man ein Tier haben, dass sich auch fortbewegen kann, ohne zu zeichnen, gibt es mindestens folgende zwei Möglichkeiten:

Die erste Möglichkeit ist vermutlich die einfachere. Jedoch soll hier die zweite behandelt werden, um das Prinzip der Vererbung der objektorientierten Programmierung kennen zu lernen.

Wichtig:

package Zeichnen;
 
import java.awt.Graphics;
 
/**
 *
 * @author euteneuer
 */
public class Maulwurf extends Schildkröte{
 
    public Maulwurf (double x, double y, double winkel, Graphics g) {
        super (x, y, winkel, g);
    }
 
    public void grabe (double weite) {
        double dx = (double)(weite*Math.sin(bogenmaß));
        double dy = (double)(weite*Math.cos(bogenmaß));
        double xNeu = x+dx;
        double yNeu = y+dy;
        x = xNeu;
        y = yNeu;
    }
}

Folgende Attribute besitzt Maulwurf:

    double winkel;
    double bogenmaß=0;
    double x, y;
    Graphics g;

Folgende Methoden besitzt nun Maulwurf:

    public void setY (double y)
    public void setWinkel (double winkel)
    public void gehe (double weite)
    public void dreheLinks (double winkel)
    public void dreheRechts (double winkel)
    public double getX ()
    public double getY ()
    public double getWinkel ()
    public Graphics getGraphics ()
    public void grabe (double weite)

Den Maulwurf verwenden

Die folgende Methode zeichnet ebenfalls ein Quadrat. Allerdings sind die Kanten doppelt so lang (warum wohl??) und gestrichelt.

    private void bZeichneActionPerformed(java.awt.event.ActionEvent evt) {                                         
        Maulwurf gertrude;
        gertrude= new Maulwurf (200 , 200 , 90 , pZeichenbrett.getGraphics());
        for (int i=1; i<=4; i++) {
            for (int k=1; k<=6; k++) {
                gertrude.gehe(5);
                gertrude.grabe(5);
            }
            fabian.dreheLinks(90);
        }
 
    }