[POO] Collections de classes et types personalisés

[Résolu]
Signaler
Messages postés
51
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
7 juillet 2006
-
Messages postés
51
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
7 juillet 2006
-
Bonjour à tous,

en fait je viens ici vous poser une question de débutant en objets...
J'ai compris le concept, enfin je crois, mais dans la pratique, avec VB dumoins, j'ai un cas ou je doute.
En fait, il y a des fois ou je ne sais pas trop si il vaut mieux utiliser un simple tableau de types personalisés ou créer une collection de classes.

Je sais, c'est radicalement différent, j'ai bien saisi je crois ce que sont chacune de ces entités, mais je vais essayer de vous expliquer un exemple, objet de mon doute.

Donc par exemple, dans mon projet j'ai :
- Une classe "clsAutomation"
Elle ne contient que deux variables (type string, mais peu importe) privées accessibles en lecture/ecriture par Get et Let, en accès direct, c.a.d que je les assigne et les lit telle quelles. Je les déclarerais en public, mais sans get et let, que ce serait pareil, mais je préfère passer par la méthode conventionnelle pour respecter les fondements de la POO.

- une classe, "clsProfil"
C'est, comme son nom l'indique, un profil utilisateur pour une application donnée. Elle contient  diverses fonctions d'actualisation et d'enregistrement dudit profil, et une collection de cette fameuse classe clsAutomation. En fait, un profil contient une collection d'automations et un certain autre nombre de données relatives a l'utilisateur du profil.

Donc voila, là ou je me questionne sur le bien fondé de ma structure, c'est que ma classe clsAutomations ne contient que deux variables, rien d'autre, ni routines ni fonctions, alors je pourrais tout aussi bien créer un type "Automation" et que je placerais dans un tableau, au lieu d'utiliser une collection de "clsAutomation" dans chaque instance de "clsProfil", non?

Qu'en pensez vous? En fait, j'ai utilisé une classe car j'utilise les .Add, .Remove et .Count, et j'ai l'impression que c'est plus pratique à gérer qu'un tableau dynamique, mais j'ai quand même l'impression que quelque chose cloche... Parceque dans ma classe clsProfil, je me retrouve avec des
Public Function AutomationCount() as integer
Public Function Get AutomationAdd(var1 as string, var2 as string)
etc...
Et donc je me demandais si il n'y aurais pas moyen plus simple ou mieux structuré de faire mon bordel, je sais pas si vous me suivez toujours, genre avec une seule classe au lieu d'avoir une classe clsAutomation imbriquée dans clsProfil...

Bon, j'éspère avoir été clair, j'éspère avoir des réponses car plus je réfléchis plus ca s'obscurcit pour moi là ... En tout cas si quelque chose vous choque dans ma structure ou quoi, n'hésitez surtout pas à m'en faire part. Si il faut j'enverrai mon code sur demande pour que ce soit plus clair.

D'avance merci,

Pekch

3 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
47
salut,

je ne sais pas si çà peut t'aider : un type ne peut pas être public dans une classe. si ta form doit faire MonConteneur.SaCollection.Champ1 = "", tu dois passer par 2 classes comme tu le fais ;)

tout dépend de l'accès donné par MonConteneur (clsProfil)
++
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
Messages postés
51
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
7 juillet 2006

En fait, Post Scriptum, du coup mon programme principal n'accède qu'à clsProfil, et lui accède à clsAutomation par les fonctions publiques que j'ai cité la haut.

exemple, dans clsProfil

Private Automations As New Collection

'Ajoute un nouveau raccourci a la collection
Public Function AutomationAdd(Raccourci As String, Contenu As String) As Boolean
    Dim MonAutomation As New Automation
    AutomationAdd = False
    On Error GoTo Err
    If RaccourciTest(Raccourci) = True Then
        'ajoute le raccourci a la collection
        With MonAutomation
            .Raccourci = Raccourci
            .Contenu = Contenu
        End With
        Automations.Add MonAutomation
        AutomationAdd = True
    End If
Err:
End Function

peut etre est ce plus clair ainsi

merci!
Messages postés
51
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
7 juillet 2006

PCPT -> Ok merci! donc a priori ca ne choque pas d'avoir une classe qui sert quasiment de type amélioré, et une collection de cet objet dans une autre classe... okok

OneHacker -> Mouais, je pensais que ca suffisait de ne pas le mettre dans la catégorie ".NET et 2005" désolé... Mais bon, y'a une catégorie spécifique à dotNET, je l'aurais mis dedans le cas échéant... Et puis bon, si tu met ce message pour tout les posts ou ce n'est pas précisé tu vas perdre un bon sacré bout de temps mec! M'enfin, merci quand même d'être passé ;-)