Lernpfad:Hehomon/6: Unterschied zwischen den Versionen

3.090 Bytes hinzugefügt ,  13:29, 3. Mär. 2020
keine Bearbeitungszusammenfassung
Markierungen: Mobile Bearbeitung Mobile Web-Bearbeitung
Keine Bearbeitungszusammenfassung
 
(8 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{{NNavigation}}
{{NNavigation}}


[[Quelltext:Hehomon.java]]
In unserem Spiel existieren nun ''Hehomons''. Um zwei gegeneinander antreten zu lassen können wir nun zwei Objekte der Klasse mit verschiedenen Parametern erstellen. Aber das wäre aus zwei Gründen wenig spannend:
 
# Die Methoden für Angriffe und Verteidigungen sind bisher leer.
# Die Hehomons sollen unterschiedliche Fähigkeiten besitzen, und nicht genau gleich Angreifen.
 
Zur Lösung dieser Probleme könnten wir einfach die Klasse <code>Hehomon</code> für jede Kreatur kopieren und die Angriffe und Verteidigungen entsprechend implementieren. Das hat aber das Problem, dass wir Änderungen (zum Beispiel eine neue Eigenschaft) in allen Kreatur-Klassen vornehmen müssen. Dabei passieren schnell Fehler (und es ist nervig).
 
Daher nutzen wir das Konzept der [[Lernpfad:Objektorientierte Programmierung mit Java/Vererbung|Vererbung]]. ''Vererbung'' ist eines der wichtigsten Konzepte der Objektorientierten Programmierung. Es erlaubt nämlich, eine (Ober-)Klasse als Grundlage für neue (Unter-)Klassen zu verwenden. Die Unterklassen haben dann alle Eigenschaften und Fähigkeiten der Oberklasse, können aber auch eigene hinzufügen.


== Ich wähle dich, Alligung! ==
== Ich wähle dich, Alligung! ==


[[Bild:Alligung.png|left|frame|„Alligung“ - Ein Drachen-Hehomon]] In unserem Spiel existieren nun Hehomons. Um zwei gegeneinander antreten zu lassen können wir nun zwei Objekte der Klasse mit verschiedenen Parametern erstellen.
[[Bild:Alligung.png|center|frame|„Alligung“ - Ein Drachen-Hehomon]]
 
Wir implementieren nun unser erstes ''Hehomon'': Den schrecklichen '''Alligung'''.
 
<code>Alligung</code> ''erbt'' von der Klasse <code>Hehomon</code>. Dazu schreibt ihr hinter den Klassennamen <code>extends Hehomon</code>. Das war's schon.
 
{{Aufgabe:Start|Icon=BlueJ Logo.png}}
Erstellt eine neue Klasse <code>Alligung</code> im Projekt, die von <code>Hehomon</code> erbt.
 
'''Hinweis:''' Alternativ könnt ihr statt ''Alligung'' auch schon eines eurer eigenen ''Hehomons'' umsetzen. Falls ihr im letzten Schritt Schwierigkeiten mit der Klasse <code>Hehomon</code> hattet, könnt ihr euch Hilfe in der [[Quelltext:Hehomon.java|Musterlösung]] suchen.
{{Aufgabe:End}}
 
Naja, das war's noch nicht ganz. Die Klasse <code>Hehomon</code> erfordert im Konstruktor eine ganze Menge von Parametern (<code>pName</code>, <code>pTyp</code>, <code>pLp</code>, ...), die beim Erstellen eines neuen Objekts angegeben werden müssen.
 
{{Info:Start}}
'''Zur Erinnerung:''' Der ''Konstruktor'' ist eine spezielle Methode, die beim Erstellen einer neuen Objektinstanz der Klasse ''als erstes'' aufgerufen wird.
{{Info:End}}
 
Wir müssen also im Konstruktor von <code>Alligung</code> dem Konstruktor der ''Oberklasse'' (oder auch ''Superklasse'') die Werte für die Parameter übergeben. Das machen wir mit der speziellen Methode <code>super</code>, die immer als erstes im Konstruktor einer Unterklasse aufgerufen werden muss.
 
Für <code>Alligung</code> sieht das so aus:
<syntaxhighlight lang="Java">
public Alligung() {
   super("Alligung", "drache", 100, 8, 6, "Alli-BÄMM", "Klauen-Kratzer", "Allez Hopp", "Gator-Aid");
}
</syntaxhighlight>
 
{{Aufgabe:Start|Icon=BlueJ Logo.png}}
Ergänzt den Aufruf des Konstruktors der Oberklasse in <code>Alligung</code>.
{{Aufgabe:End}}
 
Die Klasse <code>Alligung</code> sollte nun so aussehen:
<syntaxhighlight lang="Java">
public class Alligung extends Hehomon {
    public Alligung() {
       super("Alligung", "drache", 100, 8, 6, "Alli-BÄMM", "Klauen-Kratzer", "Allez Hopp", "Gator-Aid");
    }
}
</syntaxhighlight>
 
Im {{Pfad|7|nächsten Schritt}} bringe wir ''Alligung'' seine Fähigkeiten bei.
8.581

Bearbeitungen