Die Ausganslage
ist eine alte OOA-Prüfung aus dem Jahr 2002 (OOA = objekt-orientierte Analyse).
Das Spiel 'Schiffe versenken' musste damals objekt-orientiert modelliert werden:
Der Benutzer spielt gegen eine
Schiffs-Flotte. Diese Flotte besteht aus Schiffen, die vertikal oder horizontal auf dem abgebildeteten Meer
(bestehend aus 10 X 10 Feldern) für den Benutzer unsichtbar angeordnet sind, wobei sich die Schiffe
nicht berühren dürfen:
• 4 x Einer-Schiffe
• 3 x Zweier-Schiffe
• 2 x Dreier-Schiffe
und
• 1 x Vierer-Schiff
Der Benutzer kann
nun via der Koordinaten einen Schuss abgeben, z.B. in X-Richtung C und in Y-Richtung 6.
Hat der Schuss getroffen, so erscheint ein h (hit), sonst ein t (try). Das heisst, dass der Benutzer
auf einen Blick sieht, mit welchen Koordinaten er schon einmal einen Schuss
abgegeben hat. Ist ein ganzes Schiff zerstört, so wird dies mit einem
d (destroyed) dargestellt. Ist die ganze Schiffs-Flotte
zerstört, so ist der Benutzer Gewinner. Gibt der Benutzer vorher auf,
so ist er Verlierer.
Aus der Muster-Lösung dieser Prüfung soll nun eine Programm in C++ entwickelt werden,
wobei eine 3-Schichen-Architektur anzustreben ist. Verschiedene Schichten bedeutet, dass
verschiedene Aufgaben, z. B. die Geschäftslogik (das ist der rechnerische Teil des
Programms) oder das GUI (die Benutzeroberfläche) klar voneinander getrennt sind
und beliebig austauschbar sein sollten.