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.

8.3 Richtige Verwendung der OO Mechanismen 163<br />

– Wie es bei den Daten die Class-Members gibt, so gibt es bei den Interaktionen<br />

die Class-Methods. Diese haben dieselbe Eigenschaft wie<br />

Class-Members, nämlich, dass sie sich nicht auf e<strong>in</strong>e bestimmte Instanz<br />

beziehen, sondern losgelöst von den E<strong>in</strong>zelobjekten s<strong>in</strong>d. Wie leicht e<strong>in</strong>zusehen<br />

ist, kann mittels Class-Methods auch nur auf Class-Members zugegriffen<br />

werden und nicht auf die <strong>in</strong>stanzbezogenen Member-Variablen,<br />

denn es fehlt ja der Bezug zu e<strong>in</strong>er bestimmten Instanz e<strong>in</strong>er Klasse.<br />

• Klassen können von e<strong>in</strong>er oder mehreren sogenannten Elternklassen abgeleitet<br />

se<strong>in</strong>. Damit erben sie deren Eigenschaften und können selbst neue<br />

h<strong>in</strong>zufügen bzw. die geerbten Eigenschaften nach Bedarf (s<strong>in</strong>nvoll!) modifizieren.<br />

Die entstehende Ableitungshierarchie kann beliebig tief se<strong>in</strong>.<br />

• Objekte s<strong>in</strong>d Instanzen von Klassen. Damit ergibt sich automatisch, dass<br />

jede Instanz e<strong>in</strong>er Klasse e<strong>in</strong>en eigenen Satz von Member-Variablen besitzt,<br />

wie sie durch die Klasse deklariert wurden. Außerdem beziehen sich die<br />

Methoden, die <strong>in</strong> der Klasse deklariert wurden, immer auf e<strong>in</strong> bestimmtes<br />

Objekt. Sie s<strong>in</strong>d quasi lokal zum Objekt <strong>in</strong> dem S<strong>in</strong>n, dass sie immer mit<br />

dem Variablensatz der Instanz arbeiten, auf der sie aufgerufen werden.<br />

Ich weiß schon – E<strong>in</strong>steiger <strong>in</strong> die OO Programmierung wünschen sich gerade<br />

die Instanz Klaus Schmaranz der Klasse Buchautor, die abgeleitet von der<br />

Klasse Mensch ist, um auf diesem Objekt die Methode rückt ihm den Kopf<br />

zurecht aufzurufen. Mit e<strong>in</strong>em kle<strong>in</strong>en Beispiel ist die Verwirrung aber schnell<br />

zu beheben, also sehen wir uns e<strong>in</strong>fach an, wie das Modell aussieht, das es<br />

unterstützt, me<strong>in</strong>en Kopf zurechtzurücken:<br />

• Es gibt e<strong>in</strong>e Klasse Head. Unter anderem hat diese Klasse folgende Eigenschaften:<br />

– E<strong>in</strong>e der Membervariablen, die dar<strong>in</strong> deklariert s<strong>in</strong>d, ist <strong>in</strong>_place und<br />

diese ist vom Typ bool.<br />

– E<strong>in</strong>e der Methoden, die dar<strong>in</strong> deklariert s<strong>in</strong>d, ist putInPlace. Aufruf<br />

derselben bewirkt e<strong>in</strong> Zurechtrücken, falls dies notwendig ist.<br />

• Es gibt e<strong>in</strong>e Klasse Human. Unter anderem hat diese Klasse folgende Eigenschaften:<br />

– E<strong>in</strong>e der Membervariablen, die dar<strong>in</strong> deklariert s<strong>in</strong>d, ist name und diese<br />

hält den Namen des Menschen.<br />

– E<strong>in</strong>e weitere der Membervariablen, die dar<strong>in</strong> deklariert s<strong>in</strong>d, ist the_head<br />

und diese ist von der Klasse Head.<br />

– E<strong>in</strong>e der Methoden, die dar<strong>in</strong> deklariert s<strong>in</strong>d, ist putHeadInPlace. Aufruf<br />

derselben bewirkt e<strong>in</strong> Zurechtrücken des Kopfs, falls dies nötig ist.<br />

– E<strong>in</strong>er der Class-Members, die dar<strong>in</strong> def<strong>in</strong>iert s<strong>in</strong>d, ist <strong>in</strong>stance_counter.<br />

Dieser hält die derzeitige Anzahl von derzeit existierenden Menschen.<br />

• Es gibt e<strong>in</strong>e Klasse Author, die von Human abgeleitet ist. In ihr werden<br />

die zusätzlichen Members (Variablen und Methoden) deklariert, die e<strong>in</strong>en<br />

Menschen zum Buchautor machen. Auch wenn böse Zungen behaupten,<br />

dass diese Klasse nun zu Unrecht die Eigenschaft von Human geerbt hat,

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!