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 :

P'tite question concernant les Class ou Module


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de arnofly
    Homme Profil pro
    Développeur Web / Webdesigner
    Inscrit en
    Mai 2007
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web / Webdesigner
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 413
    Par défaut P'tite question concernant les Class ou Module
    Bonjour,

    Je suis en train de finaliser un petit programme, et je voudrais le rendre plus "friendly". C'est pour ma mère, elle est pas super alaise en informatique
    J'ai donc décidé de numéroter certains controles pour qu'elle puisse suivre le cheminement du prog. sans se poser de question. (Etape1, Etape2...) J'ai crée 3 images par controle (inactif, mouseHover et click). Voilà pour la petite histoire

    Ma form principale est déjà bien chargée, et j'aimerais rassembler les procedures concernant le design de ces controles ailleurs. ça doit être possible j'imagine, mais... je ne sais pas du tout comment faire ! Je ne sais même pas de quelle coté chercher. Je ne crois pas que dans ma bible, P.Lasserre aborde ce sujet

    Merci d'avance !

  2. #2
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 467
    Par défaut
    Si j'ai bien compris : tu voudrais mettre les procédures de type "event" dans un fichier à part ?

    Tu ne peux pas ...

    Pour la petite histoire (on en a tous une hein :p) : avant DotNet 2 (je crois), quand tu concevais ta form, Visual Studio te générais du code que tu pouvais voir dans le fichier "MaForm.vb" et englobé dans une région. Maintenant ce code est invisible à l'utilisateur (je ne sais pas d'ailleurs où ils l'ont mis).

    Toujours est il que tu peux mettre tes fonctions/procédures de traitement dans un module ou classe à part mais les procédures d'événement liés aux contrôles de ton formulaire, tu ne peux pas les mettre ailleurs.

    Par exemple, tu as une textbox où tu rentres une date de naissance, un bouton pour calculer l'âge, une label pour afficher le résultat.

    - Tu saisie la date de naissance : Tu vas utiliser la procédure "OnTextChanged" pour vérifier la date de naissance à la volée. Cette procédure peut très bien appeler une fonction contenue dans une classe ou module pour vérifier cette date de naissance.
    - tu clic sur le bouton : tu vas utiliser la procédure "OnClick" pour lancer le calcul de l'âge. Cette procédure va appeler une fonction contenue dans une classe ou procédure pour calculer l'âge et te retourner le résultat, que tu vas insérer dans ta label.

    Un petit exemple

    Le fichier de ta form :

    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
    Public Class Form1
        Dim monAge As New AgeDuCapitaine
     
     
        Private Sub txtDateNaissance_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtDateNaissance.TextChanged
            'Appel de 
            If Not monAge.DateCorrecte(txtDateNaissance.Text) Then
                BtnCalculAge.Enabled = False
            Else
                BtnCalculAge.Enabled = True
            End If
        End Sub
     
        Private Sub BtnCalculAge_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCalculAge.Click
            lblAgeResultat.Text = monAge.RecupererAge().ToString
        End Sub
    End Class

    Le fichier "AgeDuCapitaine.vb"

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Public Class AgeDuCapitaine
     
        Private dtmDateNaissance As DateTime
     
     
        Public Property DateNaissance() As DateTime
            Get
                Return Me.dtmDateNaissance
            End Get
            Set(ByVal value As DateTime)
                Me.dtmDateNaissance = value
            End Set
        End Property
     
     
        Public Sub New()
     
        End Sub
     
        Public Function DateCorrecte(ByVal strDate As String) As Boolean
            Dim uneDate As DateTime
            uneDate = Date.Parse(strDate)
            'Ton Traitement de vérification de date 
     
            '..
            '..
            '..
            Me.dtmDateNaissance = uneDate
            Return True
        End Function
     
        Public Function RecupererAge() As Integer
            Dim intAge as Integer = -1
            'ton traitement pour calculer l'age
            '..
            '..
            '..
            Return intAge
        End Function
    End Class

    En espérant avoir été un peu plus clair !

    A noter que tu peux utiliser les
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #Region "NomDeMaRegion"
     
    #End Region
    Qui t'offrent la possibilité de regrouper du code ...

  3. #3
    Membre très actif Avatar de arnofly
    Homme Profil pro
    Développeur Web / Webdesigner
    Inscrit en
    Mai 2007
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web / Webdesigner
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 413
    Par défaut
    Merci pour tes infos ! J'y vois effectivement un peu plus clair.

    A force de faire des prog de plus en plus complexe, "l'ascenseur vertical" commence à devenir un problème On perd en visibilité. C'est d'autant plus génant si je mets un projet en standby un petit moment.

    Finalement, l'architecture que tu m'expliques est aussi celle que tu me conseilles de suivre, non ?

    Si j'ai bien compris, je devrais laisser tous les evenements dans la form sur laquelle ils sont créé (pas le choix), mais ce qui concerne la couleur d'un bouton, son texte, son positionnement... mettre ça dans une class que je pourrais appeler FormDesign par exemple, qui regrouperait toutes les procedures ce de genre.

    Encore merci.

  4. #4
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 467
    Par défaut
    Tu peux très bien dans un module faire une ou plusieurs fonctions qui te permettront de changer les propriétés d'un controle.

    Mais il faut que ce soit générique... Comme ça tu peux l'utiliser pour tout tes contrôles.

    Un exemple de procédures que tu pourrais glisser dans un module :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public Sub ChangeControl(ByRef ctrl As Control, Optional ByVal blnVisible As Boolean = True, Optional ByVal blnEnabled As Boolean = True)
     
     
    End Sub
    Je ne t'écris pas le code, mais seulement la définition de la procédure devrait te donner les indices

    Une notion essentielle pour un développeur c'est de savoir "Factoriser" son code. Si tu te souviens de tes cours de maths, je ne t'apprends rien !

    Sinon : On dit cela, car il est préférable pour un développeur de séparer ses traitements récurrents vers des modules ou classes (en général on utilise les classes en DotNet mais bon) afin de limiter le nombre de ligne et ainsi gagner du temps.

    Bon courage pour la suite en tout cas.

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Luc1an0 Voir le message
    avant DotNet 2 (je crois), quand tu concevais ta form, Visual Studio te générais du code que tu pouvais voir dans le fichier "MaForm.vb" et englobé dans une région. Maintenant ce code est invisible à l'utilisateur (je ne sais pas d'ailleurs où ils l'ont mis).
    Accessoirement, cela n'a pas grand chose à voir avec .Net mais beaucoup avec VS et avec le compilateur (support des classes partielles en l'occurence).

    Le code généré par le concepteur est dans MyForm.Designer.vb ( ou .cs en C#), ton code étant dans MyForm.vb

    Le VB 1.0 (et le C# 1.0) ne supportant pas les classes partielles le code généré était dans le fichier unique de classe. Avec le support des classes partielles, on peut éclater une classe en plusieurs fichiers sources.

  6. #6
    Membre très actif Avatar de arnofly
    Homme Profil pro
    Développeur Web / Webdesigner
    Inscrit en
    Mai 2007
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web / Webdesigner
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 413
    Par défaut
    Slt Luc1an0,

    Effectivement, je comprends bien l'interet de factoriser. Des lignes de commandes inutiles finissent par rendre le code illisible.
    Merci pour la def. de la procedure ! Ne maitrisant pas cet art (sans doute à cause de la création automatique par l'IDE), jusqu'a present, j'ai défini l'aspect visuel de mes controles à l'aide de "Sender" et "Select Case" le bouton machin : tac appliquer, bouton bidule : tac appliquer... C'est sans doute pas top, mais c'est mieux que mon 1er programme où j'ai créé 41 procedures identique ne sachant pas faire autrement Heureusement que je connaissais Ctrl+C Ctrl+V

    Sinon, c'est quoi la différence entre une class et un module au juste ? Je suis autodidact et y'a des trucs de base que je ne maitrise pas, désolé Par habitude, je crée un module pour regouper certaines procédures mais franchement ça aurait pu tomber sur une class

    Bonne journée.

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par arnomedia Voir le message
    Sinon, c'est quoi la différence entre une class et un module au juste ? Je suis autodidact et y'a des trucs de base que je ne maitrise pas, désolé Par habitude, je crée un module pour regouper certaines procédures mais franchement ça aurait pu tomber sur une class

    Bonne journée.
    De mémoire, un module c'est à peu près l'équivalent d'une classe static en VB.Net ("Shared" que vous dites dans ca langage bizarre). A vrai dire, je ne savais pas que les modules existait encore en VB.Net.

    Une classe c'est un objet instantiable (si tu as des problème avec la notion de classe, il faut d'urgence lire un tutoriel sur la POO avant de continuer à coder).

  8. #8
    Membre très actif Avatar de arnofly
    Homme Profil pro
    Développeur Web / Webdesigner
    Inscrit en
    Mai 2007
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web / Webdesigner
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 413
    Par défaut
    Voilà, c'est pour cela que je sais pas quel est la différence entre Module et Class. C'est pas bien clair en fait

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

Discussions similaires

  1. question concernant les fichier.bin
    Par argon dans le forum Autres Logiciels
    Réponses: 10
    Dernier message: 27/08/2005, 17h44
  2. Questions concernant les études supérieures et travails
    Par Vivian Pennel dans le forum Etudes
    Réponses: 25
    Dernier message: 21/06/2005, 15h23
  3. Réponses: 11
    Dernier message: 21/06/2005, 10h16
  4. [Débutant] Deux questions concernants les vues
    Par 13obscur dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 19/04/2005, 14h29
  5. Réponses: 7
    Dernier message: 10/09/2004, 14h28

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