IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Réplication de paramètres entre Classe et Sous Classe (ou conseil de POO) [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Par défaut Réplication de paramètres entre Classe et Sous Classe (ou conseil de POO)
    Bonsoir tous le monde,
    J'ai un autre petit soucis avec ma classe qui me sert à gérer les fichiers INI.
    Comme je souhaite bien faire j'ai commencé par décomposer ma classe en plusieurs classes organisées de façon fonctionnel.
    En clair :
    - Classe INI : Classe principale qui contient notamment un Dictionary pour stocker les Sections et les clés quelles contiennent: Dictionary (of String, KeysData).
    - Classe KeysData : Utilisé (ou instancié) par Classe INI et qui contient notamment un Dictionary pour stocker les clés (KeyName, KeyValue).
    - Classe FileINI : utilisé par Classe INI et qui contient notamment une List (of Line) ainsi que les méthodes de lecture/enregistrement du fichier INI .
    - Classe Line : Utilisé par Classe FileINI et qui représente une ligne du fichier INI avec les fonctions de décodage/recodage des lignes de caractères en "Section, Clé, Valeur, Commentaire".

    Jusque là je pense avoir bien fait les choses avec très peu, voir pas du tout de dépendances entre les classes, chacune ayant un rôle bien défini. Cela dit n'hésitait pas à me donner des conseils en POO car je n'ai jamais vraiment maîtrisé le problème.

    Mais le découpage en plusieurs classes me pose aussi quelques problèmes comme celui ci :
    - J'ai besoin d'un paramètre à la fois dans Classe INI et dans Classe Line autrement dit ce paramètre doit être identique à tout moment si je le change dans ClasseINI par exemple y compris dans les objets Line déjà instanciés. Donc forcement si je passe par le New de la Classe Line, ça ne fonctionne pas étant donné que le New ne s’exécute que lors de l'instanciation.
    Je connais un peu les variables partagées "Shared" entre classe mais c'est pour que tous les objets d'une même classe partage la même variable, pas entre classes différentes si je ne dit pas de bêtises.

    Merci beaucoup si vous pouvez m'aider.

  2. #2
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2013
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 93
    Par défaut
    "J'ai besoin d'un paramètre à la fois dans Classe INI et dans Classe Line autrement dit ce paramètre doit être identique à tout moment"

    Si je résume : INI utilise FileINI qui utilise Line

    Vu ta structure si tu veux passer un élément de INI à Line tu te dois de le passer par FileINI.
    Donc tu peux faire une méthode dans FileINI qui est public qui enverra le paramètre sur son objet List<Line> comme ça puisque INI a accès à FileINI il pourra touché cette méthode.
    Ou alors si c'est une propriété public en lecture et écriture, tu peux directement interagir dessus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fileINI.Lines.Get(1).SetParameter("coucou"); //Admettons que fileINI soit l'instance d'une Classe FileINI
    Une méthode dans Line en public ^^ y a plein de possibilités

  3. #3
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Bonjour,

    En fait je pense qu'il y a un problème de compréhension du problème.

    Si toutes les classes appartiennent les unes aux autres, c'est un "non-sens" de dupliquer une variable, vu qu'elles sont liées.


    Donc la réponse de Kangourex n'est pas si fausse :
    -> si tu veux que la variable appartienne à Line, alors si elle est publique alors elle sera accessible dans la classe la plus haute.
    -> Sinon elle appartient directement à la classe la plus haute.

    Et dans les deux cas on pourra utiliser l'instance de la classe la plus haute pour y accéder à tous les coups.

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Par défaut
    Merci à vous, ça m'a donné quelques idées mais je ne pourrais essayer que ce soir.
    La solution de Kangourex m'à l'air tout à fait fonctionnel mais je m'interroge pour savoir si je peux éviter de parcourir tous les Objets Line.
    Je pense en particulier à un truc comme Shared Parameter1 dans la classe Line mais si j'ai plusieurs instances de INI je ne vais pas pouvoir avoir un Parameter1 propre à un objet INI1 et ses propre objets Line, et un Parameter2 propre à un autre Objet INI2 et ses propre Objets Line.

    Vous en pensez quoi ?
    PS : C'est pas forcement très clair ce que j'ecrits, j’espère que vous comprendrez.

  5. #5
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Essaie de sortir de ton raisonnement.

    Si tu veux une valeur de paramètre commun à INI1 et ses objets Lines, et une valeur à Init2 et ses objets Lines, la réponse est simple :
    La variable doit appartenir à INI et c'est tout !

    Pourquoi la vouloir dans les objets Line ?

    Si tu manipules des lines, se sera à travers un objet INI de toute façon... Donc pas besoin d'aller les mettre dans Lines, ni de les rendre commune aux Line d'un INI... l'instance commune d'instance Line, c'est l'objet INI.

    Edit : Il faudrait peut être que tu expliques à quoi correspondent ces fameux paramètres, la discussion serait moins théoriques

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Par défaut
    Bonjour,

    Citation Envoyé par mactwist69 Voir le message
    La variable doit appartenir à INI et c'est tout !

    Pourquoi la vouloir dans les objets Line ?

    Si tu manipules des lines, se sera à travers un objet INI de toute façon... Donc pas besoin d'aller les mettre dans Lines, ni de les rendre commune aux Line d'un INI... l'instance commune d'instance Line, c'est l'objet INI.
    Je ne suis pas tout à fait d'accord. Ce raisonnement est valable s'il n'a pas besoin de sa variable au niveau d'une instance de Line. Or si j'ai bien compris, il en a besoin. Un objet Line ne connait pas INI mais a besoin d'utiliser une information détenue par INI. A mon sens, le plus simple serait de passer un objet encapsulant ce paramètre (le paramètre serait une propriété de l'objet) depuis INI vers Line via FileIni. Si INI modifie le paramètre, inutile de répercuter cette modification vers Line puisquon manipule la propriété d'un objet (un objet est un pointeur).
    Une autre solution consisterait à passer directement l'instance de INI vers Line mais ... Non !

    Quoi qu'il en soit, il ne faut en aucun cas dupliquer l'information portée par le "paramètre".

    Citation Envoyé par mactwist69 Voir le message
    Edit : Il faudrait peut être que tu expliques à quoi correspondent ces fameux paramètres, la discussion serait moins théoriques
    Complètement d'accord !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/09/2010, 15h52
  2. Réponses: 2
    Dernier message: 25/12/2008, 20h51
  3. [Reflection] Obtenir les sous-classes d'une classe
    Par El Saigneur dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 11/06/2007, 07h14
  4. [POO] Organiser ses classes (en sous classes)
    Par alexfrere dans le forum Langage
    Réponses: 5
    Dernier message: 20/03/2007, 13h07
  5. Super classes et sous-classes/Méthodes
    Par smag dans le forum Langage
    Réponses: 4
    Dernier message: 29/06/2005, 23h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo