Abstrakte Klassen

Abstrakte Klassen sind Klassen, die nicht instanziiert werden können und dazu dienen, eine gemeinsame Basis für andere Klassen bereitzustellen. Sie können abstrakte Methoden enthalten, die von den abgeleiteten Klassen implementiert werden müssen. Abstrakte Klassen sind nützlich, um eine gemeinsame Schnittstelle und Implementierung für verwandte Klassen zu definieren.

1. Abstrakte Klassen für Verschlüsselung

Sie erinnern sich bestimmt an die Verschlüsselungsaufgabe aus einer vorherigen Übung.

Wichtig

🚩 Ändern Sie Ihren Code aus der Übung so ab, dass er nun eine abstrakte Klasse anstelle des Interfaces IVerschluesselung verwendet. Testen Sie Ihre Implementierung mit dem bereits vorhandenen Hauptprogramm und passen Sie dieses ebenfalls an.

2. Konzeptuelle Fragen zu abstrakten Klassen

a) Recherche auf Github

🚩Gehen Sie auf die Plattform github.com und suchen Sie dort ein Java-Projekt, welches eine abstrakte Klasse enthält. Machen Sie sich ein Bild davon, was die abstrakte Klasse tut, also welche Funktion sie erfüllt und wo sie überall verwendet wird. Halten Sie Ihre Beobachtungen fest.

b) Abstrakte Klassen und Interfaces

🚩 Beschreiben Sie ein Szenario, in dem sowohl eine abstrakte Klasse als auch ein Interface sinnvoll angewendet werden können. Erklären Sie, wie diese beiden Konzepte in Ihrem Beispiel zusammenwirken, und überlegen Sie, welche Vorteile diese Kombination bietet.

c) Polymorphie

🚩 Warum können keine Instanzen von abstrakten Klassen erstellt werden? Welche Rolle spielt dabei das Konzept der Polymorphie?

3. Rollenspiellogik

Sie sind gerade dabei, ein Rollenspiel zu entwickeln. Die Spielmechanik sieht vor, dass verschiedene Charaktere unterschiedliche Kampfstile haben.

Role-Playing-Game Image, showing fictional world with two characters holding swords.

Wichtig

🚩 Entwickeln Sie eine abstrakte Klasse Spielcharakter mit einer abstrakten Methode angreifen() und einer konkreten Methode verteidigen(). Erstellen Sie ein Interface Strategie mit einer Methode kampfmanoever(). Implementieren Sie verschiedene Charakterklassen (z. B. Krieger, Magier), die von Spielcharakter erben und das Interface Strategie einsetzen, um unterschiedliche Kampfstile darzustellen. Sie können, der Einfachheit halber, Konsolenausgaben für die einzelnen Methoden verwenden, um deren Ausführung anzudeuten.