GeoCities
Im Rahmen der Vorlesung 'Software-Entwicklung' soll ein Programm 'Schiffe versenken' möglichst objektorientiert mit C++ entwickelt werden. Die Dokumentation soll vorzugsweise im HTML-Format erfolgen. Diese Seite ist ein Versuch, diese Aufgabe zu lösen.

Die vorgeschlagene Musterlösung weist Mängel auf. Es soll etwa festgehalten werden, auf welche Felder der Spieler bereits geschossen hat, aber es gibt gar kein Objekt, zum Beispiel ein Meer, welches die Versuche des Spielers speichert. Die Datenhaltung müsste also im GUI erfolgen, was aber der Schichtentrennung widerspricht. Auch ist die Beschreibung der Schiffe durch Position und Lage nicht optimal, da die Schiffevielfalt eingeschränkt wird. Ein quadratisches Viererschiff könnte mit diesen Parametern noch charakterisiert werden, aber bei L- und T-Schiffen wäre keine eindeutige Identifizierung mehr möglich. Ein L-Schiff, welches im gelben Feld beginnt und die Richtung nach unten hat, könnte auf dem violetten oder grünen Feld enden. 

Im hier vorliegenden Lösungsansatz wird ein anderer Weg beschritten. Es gibt neu Meeres-Objekte, welche die Positionen der Schiffe und die Schüsse der Spieler festhalten, dafür gibt es keine Schiffs- und Flotten-Objekte mehr. Die Position der Schiffe wird zudem anders codiert, so dass mit ebenfalls nur zwei Parametern auch L- und T-Schiffe zweifelsfrei positioniert werden können. Zusätzliche Schiffe, welche neben den normalen gestreckten Schiffen möglich sind, sind in obenstehender Grafik rot eingezeichnet.

Um eine klare Schichtentrennung zu erreichen, werden ein Control- und ein FIFO-Objekt eingeführt. Das GUI kommuniziert nur mit dem Control-Objekt und holt allenfalls Daten beim FIFO-Objekt ab. Eine direkte Verbindung zwischen dem GUI und den Meeresobjekten besteht nicht. Ebenso werden keine Zeiger übergeben, so dass der Geschäftsprozess und das GUI auf zwei unterschiedlichen Computern laufen könnten.

copyright August 01, 2003 by FHBB NDSI 2003 / c.t.