none
références et instructions Imports RRS feed

  • Question

  • Bonjours,

    Je suis débutant en VB 2005, je voulais savoir l’utilité des références et des instructions Imports spécifiées dans un projet VB 2005

     

    vendredi 16 mai 2008 11:04

Réponses

  • Bonjour,

     

    Un extrait d'une de mes réponses sur les newsgroups de Microsoft :

     

    Bonjour,

    Une référence est une dépendance à un autre assembly (DLL).


    Un Imports, contrairement à ce que l'on pourrait croire "n'importe" rien !
    Il ne réalise en aucun l'équivalent du #include classique du C/C++ !
    Pour comprendre les Imports, il faut comprendre ce qu'est un espace de nom :


    Vous manipulez (et crée) énormement de classe sous .NET, il est donc
    difficile de gérer une unicité au niveau des noms...
    Pour cela on introduit le concept d'espace de nom qui permet de différencier
    2 classes différentes. En fait les espaces de nom peuvent être vues comme
    "un conteneur logique".
    Un exemple analogue est de considérer un espace de nom comme un dossier, et
    une classe comme un fichier.


    Cela veut dire qu'une classe "Toto" ne s'appelle pas Toto, mais quelque
    chose comme :
    EspaceDeNom1.SousEspace.SousSousEspace.Toto
    et cette classe est différente d'une autre classe avec le même nom, mais un
    espace de nom différent :
    AutreEspace.Toto


    Chaque espaces de nom regroupent donc plusieurs classes, regroupée de
    manière logique...


    Sous .NET en programmation pur et dur, on devrait instancier les classes
    ainsi :
    Dim f As System.Windows.Forms.Form
    f = new System.Windows.Forms.Form()


    Le gros problème, c'est qu'il faut taper énormement de code ! Et on sait que
    les informaticiens pro sont des fainéants !


    Pour remédier à ce problème, on spécifie un :
    Imports System.Windows.Forms


    Et on peu coder l'instanication précédente ainsi :
    Dim f As Form
    f = new Form()


    Plus techniquement, lorsque le compilateur rencontre : Form, il se dit "Je
    connais pas", je vais essayez avec les listes des Imports :
    "System.Form" --> Connait pas
    "EspaceNom....Form" --> Connait pas
    "System.Windows.Forms.Form" --> Je connais ! Je remplace donc : "Form" par
    "System.Windows.Forms.Form"


    Gardez à l'esprit que le Imports, "n'importe" rien !!! Il se contente de
    résoudre des problèmes de nom à la compilation.


    Il ne faut pas confondre Assembly et Espace de nom !
    Assembly = Conteneur physique de classes (fichier .dll)
    Espace de nom = Conteneur logique de classes (défini dans le projet ou dans
    le fichier via la directive Namespace)


    Il est possible de mettre plusieurs espaces de nom dans un Assembly, et il
    est possible de mettre un Espace de nom réparti dans 2 ou 3 assembly...
    La tradition, veut que l'on respecte plustot la première méthode, la
    deuxième étant réservé dans des cas exceptionnelle, ou si votre espace de
    nom contient 50 Mo de classes...


    Microsoft ont par exemple mis dans l'assembly :
    System les espaces de nom System, System.Reflection, ...etc
    Dans System.Windows.Forms, ils ont mis uniquement l'espace de nom
    System.Windows.Forms  ...etc


    Cordialement

     

    En espérant que cela face briller votre lanterne....

     

    Cordialement

    vendredi 16 mai 2008 11:34
    Modérateur

Toutes les réponses

  • Bonjour,

     

    Un extrait d'une de mes réponses sur les newsgroups de Microsoft :

     

    Bonjour,

    Une référence est une dépendance à un autre assembly (DLL).


    Un Imports, contrairement à ce que l'on pourrait croire "n'importe" rien !
    Il ne réalise en aucun l'équivalent du #include classique du C/C++ !
    Pour comprendre les Imports, il faut comprendre ce qu'est un espace de nom :


    Vous manipulez (et crée) énormement de classe sous .NET, il est donc
    difficile de gérer une unicité au niveau des noms...
    Pour cela on introduit le concept d'espace de nom qui permet de différencier
    2 classes différentes. En fait les espaces de nom peuvent être vues comme
    "un conteneur logique".
    Un exemple analogue est de considérer un espace de nom comme un dossier, et
    une classe comme un fichier.


    Cela veut dire qu'une classe "Toto" ne s'appelle pas Toto, mais quelque
    chose comme :
    EspaceDeNom1.SousEspace.SousSousEspace.Toto
    et cette classe est différente d'une autre classe avec le même nom, mais un
    espace de nom différent :
    AutreEspace.Toto


    Chaque espaces de nom regroupent donc plusieurs classes, regroupée de
    manière logique...


    Sous .NET en programmation pur et dur, on devrait instancier les classes
    ainsi :
    Dim f As System.Windows.Forms.Form
    f = new System.Windows.Forms.Form()


    Le gros problème, c'est qu'il faut taper énormement de code ! Et on sait que
    les informaticiens pro sont des fainéants !


    Pour remédier à ce problème, on spécifie un :
    Imports System.Windows.Forms


    Et on peu coder l'instanication précédente ainsi :
    Dim f As Form
    f = new Form()


    Plus techniquement, lorsque le compilateur rencontre : Form, il se dit "Je
    connais pas", je vais essayez avec les listes des Imports :
    "System.Form" --> Connait pas
    "EspaceNom....Form" --> Connait pas
    "System.Windows.Forms.Form" --> Je connais ! Je remplace donc : "Form" par
    "System.Windows.Forms.Form"


    Gardez à l'esprit que le Imports, "n'importe" rien !!! Il se contente de
    résoudre des problèmes de nom à la compilation.


    Il ne faut pas confondre Assembly et Espace de nom !
    Assembly = Conteneur physique de classes (fichier .dll)
    Espace de nom = Conteneur logique de classes (défini dans le projet ou dans
    le fichier via la directive Namespace)


    Il est possible de mettre plusieurs espaces de nom dans un Assembly, et il
    est possible de mettre un Espace de nom réparti dans 2 ou 3 assembly...
    La tradition, veut que l'on respecte plustot la première méthode, la
    deuxième étant réservé dans des cas exceptionnelle, ou si votre espace de
    nom contient 50 Mo de classes...


    Microsoft ont par exemple mis dans l'assembly :
    System les espaces de nom System, System.Reflection, ...etc
    Dans System.Windows.Forms, ils ont mis uniquement l'espace de nom
    System.Windows.Forms  ...etc


    Cordialement

     

    En espérant que cela face briller votre lanterne....

     

    Cordialement

    vendredi 16 mai 2008 11:34
    Modérateur
  • je suis tres heureux de votre generosité

     

    jeudi 22 mai 2008 09:49