- Présentation
- Syntaxe du Constructeur de la classe
- Note concernant les constructeurs
- Syntaxe des constructeurs des classes de base et des membres
- Notes
- Syntaxes de la méthode Destructeur
Constructeur et destructeur
Par défaut, lors de la création d'une classe sous l'éditeur de code les méthodes Constructeur et Destructeur sont automatiquement créées. - La méthode Constructeur, si elle est définie par le développeur, est automatiquement appelée lors de l'instanciation d'un objet. Elle permet par exemple d'effectuer des initialisations sur l'objet ou relatives à l'objet (affectation des membres, vérifications...)
- La méthode Destructeur, si elle est définie par le développeur, est automatiquement appelée lors de la suppression de l'objet (sortie de procédure dans laquelle l'objet a été instancié). Elle permet par exemple d'effectuer les traitements de libération de ressources...
Remarques :- Les méthodes Constructeur peuvent être publiques, protégées ou privées.
- Il est possible de créer des Constructeurs multisyntaxes. Pour plus de détails, consultez Surcharge de prototype.
Syntaxe du Constructeur de la classe Déclaration du constructeur
PROCEDURE [<Accès>] Constructeur([<Paramètres>])
Détail de la syntaxe <Accès> : Optionnel
3 niveaux d'accès sont disponibles : - PUBLIC (par défaut) : Le constructeur est accessible en dehors de la classe.
- PROTEGE : Le constructeur est accessible dans la classe et dans les classes dérivées.
- PRIVE : Le constructeur est accessible uniquement dans la classe.
Pour plus détails, consultez le paragraphe Notes sur les Constructeurs.Remarque : Pour modifier la portée du Constructeur, il est possible d'utiliser le menu contextuel sur la méthode dans l'explorateur de projet. Déclaration de l'objet : le constructeur est appelé automatiquement
<NomObjet> est [un] [objet] <Nom Classe> ([<Paramètres>])
Détail de la syntaxe <NomObjet>
Nom identifiant l'instance de la classe. <Nom classe>
Nom identifiant la classe, défini lors de la création de la classe sous l'éditeur de code. <Paramètres>
Paramètres optionnels du constructeur. Instanciation dynamique : le constructeur est appelé automatiquement
<NomObjet> est [un] [objet] <NomClasse> dynamique <NomObjet> = allouer un <NomClasse> ([<Paramètres>])
Détail de la syntaxe <NomObjet>
Nom identifiant l'instance de la classe. <Nom classe>
Nom identifiant la classe, défini lors de la création de la classe sous l'éditeur de code. <Paramètres>
Paramètres optionnels du constructeur. Note concernant les constructeurs Portée et accès des Constructeurs Le Constructeur d'une classe peut être public, protégé ou privé.Héritage : - Une classe avec Constructeur public peut être héritée.
- Une classe avec Constructeur protégé peut être héritée.
- Une classe avec Constructeur privée ne peut pas être héritée.
Accessibilité dans le cas des Constructeurs privés ou protégés : - Il est impossible d'instancier un objet de la classe dans un code du projet.
- Il est impossible de déclarer de tableau dont les éléments sont des instances de la classe dans un code du projet.
- Il est impossible de déclarer de membre du type de la classe dans une variable composée, une structure ou une autre classe dans un code de la classe ou du projet.
Remarque importante : Quelle que soit la portée du Constructeur, il est toujours possible de déclarer des objets dynamiques dans un code du projet. Si l'instanciation (l'allocation) des objets est impossible, la déclaration d'objets dynamiques est toujours possible. Les codes suivants sont donc toujours valides :
// Dans ces deux cas, l'instanciation n'est pas faite à la déclaration. Objet1 est un Classe1 dynamique Objet2 est un Classe1 <- ...
Pour instancier des objets dans le code du projet, il est possible d'utiliser une méthode globale de la classe. Exemple avec un Constructeur privé :
// Méthode globale de ClasseAvecConstructeurPrivée PROCÉDURE GLOBALE MéthodeGlobaleAllocation(...) o est ClasseAvecConstructeurPrivé RENVOYER o // ***************************************** // Récupération d'un objet de la classe depuis un code du projet : // Solution 1 : o2 est ClasseAvecConstructeurPrivé dynamique o2 = ClasseAvecConstructeurPrivé.MéthodeGlobaleAllocation(...) // Solution 2 : o3 est ClasseAvecConstructeurPrivé <- ClasseAvecConstructeurPrivé.MéthodeGlobaleAllocation(...)
Attention : L'opérateur d'affectation (=) n'a pas le même comportement avec des objets dynamiques ou non dynamiques. L'utilisation des objets o2 et o3 dans des affectations provoquera un comportement différent :
// Déclaration d'un nouvel objet dynamique. o4 est un ClasseAvecConstructeurPrivé dynamique // o2 est une référence à o4 o2 = o4 // Les membres de o4 sont copiés dans o3 o3 = o4
Syntaxe des constructeurs des classes de base et des membres Exécution du constructeur d'une classe de base ou d'un membreSi une classe de base ou un membre de type classe possède un constructeur, ce constructeur est automatiquement appelé sans paramètre. Il faut : - soit attribuer des valeurs par défaut aux paramètres du constructeur (de la classe de base ou du membre)
- soit appeler explicitement le constructeur en lui passant les paramètres.
Appel de la méthode constructeur pour construire une classe
Constructeur <NomClasse>(<Paramètres>)
Détail de la syntaxe <NomClasse>
Nom identifiant la classe. <Paramètres>
Paramètres du constructeur. Appel du constructeur pour construire un membre
Constructeur <Nom membre> (<Paramètres>)
Détail de la syntaxe <Nom Membre>
Nom identifiant le membre de la classe. <Paramètres>
Paramètres du constructeur. ExempleLes constructeurs explicites de la classe de base ou du membre doivent être appelés en première instruction du constructeur de la classe dérivée.
//----Déclaration de classe ClasseBase1 ClasseBase1 est une Classe MembreClasseBase1 est un entier FIN
//---- Constructeur de ClasseBase1 PROCÉDURE Constructeur(Param1) Info("Constructeur de ClasseBase1 => " + Param1)
//----Déclaration de classe ClasseBase2 ClasseBase2 est une Classe MembreClasseBase2 est un entier FIN
//---- Constructeur de ClasseBase2 PROCÉDURE Constructeur(Param1) Info("Constructeur de ClasseBase2 => " + Param1)
//---- Déclaration de classe ClasseDérivée ClasseDérivée est une Classe // Héritage de ClasseBase1 dont // le Constructeur attend un paramètre hérite de ClasseBase1 // Membre de type ClasseBase2 dont // le Constructeur attend un paramètre MembreClasseDérivée est un ClasseBase2 FIN
//----Constructeur de ClasseDérivée PROCÉDURE Constructeur() // Appel explicite du Constructeur Constructeur ClasseBase1(10) Constructeur MembreClasseDérivée(20)
Valeur par défaut des membresChaque membre d'une classe est mis à zéro si aucun constructeur n'est associé à la classe. Syntaxes de la méthode Destructeur Déclaration de la méthode
PROCEDURE Destructeur <NomClasse>()
Détail de la syntaxe <NomClasse>
Nom identifiant la classe. Le destructeur n'accepte aucun paramètre.
Liste des exemples associés :
|
Exemples didactiques (WINDEV) : WD POO Simple
[ + ] L'exemple "WD POO Simple" est un exemple didactique sur la POO avec WINDEV. Cet exemple permet de voir le fonctionnement : - des classes, - des héritages, - des procédures virtuelles, - des diagrammes UML, - ...
|
Documentation également disponible pour…
|
|
|
|