⇨ MENU ⇨ BIBLIOTHEQUE ⇨ classlib.bbc
PROC_new()
⇨ MENU ⇨ BIBLIOTHEQUE ⇨ classlib.bbc
PROC_new()
DESCRIPTION.
La procédure PROC_new() crée une instance, un nouvel objet, d'une classe.
SYNTAXE.
PROC_class( OBJ_Objet{} , MDL_Classe{} )
REMARQUES.
OBJ_Objet{} doit être l'identifiant de l'instance, l'objet. Fondamentalement c'est une structure de données standard.
MDL_Classe{} doit être être l'identifiant de la classe dont on souhaite faire une instance.
Une fois créée, l'instance, l'objet, pourra invoquer toutes les méthodes définies lors de la création de la classe ainsi que tous les attributs propre à l'instance.
Pour modifier un attribut de l'instance, ou pour invoquer une de ses méthodes, il faut faire précéder le nom de l'attribut ou de la méthode de l'identifiant de l'instance, et non de la classe.
Les méthodes de type procédure, c'est-à-dire qui ne doivent pas retourner de valeur, doivent être appelée avec le mot clé PROC. Par exemple : PROC( OBJ_Objet{}.methode ) ou PROC( OBJ_Objet.methode ), la paire d'accolade étant facultative. Si des paramètres sont attendus, ils doivent se trouver dans une paire de parenthèses différentes, et séparée d'un espace. Par exemple : PROC( OBJ_Objet{}.methode ) ( valeur1 , ... , valeurN ).
Les méthodes de type fonction, c'est-à-dire qui doivent retourner une valeur, doivent être appelée avec le mot clé FN. précédée de la variable, ou de l'instruction, qui recevra la valeur. Par exemple : kvaleur = FN( OBJ_Objet{}.methode ) ou kvaleur = FN( OBJ_Objet.methode ), la paire d'accolade étant facultative. Si des paramètres sont attendus, ils doivent se trouver dans une paire de parenthèses différentes, et séparée d'un espace. Par exemple : kvaleur = FN( OBJ_Objet{}.methode ) ( valeur1 , ... , valeurN ).
La procédure PROC_new() est importée depuis le module classlib.bbc.
EXEMPLE.
REM --- Importation des modules ---
REM --- Module de la bibliothèque BBC BASIC ---
INSTALL @lib$ + "classlib.bbc"
REM --- Declaration de la structure de données associee à la classe ---
DIM MDL_Rectangle{ longeur , largeur , @constructeur , MTD_Cotes , MTD_Perimetre , MTD_Aire , MTD_Diagonale }
REM --- Creation de la classe ---
PROC_class( MDL_Rectangle{} )
REM --- Creation d'un nouvel objet (instance) de la classe MDL_Rectangle ---
PROC_new( OBJ_RectA{} , MDL_Rectangle{} )
REM --- Appel de la methode MTD_Cotes, avec des parametres, qui modifie les attributs de OBJ_RectA ---
PROC( OBJ_RectA.MTD_Cotes ) ( 10 , 4 ) : REM - ou PROC( OBJ_RectA{}.MTD_Cotes ) ( 10 , 4 )
PRINT OBJ_RectA.longeur : REM - PRINT OBJ_RectA{}.longeur
PRINT OBJ_RectA.largeur : REM - PRINT OBJ_RectA{}.largeur
REM --- Appel des methodes MTD_Perimetre et MTD_Aire, sans parametre ---
PROC( OBJ_RectA.MTD_Perimetre )
PROC( OBJ_RectA.MTD_Aire )
REM --- Appel des methodes MTD_Diagonale qui retourne une valeur ---
PRINT "Les diagonales font : " ; FN( OBJ_RectA.MTD_Diagonale ) : REM - OBJ_RectA{}.MTD_Diagonale
REM --- Fin et sortie du programme ---
END
REM --- DEFINITIONS DES PROCEDURES ET FONCTIONS PERSONNALISEES ---
REM --- Definitions des methodes de la classe MDL_Rectangle ---
REM --- Constructeur de la classe MDL_Rectangle ---
DEF MDL_Rectangle.@constructeur
MDL_Rectangle.longeur = 10
MDL_Rectangle.largeur = 5
PRINT "Nouveau rectangle de 10 x 5 creer."
ENDPROC
REM --- Methode de type procedure modifiant les attributs de l'objet grace au passage de parametres ---
DEF MDL_Rectangle.MTD_Cotes ( Qlongeur , Qlargeur )
MDL_Rectangle.longeur = Qlongeur
MDL_Rectangle.largeur = Qlargeur
ENDPROC
REM --- Methode de type procedure sans parametre calculant et affichant le perimetre du rectangle ---
DEF MDL_Rectangle.MTD_Perimetre
kperimetre = 2 * ( MDL_Rectangle.longeur + MDL_Rectangle.largeur )
PRINT "Le perimetre de ce rectangle est : " ; kperimetre
ENDPROC
REM --- Methode de type procedure sans parametre calculant et affichant la superficie du rectangle ---
DEF MDL_Rectangle.MTD_Aire
kaire = MDL_Rectangle.longeur * MDL_Rectangle.largeur
PRINT "La superficie de ce rectangle est : " ; kaire
ENDPROC
REM --- Methode de type fonction sans parametre retournant la la longeur des diagonales du rectangle --
DEF MDL_Rectangle.MTD_Diagonale
kcotes = ( MDL_Rectangle.longeur ^ 2 ) + ( MDL_Rectangle.largeur ^ 2 )
kdiagonale = SQR( kcotes )
= kdiagonale
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.