EA 4.x Edu Tutorial: Eigene Methoden
Dies ist ein Tutorial für die Edu-Variante der Engine Alpha 4.x. Eine Übersicht aller Edu-Tutorials siehst du hier.
Inhaltsverzeichnis
Inhalt
In diesem Tutorial:
- Legst du in deinen Klassen eigene Methoden an:
- verändernde Methoden erledigen einen Auftrag
- sondierende Methoden geben Antwort auf eine Frage
- Methoden mit Parametern können zusätzliche Informationen entgegen nehmen
Methoden
Methode sind Fähigkeiten der Objekte. Du hast schon viele Methoden benutzt, indem du sie interaktiv oder durch Punktnotation aufgerufen hast. Mit der Konstruktor-Methode hast du schon eine ganz besondere Art von Methode kennen gelernt und sogar selbst erstellt. Auch das Prinzip der Parameter hast du dort schon kennen gelernt.
Am Beispiel einer Ampel wirst du nun lernen selbst Methoden mit sprechenden Namen zu erstellen.
Der Konstruktor
Der Konstruktor ist später dafür zuständig, neue Objekte deiner Klasse zu erzeugen. In ihm musst du die Startwerte aller Attribute und Referenzen initialisieren (einrichten). Es kann mehrere Konstruktoren geben, z.B. welche ohne und welche mit Parametern. Gibt es mehrere Konstruktoren derselben Klasse, so müssen diese sich in der Menge, Art oder Reihenfolge der Parameter unterscheiden, sonst lässt dich die Klasse nicht übersetzen!
Erstelle zuerst eine Klasse Box, die von RECHTECK erbt. Eine Box soll die Breite 5, die Höhe 10 und die Farbe dunkelgrau haben. Der erste Konstruktor soll die Mittelpunkts-Koordinaten der Box entgegen nehmen und die Box an dieser Stelle zeichnen. Der zweite Konstruktor soll parameterlos sein und die Box genau in der Mitte des Fensters positionieren.
public class Box
extends RECHTECK
{
public Box(double x, double y)
{
super(5,10);
super.setzeFarbe("hellgrau");
super.setzeMittelpunkt(x,y);
}
public Box()
{
this(0,0);
}
}
Der erste Konstruktor ruft erst einen geerbten Konstruktor auf und übergibt ihm gleich die Breite und die Höhe. Anschließend wird die Farbe gesetzt und der Mittelpunkt. Hierfür werden die Parameter x
und y
an die Methode setzeMittelpunkt(...)
übergeben.
Teste deine Arbeit indem du beide Konstruktoren aufrufst und testest, ob sie ihre Arbeit wie geplant erledigen.
Erstelle eine weitere Klasse Lampe, die von KREIS erbt. Es soll ein Attribut meineFarbe
geben, in dem die Farbe der Lampe gespeichert werden kann. Außerdem soll es nur einen Konstruktor geben, der die gewünschte Farbe der Lampe entgegen nimmt. Eine neue Lampe soll einen Radius von 2,3 und außerdem die übergebene Farbe haben. Der Farbname wird zusätzlich in dem Attribut gespeichert.
public class Lampe
extends KREIS
{
private String meineFarbe;
public Lampe(String farbWunsch)
{
super(2.3);
this.meineFarbe = farbWunsch;
super.setzeFarbe(farbWunsch);
}
}
Teste deinen Konstruktor, indem du z.B. eine rote Lampe erzeugst, sie interaktiv mithilfe der geerbten Methode setzeMittelpunkt(...)
an einen anderen Ort bringst und anschließend eine weitere Lampe anderer Farbe erstellst. Klappt alles?
Erstelle nun eine Klasse Ampel (die nicht erbt) und darin drei Referenzen: eine Box und zwei Lampen. Es soll einen Konstruktor geben, der die Mittelpunkts-Koordinaten der Ampel entgegen nimmt und die Box dort ablegt. 5 Einheiten über diesem Mittelpunkt soll eine rote Lampe und 5 Einheiten unter dem Mittelpunkt der Box eine grüne Lampe erstellt werden. Ein Parameterloser Konstruktor soll eine neue Ampel an den Koordinaten (0|0) erstellen.
public class Ampel
{
private Box box;
private Lampe rot, gruen;
public Ampel(double x, double y)
{
this.box = new Box(x,y);
this.rot = new Lampe("rot");
this.lampe.setzeMittelpunkt(x,y+5);
this.gruen= new Lampe("gruen");
this.lampe.setzeMittelpunkt(x,y-5);
}
}
Zunächst werden die Referenzen für das Gehäuse und die beiden Lampen deklariert. Im Konstruktor wird erst der vorhin selbst geschriebene Konstruktor von Box aufgerufen. Danach erfolgt die Initialisierung der beiden Lampen. Sie haben dieselbe x-Koordinate aber unterschiedliche y-Koordinaten (y+5 bzw. y-5).
Teste deine Klasse. Kannst du Ampeln an unterschiedlicher Stelle erstellen?
Verändernde Methoden
Das Tutorial ist beendet. Das nächste ist eigene Methoden . Wenn du Feedback für uns hast, melde dich gerne.