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.

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

private: Es dürfen ausschließlich Methoden der eigenen Klasse und friend<br />

Funktionen bzw. Klassen, zu denen wir noch später kommen werden,<br />

zugreifen. Der Zugriff von außen, sowie der Zugriff aus von dieser Klasse<br />

abgeleiteten Klassen heraus, ist verboten.<br />

protected: Es dürfen Methoden der eigenen Klasse, friend Funktionen<br />

bzw. Klassen, sowie Methoden aus abgeleiteten Klassen zugreifen. Der<br />

Zugriff für außenstehende Methoden und Funktionen ist nicht gestattet.<br />

public: Es dürfen alle Funktionen und Methoden, egal <strong>in</strong> welchem Verhältnis<br />

sie zur Klasse stehen, zugreifen.<br />

Sollte ke<strong>in</strong> Access Specifier explizit angegeben se<strong>in</strong>, dann gilt alles bis zum<br />

Auftreten des ersten als private. Dies ist auch e<strong>in</strong>er der Unterschiede zwischen<br />

Classes und Structures: Bei Classes gilt alles grundsätzlich als private,<br />

ist also nicht von außen zugreifbar, bei Structures gilt alles grundsätzlich als<br />

public, ist also von außen une<strong>in</strong>geschränkt zugreifbar.<br />

Mir ist schon bewusst, dass bei der Beschreibung der Access Specifiers e<strong>in</strong>ige<br />

D<strong>in</strong>ge vorkommen, die bisher noch nicht bekannt s<strong>in</strong>d. Bitte ke<strong>in</strong>e Panik<br />

deswegen, sobald wir zu den entsprechenden Konstrukten kommen, wird e<strong>in</strong>e<br />

genauere Besprechung folgen. Ich wollte nur bereits hier e<strong>in</strong> vollständiges<br />

Bild der Möglichkeiten schaffen, um zu vermitteln, was es überhaupt gibt.<br />

Die Gültigkeitsbereiche von Access Specifiers s<strong>in</strong>d so def<strong>in</strong>iert, dass e<strong>in</strong><br />

Specifier vom Punkt, an dem er steht, bis zum nächsten auftretenden Access<br />

Specifier bestimmend ist. Es ist auch möglich, dieselben Access Specifiers<br />

mehrfach <strong>in</strong>nerhalb e<strong>in</strong>er Klasse zu verwenden. Z.B. kann man zuerst e<strong>in</strong>en<br />

private Block haben, danach e<strong>in</strong>en public Block, gefolgt von e<strong>in</strong>em erneuten<br />

private Block, etc. Der Grund für diese Regelung ist, dass man den<br />

Entwicklern Freiraum für die eigene Anordnung ihrer Deklarationen lässt und<br />

somit die Lesbarkeit erhöht.<br />

E<strong>in</strong>e E<strong>in</strong>schränkung möchte ich aus Gründen der Lesbarkeit allerd<strong>in</strong>gs<br />

unbed<strong>in</strong>gt zum Standard erheben: Member-Variablen werden immer oben<br />

und Methoden immer erst danach deklariert. E<strong>in</strong>e Mischung, <strong>in</strong> der zuerst<br />

e<strong>in</strong> paar Variablen, danach e<strong>in</strong> paar Methoden und dann wieder e<strong>in</strong> paar<br />

Variablen deklariert werden, ist absolut unleserlich! Als Entwickler will man<br />

<strong>in</strong> jedem Fall auf e<strong>in</strong>en Blick erfassen können, welche Variablen und Methoden<br />

es gibt, ohne gleich die gesamte Klassendeklaration vollständig durchsuchen<br />

zu müssen und vielleicht dabei etwas zu übersehen.<br />

Durch das Wissen um die Gültigkeitsbereiche der Access Specifiers ergibt<br />

sich also nun folgendes Bild:<br />

Die Member-Variable symbol_ ist nur <strong>in</strong>nerhalb der eigenen Klasse und<br />

für abgeleitete Klassen zugreifbar (und natürlich auch für Friends). Alle<br />

Methoden <strong>in</strong> den Zeilen 19, 20, 22 und 23 s<strong>in</strong>d für die Öffentlichkeit verfügbar.<br />

Sie def<strong>in</strong>ieren damit das sogenannte Public Interface der Klasse, also die<br />

Schnittstelle, über die man mit der Klasse regulär arbeiten kann.<br />

E<strong>in</strong> Blick auf die Zeilen 19 und 20 legt allerd<strong>in</strong>gs bei manchen Lesern die<br />

Vermutung nahe, dass bei mir im Laufe des Schreibens e<strong>in</strong> gewisser Zustand

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!