Que choisir : "Property Get" ou "Function" ?

Résolu
cs_PROGRAMMIX Messages postés 1133 Date d'inscription mercredi 2 octobre 2002 Statut Membre Dernière intervention 24 juillet 2011 - 18 sept. 2008 à 08:45
cs_PROGRAMMIX Messages postés 1133 Date d'inscription mercredi 2 octobre 2002 Statut Membre Dernière intervention 24 juillet 2011 - 19 sept. 2008 à 16:52
Bonjour,

Je recommence à programmer en tentant l'utilisation de classes et collection.

En tapant mon code à plusieurs jours d'intervalle, je me suis rendu compte que j'avais créé les procédures suivantes :

Public Function NbreParAn(Optional ByVal annee As String) As Integer
    Dim a As clsAccident
    Dim x As Integer
    If annee = "" Then
        x = maCollection.Count
    Else
        For Each a In maCollection
            If Year(a.Jour) = annee Then
                x = x + 1
            End If
        Next
    End If
    NbreParAn = x
End Function

Public Property Get NbreAccidentsGrave() As Integer
    NbreAccidentsGrave = variableNbreAccidentGrave
End Property

La question est donc la suivante : quand utiliser/préférer une propriété à une fonction ?

N'étant pas encore un routinier des modules de classe, merci de répondre "comme si j'avais 5 ans".

Programmix

6 réponses

cs_thierry la fronde Messages postés 351 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 12 août 2009
18 sept. 2008 à 23:56
On utilise les property pour récupérer (ou modifier) la valeur une DONNEE  membre de la classe.
On utilisera une fonction pour un traitement ou un calcul particulier.

De plus la propriété permet de modifier la valeur de la donnée membre de la classe de manière simple. Ce qui n'est pas le rôle d'une fonction
L'idée étant que toutes les données membres d'une classe sont private et inaccessible (principe d'un langage objet). Pour accéder aux valeurs de ces données membres, on utilisera donc une propriété (property)
Ceci dit VB6 n'est pas un langage objet, VB.NET si.

thierry la fronde
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
18 sept. 2008 à 09:09
c'est question perso...
en gros, de ce "qui se fait"...

tes dex exemples seraient a mettre en Property.
En gros, si dans le nom tu mettrais un verbe autre que GET ou LET ... ben c'est une fonction.

fondamentalement, y'a aucune difference...
0
cs_PROGRAMMIX Messages postés 1133 Date d'inscription mercredi 2 octobre 2002 Statut Membre Dernière intervention 24 juillet 2011 2
18 sept. 2008 à 09:24
Tu dis que mes deux exemples seraient à mettre en Property, mais dans le cas d'une recherche par année, je suis obligé de passer une variable.  Or peut-on passer une variable à une Property Get ?

Programmix
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
18 sept. 2008 à 21:02
Salut,
Moi il me semble qu'il y a une règle qui semble suivie dans le framework, et que j'utilise moi-même:

- Un Property Get permet de récupérer une valeur (normalement très rapide)
- Une Fonction effectue une tâche puis renvois un résultat (normalement plutôt lent)

Mais il est clair que quelque-fois ce concept peut être confus...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
18 sept. 2008 à 21:06
"Or peut-on passer une variable à une Property Get ?"

Non si ce n'est un index ou une clé, qui sera aussi présente pour le Let et qui est utilisé pour accéder à des collections.

Tu parle de recherche, c'est donc pour moi typiquement le 2ème cas de mon message précédent: une fonction.
0
cs_PROGRAMMIX Messages postés 1133 Date d'inscription mercredi 2 octobre 2002 Statut Membre Dernière intervention 24 juillet 2011 2
19 sept. 2008 à 16:52
Merci pour toutes ces info complémentaires qui confortent ce que je pensais.

Programmix
0
Rejoignez-nous