Methoden (3/3)

Eine Methode sollte man aber nur dann innerhalb der Deklaration einer Klasse definieren, wenn sie sehr kurz ist. Gedacht ist diese Form der Definition vor allem für die Zugriffsmethoden, die ja häufig nur einen Wert zurückgeben oder setzen. Daher werden derart definierte Methoden auch immer so interpretiert, als ob sie mit dem Schlüsselwort inline gekennzeichnet wären. Es wird bevorzugt also kein Funktionsaufruf generiert, sondern die Funktion wird so compiliert, als ob sie im aufrufenden Programm selbst stände.

Das ist vor allem bei den Methoden, die nur dazu da sind, Elemente der Klasse zu lesen oder zu schreiben (den sogenannten Zugriffsmethoden), sehr sinnvoll, da sonst jeder Zugriff auf die Elemente viel zusätzliche Zeit in Anspruch nehmen würde und die Performance dadurch stark in Mitleidenschaft gezogen würde. Aber auch für andere kleine Methoden macht diese Form der Definition Sinn, nämlich genau da, wo auch sonst inline stehen sollte. Wir werden im folgenden viele Methoden so definieren.

Größere Methoden, d.h. Methoden die mehr als nur ein paar Befehle enthalten, sollten aus zwei Gründen ausgelagert werden. Zum einen könnte sich hier der Effekt der Inline-Compilierung negativ bemerkbar machen, da der Code unnötig aufgebläht würde. Zum anderen würde die Deklaration einer Klasse sehr schnell unübersichtlich werden. Das erste Problem sollte zwar nicht auftauchen, da eine große Funktion wohl von kaum einem Compiler wirklich inline compiliert würde (inline ist ja immer nur als Empfehlung zu verstehen), aber es macht wohl auch kaum Sinn, dem Compiler etwas zu empfehlen, daß auf jeden Fall falsch ist.

Ein weiterer Vorteil des Auslagerns der Funktionen ergibt sich dadurch, daß Deklaration und Implementierung getrennt sind. Um eine Funktion bzw. in diesem Fall eine Methode nutzen zu können, muß man nur deren Deklaration kennen. Wenn man nun Deklaration und Implementierung trennt, kann man sich darauf beschränken, die Deklarationen zu veröffentlichen und die Implementierungen kann man geheimhalten. Das wird am Ende des Kapitels noch mal aufgegriffen werden.

Eine besondere Form der Methode ist der Konstruktor. Er soll auf den folgenden Seiten besprochen werden.