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

Windows Forms Discussion :

[VS2003] Module VS Class


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut [VS2003] Module VS Class
    Alors voici une question toute bête et qui, je pense, sera vite résolue.

    Quelle est la différence entre un module et une classe ?

    Je me pose la question car j'ai un jour créé un module (pourquoi j'ai fait module et pas class, j'en sais rien ^^) pour traiter tous mes accès DB. C'est lui gère la connexion et toutes les requêtes.

    Maintenant, je suis en train de me dire que, comme j'ai rien à faire à mon taf en ce moment, je rendrais bien ce module multi DB car à l'heure actuelle, je dois l'adapter en fonction de la DB que j'utilise. Il s'agit uniquement de changer les types des objets mais bon...

    Enfin bon, tout ça pour dire que je me demandais ce qu'il est possible de faire avec un module et que l'on ne pourrait faire avec une classe (et réciproquement).

    Merci d'avance.

    Griftou.

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    un module est un genre de singleton utilisable directement
    une classe n'est pas utilisable sans instance

    il peut y avoir plusieurs instances d'une classe grace à NEW
    chaque instance de classe a ses propres variables privées

    il me semble qu'un module ne peut pas avoir de propriétés ni d'évènements aussi

    un module fonctionne à peu près comme une classe qui n'a que des membres shared


    pour un accès à la db, un module peut suffire en effet, mais des fois un classe est mieux (pour des trucs plus poussés, genre appli multithreadées)

    pour faire en sorte que ca soit multi db, tu peux aussi rester sur un module

    m'enfin les modules sont très peu utilisés sur .NET
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 184
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 184
    Par défaut
    Bonjour.

    Citation Envoyé par sperot51 Voir le message
    une classe n'est pas utilisable sans instance
    ...
    un module fonctionne à peu près comme une classe qui n'a que des membres shared
    Hmmm... c'est un peu contradictoire non ? Si j'utilise une méthode shared, je n'instancie pas la class.

    Dans un tel cas, ça n'est pas tant la classe qui est importante mais bien le partage de la méthode.

    Personnellement, je conseillerai également une classe NotInheritable avec effectivement des méthodes et propriétés shared (genre le TextRenderer) car le module... ça ressemble à de la rémanence de VB.

    Autre point, avec un module, on perd vite le fil et ça devient vite fourre tout. La class a un effet structurant (sauf si on même tout dans la même !), on est plus tenter de regrouper les méthodes ou propriétés par fonctionnalité (pour le TextRenderer, c'est tout ce qui permet de gérer le rendu d'un text).

    Cdt.

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    Citation Envoyé par olsimare Voir le message
    Bonjour.



    Hmmm... c'est un peu contradictoire non ? Si j'utilise une méthode shared, je n'instancie pas la class.


    ah oui lol
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Autant la première réponse de sperot m'avait semblée claire, autant les suivantes m'embrouillent ^^.

    Bon, je pense que j'vais essayer de refaire mon machin avec une/des classe/s parce que c'est vrai que mon module est franchement fourre tout. Ca concerne l'accès DB ? Oui --> hop, dans le module

    Puis ça me fera un bon exercice. Je n'ai encore jamais créé de classe à moi (enfin si, j'ai fait ça en java pendant mon stage de fin d'étude mais j'me souviens plus comment faut faire )

    Vous me conseilleriez de faire une seule classe ou plusieurs (comment les séparer alors ?) ?

    Je crois qu'il va falloir que j'acquiers la manière de réfléchir derrière tout ça...
    J'ai déjà lu et relu divers texte sur le langage orienté objet donc la théorie j'la connais mais quand on passe à la pratique, c'est autre chose.

    Merci quand même !

    Griftou.

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    quels sont les membres de ton module à peu près ?
    (membres = {variable, propriété, sub, fonction, event ...})


    un module peut etre utile pour stocker des variables globales à l'application, tout le monde doit nécessairement avoir la meme, peu importe la fenetre à partir de laquelle tu lis les variables

    mais là aussi on peut déporter ca dans une classe, par exemple, si tu fais une fenetre de réglages des paramètres, tu peux alors mettre les variables globales en tant que propriétés shared de cette classe Form

    ex :
    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
     
    public class FRMparams
     
         ' {code de la fenetre}
     
        private shared _CouleurFond as system.drawing.color
        public shared readonly property CouleurFond as system.drawing.color
            get
                return _CouleurFond
            end get
        end property
     
        public shared sub InitParameters() ' cette sub peut etre appelée au demarrage de l'appli pour initialiser les parametres par exemple
            ' accès à la base de données pour retrouver les paramètres (ou fichier ini)
            _CouleurFond = couleurtrouveedansbase
        end sub
     
    end class

    comme ca n'importe quand tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim f as new FRMparams
    f.showdialog
    l'utilisateur peut changer les paramètres comme la couleur de fond de l'appli dans mon exemple, et tu enregistres ce qu'il fait
    et les paramètres sont accessibles depuis toute l'appli

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class FRMmenu
        public sub new
            me.backcolor = FRMparams.CouleurFond
        end sub
     
    ' {code de la fenetre}
    end class

    FRMparams n'est ici pas une instance mais le nom de la classe, les membres non partagés ne sont pas affichés par l'intellisense, ni utilisable

    alors que f plus haut est une instance du type FRMparams
    et donc f.CouleurFond sera souligné en erreur car ce n'est pas une propriété d'instance mais de la classe
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. [VBA] Module de classe et évènement
    Par Caroline1 dans le forum Access
    Réponses: 9
    Dernier message: 20/03/2013, 23h23
  2. [Module de classe] Fonction non liée à l'instance?
    Par Caroline1 dans le forum Access
    Réponses: 6
    Dernier message: 07/04/2006, 20h13
  3. Réponses: 4
    Dernier message: 31/03/2006, 15h16
  4. Réponses: 8
    Dernier message: 22/02/2006, 15h09
  5. variables publiques ou module de classe ?
    Par niclalex dans le forum Access
    Réponses: 3
    Dernier message: 04/10/2005, 18h49

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