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 :

Problème Théorique sur la POO


Sujet :

VB.NET

  1. #1
    Membre émérite 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 : 39
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut Problème Théorique sur la POO
    Bonjour la communauté, j'ai un souci, en fait je ne sais pas si s'en est un, mais ça m'embrouille le cerveau.

    -SITUATION-
    J'ai une classe, disons "Rapport".
    Tout est bien encapsulé dedans, il est indépendant et marche très bien.
    La classe contient une procédure Public Save() qui gère sa sauvegarde.

    -PROBLÉMATIQUE-
    Or dans cette fonction, après avoir sauvegarder en base l'objet, j'ai besoin de charger d'autres rapports liés à celui que j'enregistre initialement, pour mettre à jour certaines donnés de ces rapports (qui sont liés).

    Par exemple: un développeur utilise mon objet, créer un rapport A, utilise Save(), dans save, après avoir sauvé A, je souhaite chargé A' et A'' pour y enregistrer des données communes. J’espère que tout va bien jusque là !

    -SOLUTION-
    J'ai donc créer une procédure (toujours dans ma classe Rapport) qui créer 3 objets : A, A' et A'' en variable locale pour les charger, consolider les données et sauvegarder le tout et de manière invisible pour l'utilisateur de l'objet.

    Cette procédure appel évidemment quelques autres procédures pour diviser le travail et pas écrire un pavé.
    Or ces procédures, je ne veux pas que l'utilisateur de l'objet les vois, c'est un travail "en interne", je les ai donc mis en privé.
    (vous commencez à voir le problème?)

    -QUESTION-
    Et c'est là que ça me chagrine :
    Dans ma procédure je fais par exemple : MaVariableLocalA.ProcedurePrivate()
    Cette procédure n'est utiliser QUE pour cette manœuvre.

    Mais cela ne pose-t-il pas problème ?

    J'ai accès à ProcedurePrivate() car je suis dans ma classe, mais en même temps, l'utilisateur d'un objet n'est pas censé voir cette procédure.
    Mais dans mon cas, je la vois cette procédure... comment se fait il finalement ?


    Donc soit c'est normal : On peut appeler une procédure privé d'un objet si on se trouve dans la classe de l'objet. Et donc dans les procédures privés, quand je fais Me.MaPropriété, il prends bien celui de l'objet ?

    Ou bien c'est anormal d'utiliser la POO ainsi, et c'est finalement un bug de l'utiliser ainsi et le Me. d'une procédure privé pointerait par exemple sur l'instance en cours et non sur l'objet employé ?

    Si quelqu'un de sage pouvait éclaircir ma lanterne sur ce petit bug de cerveau, se serait fortement apprécié.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  2. #2
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Points : 5 485
    Points
    5 485
    Par défaut
    Citation Envoyé par mactwist69 Voir le message
    Donc soit c'est normal : On peut appeler une procédure privé d'un objet si on se trouve dans la classe de l'objet. Et donc dans les procédures privés, quand je fais Me.MaPropriété, il prends bien celui de l'objet ?

    Ou bien c'est anormal d'utiliser la POO ainsi, et c'est finalement un bug de l'utiliser ainsi et le Me. d'une procédure privé pointerait par exemple sur l'instance en cours et non sur l'objet employé ?

    Si quelqu'un de sage pouvait éclaircir ma lanterne sur ce petit bug de cerveau, se serait fortement apprécié.
    Si j'ai bien compris tu une classe Rapport, contenant Rapport.ProcédurePrivée, et tu te demandes si le rapport A peut appeler B.ProcédurePrivée ?
    Oui, tu peux, cette procédure agira bien sur B et il n'y a rien à reprocher en termes de conception.

  3. #3
    Membre émérite 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 : 39
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Donc ce qui caractérise une procédure privé :

    Elle est seulement utilisable dans une classe,
    Mais également être appelé par un objet du type de la classe SI cet objet se trouve dans sa propre classe.

    En opposition à l'idée que je m'étais faite qu'un procédure privé ne peut tout simplement pas être appelé depuis un objet.

    Bon.
    Merci bien d'avoir confirmé.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  4. #4
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Points : 5 485
    Points
    5 485
    Par défaut
    En effet, la visibilité est affaire de types et non d'instances. Tout ce qui se trouve dans une classe (y compris ses classes imbriquées) peut appeler les méthodes privées de cette classe.

  5. #5
    Membre émérite 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 : 39
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    C'est donc de l'encapsulation privé !

    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

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

Discussions similaires

  1. Problème droit sur un tablespace
    Par wazar dans le forum Administration
    Réponses: 11
    Dernier message: 05/01/2010, 15h12
  2. problème écriture sur un fichier
    Par drinkmilk dans le forum MFC
    Réponses: 4
    Dernier message: 24/06/2007, 00h08
  3. Problème innerHTML sur div !!!
    Par aburner dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/01/2005, 09h23
  4. [CR8] Problème tableau sur plusieurs pages???
    Par christophe28 dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 02/11/2004, 15h46
  5. [MFC] Problème pointeur sur une classe
    Par mick74 dans le forum MFC
    Réponses: 7
    Dernier message: 14/04/2004, 14h17

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