30.06.2013 Aufrufe

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

9.3 Abgeleitete Klassen 197<br />

• Man kann naturgemäß Karten auf die Vorderseite oder auf die Rückseite<br />

legen und man kann sie auch umdrehen. Was sich hierbei verändert, ist<br />

e<strong>in</strong>fach die Seite, die sie zeigen. Aus Gründen der E<strong>in</strong>fachheit ignoriere<br />

ich hier e<strong>in</strong>mal, dass man auch Kartenhäuser bauen kann und damit beide<br />

Seiten sieht :-).<br />

• Im Fall unseres Memory Spiels wissen wir, dass wir e<strong>in</strong>e spezielle Art von<br />

Karten verwenden, nämlich solche, die auf der Vorderseite e<strong>in</strong> Symbol tragen<br />

und die alle gleich aussehen, wenn man die Rückseite betrachtet.<br />

Es wäre also nett, wenn man das folgende wirklichkeitsnahe Modell <strong>in</strong> Software<br />

gießen könnte:<br />

• Es gibt Karten.<br />

• Karten kann man h<strong>in</strong>legen und zwar sowohl auf die Vorder- als auch auf<br />

die Rückseite.<br />

• Was man von den Karten zu sehen bekommt, hängt von der Seite ab, auf<br />

der sie liegen.<br />

• Man kann Karten umdrehen.<br />

• Es gibt für das Memory Spiel spezielle Karten.<br />

• Die speziellen Karten haben alle Eigenschaften der allgeme<strong>in</strong>en Karten,<br />

wie sie zuerst beschrieben wurden.<br />

• Die speziellen Karten haben auf der Vorderseite e<strong>in</strong> Symbol.<br />

• Die speziellen Karten haben alle e<strong>in</strong> und dieselbe Rückseite (dass das mit<br />

derselben Rückseite besser von außen bestimmt wird, als zu e<strong>in</strong>er Klasseneigenschaft<br />

zu werden, ist e<strong>in</strong>e eigene Geschichte :-)).<br />

Nach den Pr<strong>in</strong>zipien aus Kapitel 8 sieht das Modell also folgendermaßen aus:<br />

• Es gibt e<strong>in</strong>e Klasse Karten mit den zuvor erwähnten Eigenschaften.<br />

• Es gibt e<strong>in</strong>e Klasse Memory Karten. Diese s<strong>in</strong>d Karten (=IS-A Relation)<br />

mit besonderen Zusatzeigenschaften.<br />

Was liegt also näher, als e<strong>in</strong>e allgeme<strong>in</strong>e Klasse Karte zu schreiben und danach<br />

e<strong>in</strong>e spezielle Klasse Memory Karte zu implementieren, die von dieser<br />

allgeme<strong>in</strong>en Klasse abgeleitet ist? In dieser speziellen Klasse f<strong>in</strong>det dann die<br />

Memory spezifische Funktionalität Platz, die zuvor erwähnt wurde. Sehen<br />

wir uns e<strong>in</strong>e solche Art der Implementation also e<strong>in</strong>fach e<strong>in</strong>mal <strong>in</strong> C ++ an,<br />

um herauszuf<strong>in</strong>den, wie diese Modellierung von der Sprache unterstützt wird.<br />

Unser Startpunkt ist die Deklaration der Basisklasse (game_card.h):<br />

1 // game card . h − d e c l a r a t i o n of a general card f o r games<br />

2<br />

3 #ifndef game card h<br />

4 #def<strong>in</strong>e game card h<br />

5<br />

6 //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />

7 /∗<br />

8 ∗ GameCard<br />

9 ∗

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!