Gutes Beispiel für Vererbung im Schulunterricht?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
diesch
User
Beiträge: 80
Registriert: Dienstag 14. April 2009, 13:36
Wohnort: Brandenburg a.d. Havel
Kontaktdaten:

lunar hat geschrieben:@bwbg Was ist denn eine Schachfigur unabhängig von ihrer Bewegungsregel?! Es gibt keinen Turm, der sich bewegt wie ein Läufer…
Sie hat z.B. eine Farbe, eine Position und einen Tauschwert. Über den Tauschwert kann man z.B. arithmetische Operatoren implementieren.

Ich finde Schachfiguren aber nicht gut geeignet, um Vererbung zu erklären, denn die Vererbungshierachie ist extrem einfach und langweilig: Alle Klassen erben von der gleichen Basisklasse und überschreiben alle die gleichen Klassenvariablen und Methoden. Das ist wie Addition mit nur positiven ganzen Zahlen und einstelligen Ergebnissen ;-)

Außerdem kann man damit nicht sonderlich viel interessante Sachen machen, weil die Programmierung eines auch nur ansatzweise interessanten Gegners im Unterricht kaum möglich ist. Damit hört das Beispiel auf, kurz bevor es interessant wird (Spieleprogrammierung, KI, ...), und das ist eher frustrierend als motivierend.

Und man muss wohl damit rechnen, dass zumindest einige Schüler kein Schach können.
http://www.florian-diesch.de
lunar

@diesch Der Tauschwert ist meines Erachtens ein Attribut der Bewegungsregel. Ein Turm ist nicht fünf Bauern wert, weil er ein Turm ist, sondern weil er sich bewegt wie ein Turm. Es gibt mithin auch keine Figuren derselben Bewegungsregel, die unterschiedlichen Tauschwert haben.

Ohnehin ist der Tauschwert für ein normales Spiel und mithin für ein einfaches Modell vom Schach nicht von Belang, nicht einmal als Parameter für eine KI. Diese hat ihre eigenen Wertigkeiten, die zwar durchaus aus dem Tauschwert abgeleitet werden können, aber nicht per definitionem mit diesem identisch sind. Ohnehin wird die KI die Wertigkeiten von Figuren während des Spielverlaufs anpassen, in dem Maße, in dem sich die Relevanz einer Figur für den Spielverlauf ändert.

Die Position sehe ich ebenfalls nicht als Attribut der Figur, sondern des Spielzustands. Ein Figur hat keine inhärente Position, sondern immer nur eine Position in einem bestimmten Spiel.

Die Farbe definiere ich wie gesagt überhaupt nicht über ein Attribut, sondern vielmehr einfach über die Mitgliedschaft in einer von zwei Mengen von Exemplaren von Bewegungsregeln.
Benutzeravatar
snafu
User
Beiträge: 6847
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Man könnte eine Klasse `Figur` mit den Attributen `.bezeichnung`, `.farbe`, `.bewegungsregel` definieren, von der zu Spielbeginn die passenden Exemplare erzeugt werden. Ein `Spiel` verwaltet diese Figuren und deren Positionen. Zudem merkt es sich, welche Figuren geschlagen wurden und führt eine Historie über alle bisher getätigten Spielzüge.

Außerdem könnte man eine Klasse `Brett` nutzen, um das aktuelle Spielgeschehen zu rendern - je nach "Ausgabekanal" z.B. für ein Terminal oder für eine grafische Oberfläche. Vielleicht könnte man ja bei `Brett` die Vererbung sinnvoller verwenden. Man müsste halt herausarbeiten, wieviel gemeinsame Funktionalität die Idee eines wie auch immer repräsentierten Bretts enthält.
Antworten