|
Eigene Funktionen schreiben |
|
|
26.02.2010 Eigene Funktionen schreiben
Programmteile die Sie mehrmals in Ihrem Projekt verwenden möchten, sollten Sie nicht einfach nur kopieren und an anderen Stelle wieder einfügen, sondern dafür eine eigene Funktion schreiben. Überall dort wo Sie die entsprechende Funktionalität brauchen, genügt dann nur eine einzige Anweisung, um die entsprechende Funktion aufzurufen. Dadurch reduzieren Sie Ihren Code deutlich, wodurch Ihr Programm wesentlich übersichtlicher wird. Darüber hinaus müssen Sie spätere Änderungen dann nur noch an einer Stelle durchführen, sodass sich Ihr Anwendung viel leichter warten und erweitern lässt.
Aber auch dann wenn einzelne Codeabschnitte zu groß und unübersichtlich werden, sollten Sie zusammenfassbare Teile in einzelne Funktionen ausgliedern. Dadurch schrumpfen übergroße Codebereiche erheblich und werden dadurch wieder deutlich übersichtlicher.
» Neue Funktion anlegen « Eine neue Funktion wird i.d.R. bei einer Komponente hinterlegt, z.B. bei einem Formular. Der Komponenten-Name, also der Ort wo sich die Funktion im Code befindet, wird später auch beim Aufruf der Funktion mit angegeben. Deshalb sollten Sie die Funktion möglichst bei der Komponente hinterlegen, die am meisten mit der Funktion etwas zu tun hat, z.B. weil die Funktion auf die entsprechende Komponente zugreift oder diese in irgend einer Form verändert. Wenn Sie dann auch noch einen aussagekräftigen Funktionsnamen wählen, wird der Funktionsaufruf selbsterklärend, z.B. Formular.berechneBrutto( ). Hierbei gelten dieselben Namensregeln wie bei Variablen.
Erklärung zu den Symbolen:
» Übergabe-Parameter festlegen « Beim Anlegen der Funktion können Sie im Assistenten bei Parameter beliebige Übergabewerte, sprich Parameter festlegen, die der Funktion beim Aufruf als Eingangswerte übergeben werden müssen. Zum Beispiel müsste man einer Funktion die einen Bruttopreis errechnen soll, den Nettopreis sowie den Steuersatz als Eingangswerte übergeben. Sehr wichtig dabei ist die Wahl des richtigen Datentyps. Die hier festgelegten Variablen werden dann automatisch vom Code-Editor definiert und müssen somit in der Funktion selbst nicht mehr definiert werden. Beim späteren Aufruf der Funktion müssen die Parameter dann in derselben Reihenfolge angegeben werden wie in der Funktions-Definition, hier z.B. berechneBrutto(nettoWert, steuerSatz).
» Rückgabewert festlegen « Wenn die Funktion ein Ergebnis liefern soll, müssen Sie im Assistenten die Option Rückgabewert anwählen sowie den Datentyp des Rückgabewertes festlegen, z.B. Decimal. Der Rückgabewert selbst wird am Ende des Funktionscodes mit der Anweisung
» Code der Funktion « Die Variablen, die beim Aufruf der Funktion als Parameter übergeben werden, werden automatisch im Funktionskopf definiert. Die Variable für den Rückgabewert müssen Sie jedoch selber definieren, z.B.
» Funktion aufrufen « Beim Aufruf der Funktion, z.B. berechneBrutto(nettoWert, steuerSatz), müssen lediglich vorab die Variablen definiert werden, die als Parameter übergeben werden müssen sowie die Variable, die den Rückgabewert aufnehmen muss. Beim Funktionsaufruf muss die Komponente angegeben werden, bei der die Funktion hinterlegt ist, z.B. bei der Komponente Formular.
» Funktion beim Fenster hinterlegen « Wenn die Funktion zu keiner GUI-Komponente richtig passt, dann können Sie die Funktion auch direkt beim aktuellen Fenster hinterlegen. Klicken Sie dazu in der Kopfzeile des Code-Editors auf
» Globale Funktionen « Funktionen, die Sie direkt beim Projekt hinterlegen, lassen sich mit Hilfe des Schlüsselwortes
» Klasse als Funktions-Container «
Um eigene Funktionen möglichst strukturiert und übersichtlich zu verwalten, bietet sich das Anlegen eigener Klassen an. Die Funktion wird dann anstatt bei einer GUI-Komponente, bei der entsprechend thematisch passenden Klasse angelegt. Eine solche Klasse dient dann lediglich als Funktions-Container, wie eine Art eigene Funktionsbibliothek. Der Vorteil ist, dass Sie damit in der Lage sind, beliebig viele Funktionen thematisch zu gruppieren und mit bestmöglicher Übersicht zu verwalten. Der Nachteil ist dabei jedoch, dass Sie eine Klasse in jedem Ereignis immer erst instanzieren müssen, bevor Sie auf die entsprechenden Funktionen zugreifen können. Nachdem Sie die Klasse jedoch instanziert haben, erfolgt der Funktionsaufruf genauso wie über eine GUI-Komponente.
» Funktionen überladen « In XDEV 2 können Sie Funktionen auch überladen, d.h. es dürfen mehrere Funktionen mit demselben Funktionsnamen existieren, wenn diese unterschiedliche Parameter besitzen.
Basiswissen: Variablen, Funktionen und Methoden.
|