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.

196 9. Klassen <strong>in</strong> <strong>C++</strong><br />

number o f cards ( with : : operator ) : 1<br />

number o f cards ( c a l l e d on n e x t t e s t c a r d ) : 2<br />

number o f cards ( c a l l e d on t e s t c a r d ) : 2<br />

Der Vollständigkeit halber möchte ich noch erwähnen, dass das entsprechende<br />

Makefile zum Erstellen des Programms auf der beiliegenden CD-ROM<br />

mitgeliefert wird und MemoryGameCardTestV2Makefile heißt.<br />

Mit diesem Beispiel wurden nun e<strong>in</strong>mal <strong>in</strong> e<strong>in</strong>em ersten Durchgang die<br />

Grundmechanismen der Deklaration, Def<strong>in</strong>ition und Verwendung von e<strong>in</strong>fachen<br />

Klassen erklärt. Bevor wir zu weiteren Features, wie z.B. Operator<br />

Overload<strong>in</strong>g kommen, möchte ich das Bild im S<strong>in</strong>ne der Abhandlungen aus<br />

Kapitel 8 abrunden und das Pr<strong>in</strong>zip der Ableitung näher erläutern. Jedoch<br />

möchte ich für alle C ++ Neul<strong>in</strong>gen an dieser Stelle die Empfehlung aussprechen,<br />

das bisher Gelernte durch Ausprobieren an kle<strong>in</strong>en Beispielen wirklich<br />

zu ver<strong>in</strong>nerlichen. Ansonsten ist die Gefahr sehr groß, sich <strong>in</strong> der Folge <strong>in</strong><br />

Details zu verlieren und den Überblick nicht mehr bewahren zu können.<br />

Der Phantasie, was man ausprobieren könnte, s<strong>in</strong>d ke<strong>in</strong>e Grenzen gesetzt.<br />

Z.B. könnte man sich an e<strong>in</strong>er kle<strong>in</strong>en Klasse zum Speichern e<strong>in</strong>es Datums,<br />

e<strong>in</strong>er allgeme<strong>in</strong>en Array Klasse, e<strong>in</strong>er kle<strong>in</strong>en Str<strong>in</strong>g Klasse, die die so fehleranfällige<br />

direkte Verwendung des char * kapselt oder an mannigfaltigen<br />

andere kle<strong>in</strong>en Helferchen versuchen.<br />

Vorsicht Falle: Bei aller E<strong>in</strong>dr<strong>in</strong>glichkeit, mit der ich Leser zum Spielen und<br />

Probieren anregen möchte, soll e<strong>in</strong>e große Gefahr nicht unerwähnt bleiben:<br />

Es fehlt mit dem bisher vermittelten Wissen noch sehr viel und sehr wichtiges<br />

Handwerkszeug, das man für e<strong>in</strong>e “echte” und saubere OO Entwicklung <strong>in</strong><br />

C ++ braucht.<br />

Ke<strong>in</strong>esfalls also sollen sich Leser nun nach dem Motto “Ich weiß, wie<br />

das funktioniert” bereits jetzt an Utilities heranmachen, deren E<strong>in</strong>satz <strong>in</strong><br />

auslieferbaren Produkten geplant ist. Mit dem bisher Gelernten geht e<strong>in</strong><br />

solches Unterfangen unter Garantie schief!<br />

9.3 Abgeleitete Klassen<br />

Wie <strong>in</strong> Kapitel 8 besprochen, kann man Klassen von anderen Klassen ableiten<br />

und erbt damit ihre Eigenschaften. Dieser Mechanismus hilft, um<br />

entsprechend der Natur der <strong>in</strong> Software modellierten Welt Klassifikationsund<br />

Abstraktionsebenen e<strong>in</strong>zuziehen. Bleiben wir bei unserem begonnenen<br />

Memory Spiel und werfen e<strong>in</strong>en Blick auf die dortigen Gegebenheiten:<br />

• Karten werden nicht nur bei Memory verwendet, es gibt mannigfaltige<br />

Spiele, bei denen man es mit Karten zu tun hat.<br />

• Je nach Spiel haben die Karten verschiedene Eigenschaften. Grundsätzlich<br />

liegt allerd<strong>in</strong>gs e<strong>in</strong>es <strong>in</strong> der Natur von Karten: Sie haben e<strong>in</strong>e Vorder- und<br />

e<strong>in</strong>e Rückseite, wie diese auch immer beschaffen s<strong>in</strong>d.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!