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.

160 8. Objektorientierung Allgeme<strong>in</strong><br />

Es ist also zw<strong>in</strong>gend notwendig, dass man während des gesamten Designprozesses<br />

immer e<strong>in</strong>en klaren Blick für die Verantwortlichkeiten der e<strong>in</strong>zelnen<br />

Klassen und Objekte hat und diese auch immer wieder auf ihre S<strong>in</strong>nhaftigkeit<br />

überprüft.<br />

E<strong>in</strong>e Kle<strong>in</strong>igkeit fehlt uns allerd<strong>in</strong>gs noch, um s<strong>in</strong>nvoll OO Design betreiben<br />

zu können. Es lässt sich leicht überlegen, das es recht mühsam und vor<br />

allem unnötig se<strong>in</strong> kann, für jeden unterschiedlichen Telefontyp e<strong>in</strong>e eigene<br />

Klasse zu designen, die im Grunde genommen fast dasselbe tut wie alle anderen<br />

speziellen Telefonklassen, nur dass e<strong>in</strong> paar Kle<strong>in</strong>igkeiten verändert s<strong>in</strong>d.<br />

Stellen wir uns e<strong>in</strong>fach vor, dass auf e<strong>in</strong>em anderen Schreibtisch e<strong>in</strong> Telefon<br />

steht, das zusätzlich zum numerischen Block noch e<strong>in</strong>en weiteren frei programmierbaren<br />

Tastenblock besitzt. Es wäre doch wirklich nicht besonders<br />

s<strong>in</strong>nvoll, nur deswegen alles <strong>in</strong>cl. Hörer, Ziffernblock, Kabel zum Telefonnetz,<br />

etc. vollständig neu zu designen, bloß weil e<strong>in</strong> Teil dazugekommen ist.<br />

Genauso s<strong>in</strong>nlos wäre es, das gesamte Design des e<strong>in</strong>facheren Telefons zu<br />

kopieren und beim komplizierteren Telefon dann die noch fehlende Funktionalität<br />

zu ergänzen. Man stelle sich nur e<strong>in</strong>mal vor, das Design wurde oft<br />

genug kopiert und plötzlich ergibt sich aus welchen Gründen auch immer e<strong>in</strong>e<br />

Änderung im Design der Grundfunktionalität e<strong>in</strong>es Telefons. Dann müssten<br />

alle Telefonklassen überarbeitet werden (von realen Implementationen und<br />

den dabei <strong>in</strong> der Natur der Sache liegenden Fehlerbehebungen will ich hier<br />

noch gar nicht sprechen :-)).<br />

Was man sich wünschen würde wäre folgende Möglichkeit:<br />

• Man entwirft e<strong>in</strong> Design für e<strong>in</strong>e Klasse Telefon, das die M<strong>in</strong>imalversion<br />

e<strong>in</strong>es Telefons beschreibt, wie wir das zuvor gemacht haben.<br />

• Sollte man e<strong>in</strong> anderes Telefon wünschen, also z.B. e<strong>in</strong>es mit e<strong>in</strong>em zusätzlichen<br />

Tastenblock oder mit e<strong>in</strong>em Display oder mit beidem, dann verwendet<br />

man die bereits existente Klasse und erweitert sie nur um die zusätzlichen<br />

Eigenschaften und Interaktionsmöglichkeiten.<br />

Diese Art der Wiederverwendbarkeit ist, wie zu erwarten, e<strong>in</strong>es der essentiellen<br />

Konzepte der OO <strong>Softwareentwicklung</strong> und wird durch den Mechanismus<br />

der Ableitung realisiert. E<strong>in</strong>e solche Ableitung funktioniert folgendermaßen:<br />

• Es gibt e<strong>in</strong>e Basisklasse, die e<strong>in</strong>e Grundfunktionalität def<strong>in</strong>iert, die allen<br />

Vertretern dieser Klasse zu eigen ist. Im Falle unseres Telefons ist dies<br />

die m<strong>in</strong>imale Funktionalität, die alles zum Thema anrufen und angerufen<br />

werden zur Verfügung stellt.<br />

• Es kann beliebig viele Klassen geben, die von der Basisklasse abgeleitet<br />

s<strong>in</strong>d. Durch die Ableitung erben sie automatisch die Eigenschaften der<br />

Basisklasse. Genau dadurch erspart man sich das Kopieren.<br />

Anm.: In der Fachliteratur f<strong>in</strong>det sich sehr oft der englische Begriff Inheritance<br />

für die Vererbung.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!