Modulares Programmieren 2/10
Hintergrundwissen / Design und Tehnik
Was ist das?
Ein Programm kann auf mehrere Module verteilt werden. Diese werden einzeln vom Compiler übersetzt und anschließend vom Linker zu einer einzelnen Anwendungen zusammengebunden. ÄEin Modul entspricht einer Datei.Der Vorteil des Aufteilesn in mehrere Module ist, einmal, das das Projekt übersichtlicher wird, da sich nicht alles in einer Datei befindet und noch viel wichtiger, dass es die Wiederverwendbarkeit erhöht, da Sie einfach einzelne Module von einem Projekt auch einem andern Zufügen können, vorrausgesetzt es ist darauf vorbereitet. Aus genau diesem Grund sollte man versuchen, Module möglichst unabhängig voneinander zu schreiben. Natürlich sollte man Code deshalb nicht doppelt schreiben. Lieber diese leine zusätzliche Abhängigkeit, als redundanten Code. In jedem Prjekt gibt es natürlich mindestens ein abhängiges Modul: Das Modul, in dem das eigentliche Programm abläuft.
In jedem Modul findet siche eine Sammlung von Prozeduren. Jeder Block zusammengehörender Prozeduren sollte in ein eigenes Modul.
Modul und Header
Normalerweise Besteht ein Modul aus zwei Teilen: Dem eigntlichen Modul und einem dazugehörenden Include-Datei. Module Tragen üblicherweise die Endung '.BAS', Include-Datei '.BI'. In die Include-Dateien kommen die Teile, die auch in anderen Modulen verwendet wreden sollen, also Deklarationen von Prozeduren und benutzerdefinierte Typen. Gelegentlich auch globale Konstanten oder sogar Variablen (die müssen dann mit 'COMMON' deklariert werden), wobei vor allem letztere mit Vorsicht zu genießen sind. So schaffen Sie sich leicht zu viele Abhängigkeiten, die das Wiederverwenden unheimlich erschweren.
In jedem Modul, in dem sie die Funktionalität eines andern Moduls nutzen wollen, binden Sie einfach die zugehörige Include-Datei mittels des Meta-Befehls REM $INCLUDE: 'datei.bi' ein. Vergessen Sie nicht im Modul selbst den Header einzubinden, da ihm sonst Typdefinitionen und ähnliches Fehlen.
Um ein Mdoul zum Projekt hinzuzufügn Verwenden Sie "Datei Laden" zum erstellen eines neuen Moduls "Datei Erstellen". Hier können Sie auch angeben, dass es sich um einen Header handelt (Include). QB wird einen Makefile erstellen, so dass automatisch alle Module kompiliert und später zusammengelinkt werden.
Beispiel
' foo.bi DECLARE SUB SchreibText (text AS STRING)
' foo.bas REM $INCLUDE: 'foo.bi' SUB SchreibText (text AS STRING) PRINT text END SUB
' test.bas REM $INCLUDE: 'foo.bi' SchreibText "Hallo Welt"
Das Beispiel soll nur die Funktionsweise darstellen un repräsentiert keines Falls ein sinvolles Programm.
MQB und Module
Im gegensatz zu vielen anderen Bibliotheken liegt MQB nicht als '.qlb' und '.lib' vor, sondern in Form mehrer Module. Kopieren Sie die Include-Datei einfach in ihr Includeverzeichnis. Falls sie keins angegeben haben ist es das Verzeichnis, in dem auch die qb.exe (bzw. qbx.exe) liegt. Falls das so ist, sollten Sie das schnellstens ändern.
Sie können die benötigten Module einfach in ihr Projektverzeichnis kopieren und ihrem Projekt hinzufügen. So wird nur das mitübersetzt, was auch im Projekt verwendet wird. Bei bereits kompilierten Bibliotheken ist das nicht möglich. Sie liegen als bereits kompilierte Bibliotheken vor. Das liegt allerdings meistens daran, dass sie in Assembler oder C geschreiben sind und es keinen anderen Weg gibt sie in QB einzubinden.