Ce chapitre spécifie comment étendre Basilic en ajoutant des nouveaux modules (classes).
Un module ( fichier source ) correspond à une classe Java. Les procédures et fonctions définies dans le module sont les « méthodes » de la classe. Ces procédures et fonctions doivent obligatoirement avoir l’attribut static ou public. L’opérateur . Java permettant d’appliquer une méthode à un objet est remplacé en mettant l’objet en paramètre de la procédure ou de la fonction. Un exemple intéressant est l’étude du module textfile implantant les fichiers de type texte
Remarques
- Ligne 20, l’opérateur . permet de référencer un attribut (variable) de l’objet.
- Les procédures et fonctions ayant l’attribut public peuvent être utilisées, celles possédant l’attribut static sont « privées » (utilisables uniquement dans le module).
Opérateurs
Il est possible de définir des opérateurs pour les objets d’un module. Pour cela il suffit d’implanter une procédure ou une fonction « spéciale » pour disposer de l’opérateur correspondant.
Opérateur Fonction = proc public set(*,*) or func public boolean or(*,*) and func public boolean and(*,*) < func public boolean cmplt(*,*) <= func public boolean cmple(*,*) > func public boolean cmpgt(*,*) >= func public boolean cmpge(*,*) == func public boolean cmpeq(*,*) != func public boolean cmpne(*,*) + func public * add(*.*) - func public * sub(*.*) * func public * mul(*.*) / func public * div(*.*) % func public * mod(*.*) - unaire func public * neg(*)
Dans le tableau ci-dessus, le symbole * représente une variable de type quelconque. Pour une fonction ou une procédure d’opérateur, le type désigné par * doit être le même. On regardera avec intérêt le module string défini dans cbstring.bcj. Il convient de définir un constructeur (ligne 4 ci-dessous) pour implanter les notations et une fonction get (ligne 8) pour récupérer la valeur correspondant au type natif.
Règles de recherche des modules
Pour utiliser un module basilic, il n’est pas nécessaire d’utiliser de directive de style #include (langage C) ou import (Java). On dispose automatiquement de tous les modules définis dans le fichier bcj.ini
Pour ajouter un module, il suffit d’ajouter une ligne
type=nom du module:chemin du source
Dans un module, on peut utiliser toutes les procédures et fonctions décrites dans les modules précédents.
L’ordre d’écriture dans le fichier bcj.ini est donc important. C’est pour cela que l’on trouve au début de ce fichier les définitions correspondant aux types primitifs (boolean, int,…)