OVH Cloud OVH Cloud

[Windev 9-10] Accés a un membre de type statique

11 réponses
Avatar
Jean-Luc Baptiste
Bonjour,

J'ai une classe contenant une variable de classe définie comme suit :

employe est une classe
PRIVÉ
numemp est un entier
nom est un chaîne = ""
prenom est un chaîne = ""


PRIVÉ
GLOBAL
NbEmploye est un entier = 0 //Nbr d'instances de classe
FIN


Je veux accéder par un accesseur à la variable NbEmploye :

FONCTION PRIVÉ GLOBAL employe::GetNbemploye()

RENVOYER ::NbEmploye

Jusque là tout me semble cohérent (j'ai suivi l'aide ). Voici le code du
bouton

Cnbinstances=employe.::GetNbemploye()// fini par completion du code

J'ai ce message d'erreur : Erreur de syntaxe sur le mot ::GetNbemploye.

Je cherche et ne trouve ;-)) DOnc si quelqu'un a une solution

Bien cordialement

10 réponses

1 2
Avatar
Romain PETIT
Dans son message précédent, Jean-Luc Baptiste a écrit :
Bonjour,



Bonjour,

FONCTION PRIVÉ GLOBAL employe::GetNbemploye()



Ta méthode est privée. Tu ne peux donc y accéder qu'au sein de la
classe.
Extrait de l'aide (WD7.5) :
- Privé : la méthode peut être appelée uniquement depuis un code de la
classe
- Protégé : la méthode peut être appelée uniquement depuis un code de
la classe ou un code d'une classe dérivée
- Public (par défaut) :la méthode peut être appelée depuis n'importe
quel code de la classe ou du projet.

A+



--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Romain PETIT
Jean-Luc Baptiste a présenté l'énoncé suivant :

J'ai une classe contenant une variable de classe définie comme suit :



Je ne comprend pas bien ta démarche POO :
- tu définis un membre global NbEmploye (donc accessible depuis tout le
projet)
- tu définis une méthode privée pour te renvoyer le nombre d'employés !

En fait, tu devrais faire exactement l'inverse...

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Jean-Luc Baptiste
Romain PETIT a écrit :
Dans son message précédent, Jean-Luc Baptiste a écrit :

Bonjour,




Bonjour,

FONCTION PRIVÉ GLOBAL employe::GetNbemploye()




Ta méthode est privée. Tu ne peux donc y accéder qu'au sein de la classe.
Extrait de l'aide (WD7.5) :
- Privé : la méthode peut être appelée uniquement depuis un code de la
classe
- Protégé : la méthode peut être appelée uniquement depuis un code de la
classe ou un code d'une classe dérivée
- Public (par défaut) :la méthode peut être appelée depuis n'importe
quel code de la classe ou du projet.

A+





Mime si je la mets publique j'ai toujours l'erreur de syntaxe
Avatar
Jean-Luc Baptiste
Romain PETIT a écrit :
Jean-Luc Baptiste a présenté l'énoncé suivant :

J'ai une classe contenant une variable de classe définie comme suit :




Je ne comprend pas bien ta démarche POO :
- tu définis un membre global NbEmploye (donc accessible depuis tout le
projet)
- tu définis une méthode privée pour te renvoyer le nombre d'employés !

En fait, tu devrais faire exactement l'inverse...

A+




Non, le membre NbEmployé est Prive puis global, d'aprés la doc c'est la
facon de faire pour avoir une variable de classe statique donc...
Avatar
Romain PETIT
Jean-Luc Baptiste avait écrit le 21/12/2005 :
Romain PETIT a écrit :
Mime si je la mets publique j'ai toujours l'erreur de syntaxe



Pour appeller une méthode publique depuis une procédure extérieure :

MaClasse:MaMéthode() (pas de . ni de double ::)

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Jean-Luc Baptiste
Romain PETIT a écrit :
Jean-Luc Baptiste avait écrit le 21/12/2005 :

Romain PETIT a écrit :
Mime si je la mets publique j'ai toujours l'erreur de syntaxe




Pour appeller une méthode publique depuis une procédure extérieure :

MaClasse:MaMéthode() (pas de . ni de double ::)

A+



En fait c'est Maclasse::MaMéthode (car je suis sur une méthode de classe)

Merci encore
Avatar
Jean-Luc Baptiste
Jean-Luc Baptiste a écrit :

D'avoir voulu calquer la méthodo C# avec la définition des methodes
statique m'a induit en erreur.
Donc la solution est d'enlever le prive a la définition de la méthode et
de l'appeler par maclasse::mamethode
Avatar
Romain PETIT
Jean-Luc Baptiste a écrit :
Non, le membre NbEmployé est Prive puis global, d'aprés la doc c'est la
facon de faire pour avoir une variable de classe statique donc...



Mouais, "statique" à la sauce WD...
(elle sera "statique" uniquement pour l'objet instancié, pas pour
l'ensemble des objets de la classe, ce qui donne réellement un intérêt
pour ce type de variable dans un vrai langage POO)

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Romain PETIT
Romain PETIT a exposé le 21/12/2005 :
Mouais, "statique" à la sauce WD...



Au fait, il n'y a pas de nouveauté concernant la POO en WD10 ?

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Jean-Luc Baptiste
Romain PETIT a écrit :
Romain PETIT a exposé le 21/12/2005 :

Mouais, "statique" à la sauce WD...




Au fait, il n'y a pas de nouveauté concernant la POO en WD10 ?



Je n'ai pas l'impression qu'il y ai des nouveautés... Mais je n'ai pas
encore tout fouillé. Je suis entrain de reprendre mes supports objets C#
et Java pour les porter en WinDev. Pour le moment hormis ces quelques
subtilités de portage tout se déroule bien.
1 2