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 6 et antérieur Discussion :

Private / Public


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 20
    Points : 14
    Points
    14
    Par défaut Private / Public
    Bonjour,

    J'ai plusieurs modules .bas.

    Le module Mysql.bas contient QUE des fonctions déclarée en private.

    Est-il posible d'inclure ce module dans un autre module Alias.bas pour pouvoir appelé les fonctions private de Mysql.bas?

    Elles sont private car on ne veux avoir accès à ces fonctions QUE depuis Alias.bas et pas des autres modules. La solution du public n'est donc pas possible.

  2. #2
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Je dirais que le mieux est d'ajouter dans le module MySql.bas des fonctions "Public" qui utilisent les fonctions Private et te retournent leur résultat.
    C'est (un peu, je crois) le principe de l'encapsulation en langage objet.
    (Ça pète, les mots de 5 syllabes, hein?)

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Oui, on connait cette solution mais je ne veux pas mettre de module public dans Mysql.bas.

    Si je n'ai pas le choix, je ferais ca mais je prefererais une autre solution.

  4. #4
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    non, je ne cris pas, mais tu peux créer une fonction d'appel des autre fonction dans ton module mysql du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public function fonctiondappel(nom as string, paramstr() as string )
    'si une de tes fonctions ne demande un control, tu peut utiliser la methode de recherche du control par le nom
    ' de ce fait, la methode de parametres string fonctionne dans l plupart des cas
    if nom = "nomfonction" then call nonfonction (paramstr(1),paramstr(2)....)
     
    if nom = nomfonction2 then call nonfonction (paramstr(1),paramstr(2)....)
     
    .
    .
    .
    ext...
    end function
    je dois reconnaitre que c'est une methode un peut longue mais je vois pas des masses d'autre solutions.

    salut
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  5. #5
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    En fait, je ne comprend plus la question(ni surtout l'intérêt d'avoir des fonctions qu'on ne peut utiliser que depuis un module et pas depuis les autres)
    Et du coup, je n'ai plus de solution...
    Désolé.

  6. #6
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    Citation Envoyé par Megaxel
    En fait, je ne comprend plus la question(ni surtout l'intérêt d'avoir des fonctions qu'on ne peut utiliser que depuis un module et pas depuis les autres)
    Et du coup, je n'ai plus de solution...
    Désolé.
    la question est: comment avoir acces à un module sans déclarer toutes ses fonctions publiques
    l'interet est: dans un gros projet ou beaucoups de noms de fonctions et de variables se recoupent d'éviter d'avoir à se casser la tête pour en inventer de nouvelle ou d'avoir des noms à rallonge. (à partir de plus de 250 variables et fonctions publiques, ça devient difficile à gérer, même ent les affublant toutes d'un commentaire à la déclaration)
    je me souviens avoir passé un jours sur un bug de recoupement d'une variable et d'une fonction.

    bref, soit il fait un nouveau prog avec des parametres d'appels, soit il trouve une fonction pour passer ses variables en private, soit il invente de nouveauxnoms pour toutes celles-ci

    salut
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  7. #7
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Mouais... D'accord... Enfin, bof, quoi...

  8. #8
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Alors j'explique l'interet

    Les fonctions private sont des fonctions avec beaucoup de paramètres (pour la connection de la base).

    Et les fonctions dans alias.bas sont des fonctions quasi sans parametres.

    Par exple, dans alias.bas on a :

    public function ConnectionBase1()
    connectionBase(Base1param1, Base1Param2, ...)
    end function

    public function ConnectionBase2()
    connectionBase(Base2param1, Base2Param2, ...)
    end function

    public function ConnectionBase3()
    connectionBase(Base3param1, Base3Param2, ...)
    end function

    public function ConnectionBase4()
    connectionBase(Base4param1, Base4Param2, ...)
    end function

    et dans Mysql.bas on a la fonction générale : "private function ConnectionBase(param1, param2, param3, ...)" avec les paramètres qui vont bien.

    Et pour que les programmeurs ne grugent pas et n'appellent pas directement la fonction général avec les paramètres, j'aurais voulu rendre la fonction générale private.

  9. #9
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Et pour que les modules ai un sens, j'aurais voulu séparer mes fonctions générales de mes alias dans 2 modules.bas.

  10. #10
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Haaaaa, Ok, là, je comprend mieux!! Tu bosses avec des petits renards...

    La meilleure solution: les coups de règle en fer sur les doigts de ceux qui ne respectent pas les règles de développement!!! Nomdidiou!!!

  11. #11
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Oui ca peut eventuellement etre une solution mais c'est vrai que j'aurais préféré un truc du style de l'include en C à mettre dans Alias.bas pour accéder aux fonctions private de Mysql.bas

    Mais si ca n'existe pas .....

  12. #12
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    Citation Envoyé par Naruseb
    Mais si ca n'existe pas .....
    peut-être que si, ne te décourage pas si vite
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  13. #13
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Alors, personne d'autres n'a de solutions?

  14. #14
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    ha oui, n'oublie pas que tu peux obtenir la liste des fonctions avec leurs arguments rapidement en ouvrant ton .bas comme un .Txt

    tu met le texte dans la variable "tontext" et tu execute ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     dim i as long
    dim tontext as string
    dim var() as string
    dim numfunc as long
    var()=split(tontext,vbcrlf)
    dim functionlist(Ubound(var,1)/2) as string 'ça ne peut pas être plus gros
    for i= 0 to Ubound(var,1)
      if replace(var(i),"Private Sub", "")<>var(i) then
          functionlist(numfunc)=replace(var(i),"Private Sub", "")
          numfunc=numfunc+1
       end if
       if replace(var(i),"Private Funtion", "")<>var(i) then
          functionlist(numfunc)=replace(var(i),"Private Funtion", "")
          numfunc=numfunc+1
       end if
    next i
    'ta liste est donc dans function list
    'pour tout mettre dans un texte:
    dim list as string
     for i=0 to numfunc
       list=list+var(i)
     next i


    bonne chance
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

Discussions similaires

  1. [PHP 5.0] protected private public
    Par coolphp5 dans le forum Langage
    Réponses: 4
    Dernier message: 08/12/2009, 13h49
  2. Héritage : private/public/protected
    Par le Daoud dans le forum Langage
    Réponses: 5
    Dernier message: 24/10/2007, 13h47
  3. Réponses: 16
    Dernier message: 30/05/2007, 23h07
  4. problème de private , public , protected
    Par florantine dans le forum C++
    Réponses: 3
    Dernier message: 17/01/2006, 20h51
  5. Réponses: 8
    Dernier message: 20/12/2004, 15h14

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