Lernpfad:Hehomon/6: Unterschied zwischen den Versionen

2.084 Bytes hinzugefügt ,  13:29, 3. Mär. 2020
keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 8: Zeile 8:
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).
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 [[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.
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! ==
Zeile 14: Zeile 14:
[[Bild:Alligung.png|center|frame|„Alligung“ - Ein Drachen-Hehomon]]
[[Bild:Alligung.png|center|frame|„Alligung“ - Ein Drachen-Hehomon]]


Wir implementieren nun unser erstes ''Hehomon'': Den schrecklichen '''Alligung'''
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.


[[Quelltext:Hehomon.java]]
{{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