30.06.2013 Aufrufe

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

260 10. Memory – e<strong>in</strong> kle<strong>in</strong>es Beispiel<br />

Output Handl<strong>in</strong>g. Das Output Handl<strong>in</strong>g ist dafür verantwortlich, die Ausgabe<br />

des gesamten Spielfeldes, respektive der e<strong>in</strong>zelnen Karten auf ihm, zu<br />

steuern und dafür zu sorgen, dass diese am Bildschirm ersche<strong>in</strong>en. Weil<br />

auch dieses natürlich e<strong>in</strong> allgeme<strong>in</strong>es Modul se<strong>in</strong> soll, wird hier das bereits<br />

mehrfach besprochene Pr<strong>in</strong>zip mittels e<strong>in</strong>er abstrakten darstellbaren Klasse<br />

Anwendung f<strong>in</strong>den.<br />

Da die Randbed<strong>in</strong>gungen hierfür bereits mehrfach aus verschiedenen Gesichtspunkten<br />

besprochen wurden, möchte ich den Lesern hier e<strong>in</strong>e nochmalige<br />

genaue Beschreibung ersparen.<br />

Memory Spielfeld. Das Memory Spielfeld ist im Pr<strong>in</strong>zip e<strong>in</strong>e Matrix von<br />

E<strong>in</strong>zelfeldern, wobei jedes dieser E<strong>in</strong>zelfelder genau e<strong>in</strong>e Karte halten kann.<br />

Im Pr<strong>in</strong>zip gibt es hierfür e<strong>in</strong>e besonders s<strong>in</strong>nvolle Konstruktion: E<strong>in</strong>e Matrix<br />

ist im Pr<strong>in</strong>zip nichts anderes als e<strong>in</strong> Vektor von Vektoren. Die dadurch entstehenden<br />

Zellen halten jeweils e<strong>in</strong>e Karte. Dazu lässt sich leicht e<strong>in</strong> besonders<br />

sauberes Design mittels allgeme<strong>in</strong>er Vektoren und Spezialisierung derselben<br />

auf bestimmte Daten beschreiben. Nur leider fehlen uns derzeit noch e<strong>in</strong><br />

paar wichtige Konstrukte, die e<strong>in</strong>e elegante Umsetzung dieses Designs auf<br />

C ++ Sprachebene ermöglichen. Aus diesem Grund bleiben wir zwar beim<br />

allgeme<strong>in</strong>en Design, die Implementation desselben sollte aber bitte nicht als<br />

Vorlage für e<strong>in</strong> professionelles Vektor-Design dienen.<br />

Memory Karte. Zu den Aspekten des Designs e<strong>in</strong>er Memory Karte möchte<br />

ich mich hier auch nicht weiter auslassen, denn diese wurden bereits mehrfach<br />

aus verschiedenen Blickw<strong>in</strong>keln besprochen. E<strong>in</strong>e Wiederholung an dieser<br />

Stelle wäre dementsprechend langweilig.<br />

Commandl<strong>in</strong>e Handl<strong>in</strong>g. Das Commandl<strong>in</strong>e Handl<strong>in</strong>g bekommt die dem<br />

Programm übergebenen Parameter überreicht und sorgt dafür, dass das entsprechende<br />

Bootstrapp<strong>in</strong>g des Systems stattf<strong>in</strong>det. Im Bootstrapp<strong>in</strong>g werden<br />

die entsprechenden notwendigen Instanzen der Klassen erzeugt und zwar <strong>in</strong><br />

der Form, wie sie den e<strong>in</strong>gegebenen Parametern (Zeilen, Spalten) entspricht.<br />

10.2 Das DDD<br />

Viele Entwickler empf<strong>in</strong>den die Erstellung e<strong>in</strong>es DDD (=Detailed Design Document)<br />

als lästig und zeitraubend und deshalb wird diese Aufgabe oft nur<br />

sehr halbherzig gemacht oder e<strong>in</strong>fach vollständig übersprungen. In Summe<br />

erspart man sich durch diese Herangehensweise aber ke<strong>in</strong>e Zeit, ganz im<br />

Gegenteil! Durch das Fehlen des DDD fallen viele Probleme erst beim Implementieren<br />

der Software auf und führen zu dementsprechend vielen kle<strong>in</strong>eren<br />

und größeren Änderungen derselben <strong>in</strong> dieser Phase. Das Schlimmste bei<br />

diesen Änderungen ist, dass man es <strong>in</strong> Bezug auf die Schnittstellen mit e<strong>in</strong>em<br />

mov<strong>in</strong>g Target zu tun hat. Dadurch werden mit wachsender Größe der<br />

Software die Fehler immer häufiger und schwerer zu lokalisieren, denn man

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!