classlib.bbc
classlib.bbc
DESCRIPTION.
Le module classlib.bbc propose des procédures et des fonctions pour la création de classes d'objets.
SYNTAXE.
INSTALL @lib$ + "classlib.bbc"
REMARQUES.
Le langage de programmation BBC BASIC for SDL 2.0 n'est pas un langage orienté objet (POO), mais la bibliothèque classlib.bbc, une fois installée dans le script de votre programme, va permettre de créer des classes, et lui associer des méthodes, à partir desquelles des on pourra instancier des objets.
Avec le module classlib.bbc, une “classe” sera en réalité une structure de données standard (DIM{}) contenant une table de méthodes et une chaîne de pointeurs vers le code. Chaque méthode étant une entrée chaînée en mémoire
1. Déclarer une structure de données classique, dont les éléments sont les arguments qui devront être transmis pour la création d'un nouvel objet issu de cette classe, suivi des noms de méthodes associées à cette classe. Par exemple, la déclaration suivante va permettre de créer une classe nommée CLS_Classe, qui disposera des méthodes MTD_A, MTD_B et MTD_C, et à la quelle il faudra passer des valeurs pour les paramètres a, b, c, a$ et b$ lors de l(instanciation d'un nouvel objet.
INSTALL @lib$ + "classlib.bbc"
DIM MDL_Classe{ a , b , c , a$ , b$ , MTD_A , MTD_B , MTD_C }
2. Créer la classe avec la procédure PROC_class(), provenant de l'installation du module classlib.bbc, en lui donnant la structure de données la définissant comme paramètre.
PROC_class( MDL_Classe{} )
3. Définir les méthodes associées, en utilisant l'instruction DEF sans PROC ni FN.
REM --- Definition du créateur des objets de la classe (optionnel) ---
DEF MDL_Classe.@MDL_Classe
REM --- code du constructeur ---
REM --- code du constructeur ---
REM --- code du constructeur ---
ENDPROC
REM --- Definition du destructeur des objets de la classe (optionnel) ---
DEF MDL_Classe.@@MDL_Classe
REM --- code du constructeur ---
REM --- code du constructeur ---
REM --- code du constructeur ---
ENDPROC
REM --- Definition d'une methode qui ne retourne rien (eq. PROC) ---
DEF MDL_Classe.MTD_A ( attributa , attributb , ... , attributn )
REM --- code ---
REM --- code ---
REM --- code ---
ENDPROC
REM --- Definition d'une methode qui retourne une valeur (eq. FN) ---
DEF MDL_Classe.MTD_B ( attributa , attributb , ... , attributn )
REM --- code ---
REM --- code ---
REM --- code ---
= valeur_retournee
REM --- Definition d'une methode sur une seule ligne de code ---
DEF MDL_Classe.MTD_C ( attributa , attributb , ... , attributn ) : --- code --- : ENDPROC
4. Instancier, créer, des objets avec une classe définies précédemment. Si un créateur (.@) d'objet a été définit pour la classe, il sera appelé automatiquement, procédure PROC_new(), provenant de l'installation du module classlib.bbc, en donnant comme premier paramètre le nom de la structure de données qui identifiera l'objet et en deuxième paramètre l'identifiant de la structure de données définissant la classe. Par exemple, la ligne suivante va créer un objet nommé OBJ_Objet, qui sera une instance de la classe CLS_Classe.
PROC_new( OBJ_Objet{} , MDL_Classe{} )
6. Modifier ou obtenir les valeurs des attributs de l'instance d'une classe. La paire d'accolades {} est optionnelle.
OBJ_Objet{}.attributa = valeur : REM - pour modifier la valeur de l'attribut ou
OBJ_Objet.attributa = valeur : REM - pour modifier la valeur de l'attribut ou
kvaleur = OBJ_Objet{}.attributa : REM - pour obtenir la valeur de l'attribut ou
kvaleur = OBJ_Objet.attributa : REM - pour obtenir la valeur de l'attribut
6. Appeler les procédures et fonction de l'instance d'une classe. Une fois créer, un objet, une instance de la classe, peut appeler les méthodes définit à la suite de la déclaration de la classe. Pour appeler un procédure ou une fonction, liée à une instance, la paire d'accolades {} est optionnelle.
PROC( OBJ_Objet{}.MTD_A ) : REM - appel d'une methode sans parametre avec la paire d'accolades ou
PROC( OBJ_Objet.MTD_A ) : REM - appel d'une methode sans parametre sans la paire d'accolades
PROC( OBJ_Objet.MTD_A ) ( valeura , valeurb , ... , valeurn ) : REM - appel d'une methode avec des parametres
kvaleur = FN( OBJ_Objet.MTD_B ) : REM - appel d'une fonctionsans parametre
kvaleur = FN( OBJ_Objet.MTD_B ) ( valeura , valeurb , ... , valeurn ) : REM - appel d'une fonction avec des parametres
Le module doit être chargé depuis votre programme à l'aide de l'instruction : INSTALL @lib$ + "classlib.bbc"
LISTE DES PROCÉDURES DU MODULE.
FN_typeof() : Détermine si deux objets sont des instances de la même classe.
PROC_class() : déclare et crée une nouvelle class
PROC_discard() : détruit une instance de classe.
PROC_inherit() : déclare et crée une nouvelle classe, enfant, qui héritera des attributs et méthode d'une autre classe, parente.
PROC_new() : crée une instance, nouvel objet, d'une classe.
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de
Dans la RETROGICIEL vous trouvez des suggestions simples et classiques pour
TESTER - DÉCOUVRIR - PRATIQUER - APPROFONDIR - EXPLORER
avec un exemple de résolution à télécharger pour vous inspirer.