Classe et Constante

Le
Patrick
Bonjour,

Dans une classe j'aimerais déclarer une constante qui pourrait être utilisée
par le code qui utilise la classe. Comment puis-je faire cela ?
Pour le moment, je n'ai trouvé comme solution que de mettre une fonction qui
renvoie la constante.

Merci pour votre aide.

--
Patrick
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
parci
Le #17758681
Patrick a écrit :
Bonjour,

Dans une classe j'aimerais déclarer une constante qui pourrait être utilisée
par le code qui utilise la classe. Comment puis-je faire cela ?
Pour le moment, je n'ai trouvé comme solution que de mettre une fonction qui
renvoie la constante.



Une propriété plutôt qu'une fonction mais ça revient au même.
Si ta constante est de type Long tu peux faire la déclarer avec Enum
Public dans la classe (elle sera visible partout). Un peu bizarre
d'ailleurs que les constantes publiques soient interdites mais pas les
Enum. Si quelqu'un voit pourquoi.
Jacques93
Le #17759321
Bonjour,
parci a écrit :
Patrick a écrit :
Bonjour,

Dans une classe j'aimerais déclarer une constante qui pourrait être
utilisée par le code qui utilise la classe. Comment puis-je faire cela ?
Pour le moment, je n'ai trouvé comme solution que de mettre une
fonction qui renvoie la constante.



Une propriété plutôt qu'une fonction mais ça revient au même.



Mais c'est plus propre :-)

Si ta constante est de type Long tu peux faire la déclarer avec Enum
Public dans la classe (elle sera visible partout). Un peu bizarre
d'ailleurs que les constantes publiques soient interdites mais pas les
Enum. Si quelqu'un voit pourquoi.



Hypothèse sur le dernier point :

On prend :

Un projet dll ActiveX, qui comprend donc un module de
classe comportant un Public Enum, et on le compile

Un projet standard qui utilise cette dll (ajout d'une référence)

Les valeurs de l'énumération restent dans la dll. Dans le cas d'un
changement de valeur dans l'énumération, il suffit modifier, recompiler
et distribuer la dll. Les projets l'utilisant restent inchangés.

Dans le cas d'une constantes, c'est lors de la compilation que les noms
de constantes sont remplacés par leur valeur, elles se retrouveraient
donc dans l'exe du projet standard, et non plus dans la dll. Dans le cas
de modification, il faudrait recompiler et distribuer tous les projets
utilisant cette dll.

Donc constantes Public dans un module 'standard' OK, mais pas dans un
module de classe.

--

Cordialement,

Jacques.
Patrick
Le #17765391
Merci beaucoup.

Je ne sais pas si c'est le mieux mais, en ce qui me concerne, quand je
souhaite qu'une propriété d'une classe soit en lecture seule, j'utilise une
fonction plutôt qu'une propriété. Y a-t-il une différence suffisamment
importante pour utiliser dans ce cas plutôt une propriété qu'une fonction ?

Encore merci.

--
Patrick


"parci" wrote:

Patrick a écrit :
> Bonjour,
>
> Dans une classe j'aimerais déclarer une constante qui pourrait être utilisée
> par le code qui utilise la classe. Comment puis-je faire cela ?
> Pour le moment, je n'ai trouvé comme solution que de mettre une fonction qui
> renvoie la constante.

Une propriété plutôt qu'une fonction mais ça revient au même.
Si ta constante est de type Long tu peux faire la déclarer avec Enum
Public dans la classe (elle sera visible partout). Un peu bizarre
d'ailleurs que les constantes publiques soient interdites mais pas les
Enum. Si quelqu'un voit pourquoi.



jean-marc
Le #17765751
"Patrick" news:
Merci beaucoup.

Je ne sais pas si c'est le mieux mais, en ce qui me concerne, quand je
souhaite qu'une propriété d'une classe soit en lecture seule, j'utilise
une
fonction plutôt qu'une propriété. Y a-t-il une différence suffisamment
importante pour utiliser dans ce cas plutôt une propriété qu'une fonction
?



Hello,

je signale juste qu'on peut utiliser le mécanisme de propriétés pour définir
une constante ou variable en lecture seule. Il suffit dans ce cas de ne
définir
que la property GET et pas le LET/SET.

D'un point de vue strictement sémantique, il est certain que pour ce cas
une propriété est plus appropriée, plus propre.^

Mais l'emploi d'une fonction n'est pas choquant en soi dans ce contexte.
A ce niveau, je dirais qu'on peut presque parler de préférences persos.

Cordialement;

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Patrick
Le #17765991
Je suis entièrement d'accord avec toi.

Merci.

--
Patrick


"jean-marc" wrote:


"Patrick" news:
> Merci beaucoup.
>
> Je ne sais pas si c'est le mieux mais, en ce qui me concerne, quand je
> souhaite qu'une propriété d'une classe soit en lecture seule, j'utilise
> une
> fonction plutôt qu'une propriété. Y a-t-il une différence suffisamment
> importante pour utiliser dans ce cas plutôt une propriété qu'une fonction
> ?

Hello,

je signale juste qu'on peut utiliser le mécanisme de propriétés pour définir
une constante ou variable en lecture seule. Il suffit dans ce cas de ne
définir
que la property GET et pas le LET/SET.

D'un point de vue strictement sémantique, il est certain que pour ce cas
une propriété est plus appropriée, plus propre.^

Mais l'emploi d'une fonction n'est pas choquant en soi dans ce contexte.
A ce niveau, je dirais qu'on peut presque parler de préférences persos.

Cordialement;

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;







jean-marc
Le #17765981
"Patrick" news:
Merci beaucoup.

Je ne sais pas si c'est le mieux mais, en ce qui me concerne, quand je
souhaite qu'une propriété d'une classe soit en lecture seule, j'utilise
une
fonction plutôt qu'une propriété. Y a-t-il une différence suffisamment
importante pour utiliser dans ce cas plutôt une propriété qu'une fonction
?



En complément, voici un lien vers la doc de VB ou il y a une intéressante
discussion à ce sujet :

http://msdn.microsoft.com/en-us/library/aa242128(VS.60).aspx

Cordialement;

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Jacques93
Le #17766651
Bonjour,
jean-marc a écrit :
"Patrick" news:
Merci beaucoup.

Je ne sais pas si c'est le mieux mais, en ce qui me concerne, quand je
souhaite qu'une propriété d'une classe soit en lecture seule, j'utilise
une
fonction plutôt qu'une propriété. Y a-t-il une différence suffisamment
importante pour utiliser dans ce cas plutôt une propriété qu'une fonction
?



En complément, voici un lien vers la doc de VB ou il y a une intéressante
discussion à ce sujet :

http://msdn.microsoft.com/en-us/library/aa242128(VS.60).aspx

Cordialement;




Penser également le cas des Contrôles ActiveX (.ocx), une Propriété
apparaitra automatiquement dans la fenêtre de propriété de VB, pas une
fonction.

Bon c'est dans le lien de Jean-Marc, mais j'envoie, j'aurai pas tapé
pour rien :-)

--

Cordialement,

Jacques.
Publicité
Poster une réponse
Anonyme