8.581
Bearbeitungen
Jneug (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Jneug (Diskussion | Beiträge) 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. |
Bearbeitungen