Dr. Matthias Grabert Abteilung Angewandte
Informationsverarbeitung 18. Dezember 2002
Johannes Mayer Blatt 8
Objektorientierte Softwareentwicklung mit C++ (WS 2002/2003)
Abgabetermin: 9. Januar 2003
Ein Schachbrett besteht aus Feldern, deren Positionen
durch eine Buchstaben-Zahlen-Kombination, wie z.B. a7, c8, e5, h4, etc.,
angegeben werden:
Unser Mini-Schach bestehe aus lediglich drei Typen von Figuren -
Türme, Läufer und Damen - und den beiden Figuren-Farben weiß und schwarz.
Türme dürfen horizontal und vertikal beliebig weit ziehen.
Bei Läufern gilt dasselbe, jedoch diagonal statt horizontal bzw. vertikal.
Damen dürfen horizontal, vertikal und diagonal beliebig weit ziehen.
Beim Ziehen mit einer bel. Figur darf natürlich keine andere Figur im Weg
stehen. Außerdem darf auf dem Feld, auf das eine Figur zieht, nicht eine
Figur mit derselben Farbe stehen. Eine Figur mit der anderen Farbe, die
auf dem Zielfeld steht, wird aus dem Spiel ,,geworfen``.
- (2 Punkte)
Modellieren sie Brett und Figuren unseres Mini-Schachs durch ein
Klassendiagramm (mit Angabe von has-a- und is-a-Beziehungen).
Ihre Modellierung soll das Hinzufügen weiterer Typen von Figuren problemlos
ermöglichen.
- (6 Punkte)
Entwickeln Sie - basierend auf Ihrem Design - ein aus mehreren
Klassen bestehendes Programm,
welches Mini-Schach insofern implementiert, dass im Programm
(,,festverdrahtet``) Figuren auf das Brett gesetzt werden und
in einer Schleife jeweils ein Zug eingegeben werden kann
(z.B. von a3 nach c7), dieser - falls möglich - ausgeführt wird
und das veränderte Brett (mit den Figuren) dargestellt wird
(solange bis die Schleife abgebrochen wird).
Verwenden sie hierbei auch virtuelle Methoden und Polymorphie.
Schreiben Sie zur Ausgabe der Figuren eine einzige
Methode und verwenden Sie dabei dynamische Casts zur Typprüfung.
(Jede Figur könnte z.B. eine Methode besitzen, mit der man überprüfen
kann, ob ein Zug auf ein gegebenes Feld möglich ist.)
- (2 Punkte)
Wie könnte in diesem Zusammenhang Mehrfachvererbung sinnvoll eingesetzt
werden? Geben Sie ein entsprechendes Klassendiagramm an.
Erklären Sie Ihrem Tutor, ob virtuelle Basisklassen hier notwendig sind
und was es mit diesen auf sich hat.
Johannes Mayer
2002-12-18