|
|
|
|
|
- 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 constructeurPROCEDURE [<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 :
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é :
PROCÉDURE GLOBALE MéthodeGlobaleAllocation(...
o est ClasseAvecConstructeurPrivé
RENVOYER o
o2 est ClasseAvecConstructeurPrivé dynamique
o2 = ClasseAvecConstructeurPrivé.MéthodeGlobaleAllocation(...
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 :
o4 est un ClasseAvecConstructeurPrivé dynamique
o2 = o4
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 classeConstructeur <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 membreConstructeur <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.
ClasseBase1 est une Classe
MembreClasseBase1 est un entier
FIN
PROCÉDURE Constructeur(Param1)
Info("Constructeur de ClasseBase1 => " + Param1)
ClasseBase2 est une Classe
MembreClasseBase2 est un entier
FIN
PROCÉDURE Constructeur(Param1)
Info("Constructeur de ClasseBase2 => " + Param1)
ClasseDérivée est une Classe
hérite de ClasseBase1
MembreClasseDérivée est un ClasseBase2
FIN
PROCÉDURE 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éthodePROCEDURE 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…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|