K (Konstruktor-Methode)
(Konstruktor-Methode)
Zeile 59: Zeile 59:
 
</code>
 
</code>
  
Mit <code>public Boden()</code> erstellst du einen Konstruktor, der keine Parameter entgegen nimmt. Der Konstruktor muss immer genau so heißen wie die Klasse. Als Methode bekommt er jedoch runde Klammern. In seinem ''Rumpf'' richtst du  
+
Mit <code>public Boden()</code> erstellst du einen Konstruktor, der keine Parameter entgegen nimmt. Der Konstruktor muss immer genau so heißen wie die Klasse. Als Methode bekommt er jedoch runde Klammern. In seinem ''Rumpf'' richtest du dein Objekt so ein, wie du es haben möchtest, wenn es neu erzeugt wird.
 +
<code>super()</code> bewirkt, dass der geerbte Konstruktor erst einmal all das tut, was du kennst: Ein kleines rotes Rechteck oben rechts im Fenster.
 +
Danach wird die Größe angepasst, der Mittelpunkt gesetzt, die Reibung eingestellt und der Boden statisch gemacht.
  
Übersetze deine Klasse und erzeuge ein Objekt davon.
+
Übersetze deine Klasse und erzeuge ein Objekt davon. Funktioniert alles?
 +
 
 +
==  Anregungen zum Experimentieren ==

Version vom 5. Januar 2020, 22:33 Uhr


Dies ist ein Tutorial für die Edu-Variante der Engine Alpha 4.x. Eine Übersicht aller Edu-Tutorials siehst du hier.

Inhalt

In diesem Tutorial:

  • Lernst du die grundlegende Vererbungs-Hierarchie der Edu-Engine kennen
  • Schreibst du deine erste eigene Klasse

Vererbung

Klassendiagramm der Vererbungs-Hierarchie: Unterklassen von EduActor und die Klasse Audio außerhalb dieser Hierarchie

Vererbung bedeutet beim Programmieren, man den Code eines anderen übernimmt und in einer "Ergänzungs-Datei" daran weiter arbeitest. Danach kann man auf alle Methoden der Oberklasse(n) zugreifen. Der Sinn ist, dass man z.B. zusätzliche Methoden erstellt oder auf vorgegebene Mechanismen (Mausklick, Tastendruck, ...) mit eigenem Code reagiert. Das nennt man dann überschreiben von Methoden. Man sagt auch, die Unterklasse erweitert die Oberklasse. In JAVA erstellst du eine Unterklasse einer vorgegebenen Oberklasse indem du von dieser erbst.

Vererbungs-Hierarchie der Grafik-Klassen

In der Edu-Engine gibt es bereits vorhandene Vererbung. So sind alle grafisch darstellbaren Klassen Unterklassen der Oberklasse EduActor. Vererbung stellt man im Klassendiagramm durch einen Pfeil mit durchgezogener Linie und geschlossener Pfeilspitze dar.

Erste eigene Unterklasse

Erstelle in deiner Entwicklungsumgebung eine neue Klasse Boden, die von der Klasse KREIS erbt:

public class Boden
extends KREIS
{

}

Mit public class erstellst du ganz allgemein eine neue Klasse. Nach einem Leerzeichen folgt der Name der Klasse, den du frei wählen kannst. extends gibt an, dass diese Klasse von einer anderen Klasse (Oberklasse) erben soll. Nach einem Leerzeichen folgt der Exakte Name der Oberklasse. Hier ist Groß- und Kleinschreibung wichtig! Innerhalb der geschweiften Klammern wirst du später deinen eigenen Code unterbringen.

Übersetze deine Klasse und erzeuge ein Objekt davon. Rufe einige Methoden auf, die du von KREIS geerbt hast und versichere dich, dass dein Ball nun alles hat zw. kann, was auch der KREIS hat bzw. kann. Du hast übrigens nicht nur von KREIS geerbt. Da KREIS wiederum von EduActor erbt, verfügt dein Objekt auch dessen Methoden wie z.B. macheDynamisch().

Konstruktor-Methode

Der Konstruktor einer Klasse ist eine Methode, die später die Objekte erzeugt. Du kennst die Konstruktoren bon RECHTECK und KREIS bereits. Du hast damit im vorigen Tutorial die Objekte erzeugt. In BlueJ hast du dazu mit rechts auf die Klassenkarte geklickt und z.B. new Ball() oder new KREIS() aufgerufen. Bei deiner Klasse Boden hast du gerade einen Konstruktor benutzt, ohne einen geschrieben zu haben. BLueJ hat hier für dich stillschweigend den geerbten Konstruktor aufgerufen. In deinem eigenen Konstruktor kannst du aber selbst entscheiden, wie neue Objekte aussehen:

public class Boden extends RECHTECK {

  public Boden()
  {
     super();
     super.setzeGroesse(20,0.5);
     super.setzeMittelpunkt(0,-8);
     super.setzeReibung(0.2);
     super.macheStatisch();
  }

}

Mit public Boden() erstellst du einen Konstruktor, der keine Parameter entgegen nimmt. Der Konstruktor muss immer genau so heißen wie die Klasse. Als Methode bekommt er jedoch runde Klammern. In seinem Rumpf richtest du dein Objekt so ein, wie du es haben möchtest, wenn es neu erzeugt wird. super() bewirkt, dass der geerbte Konstruktor erst einmal all das tut, was du kennst: Ein kleines rotes Rechteck oben rechts im Fenster. Danach wird die Größe angepasst, der Mittelpunkt gesetzt, die Reibung eingestellt und der Boden statisch gemacht.

Übersetze deine Klasse und erzeuge ein Objekt davon. Funktioniert alles?

Anregungen zum Experimentieren