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 :

Création d'une classe


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Novembre 2014
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Novembre 2014
    Messages : 367
    Points : 9
    Points
    9
    Par défaut Création d'une classe
    Bonjour, dans cet exemple, pourquoi est-il nécessaire d'avor plusieurs constructeurs ? Je ne comprends pas....

    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
    Public Class Personne
     
        Private p_nom As String
        Private p_prenom As String
        Private p_naissance As Date
        Private p_photo As Image
     
        Public Sub New(ByVal n As String, ByVal p As String, ByVal na As Date)
            nom = n
            prenom = p
            naissance = na
        End Sub
     
        Public Sub New(ByVal n As String, ByVal p As String)
            nom = n
            prenom = p
            naissance = Date.Today
        End Sub
     
        Public Sub New(ByVal n As String, ByVal p As String, ByVal na As Date, ByVal pic As Image)
            nom = n
            prenom = p
            naissance = na
            photo = pic
        End Sub
     
        Public Sub New(ByVal n As String, ByVal p As String, ByVal na As Date, ByVal ch As String)
            nom = n
            prenom = p
            naissance = na
            photo = Image.FromFile(ch)
        End Sub

  2. #2
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    "Nécessaire" ?! non ce n'est pas nécessaire ; on peut le faire mais on est pas obligé. Quant au pourquoi avoir plusieurs constructeurs, pour avoir plusieurs moyen de construire son objet.

    Sinon plutôt que d'ouvrir tout un tas de sujet de ce type il serait peut-être judicieux de lire un tutoriel par exemple celui présent ici
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

  3. #3
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    En plus celui qui a pondu ce code devrait apprendre à nommer correctement ses paramètres car là ça veux pas dire grand chose ! Sans compter l'affectation plus que douteuse à des variables membres qui n'existent même pas !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Novembre 2014
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Novembre 2014
    Messages : 367
    Points : 9
    Points
    9
    Par défaut
    Mais pourquoi est-ce que je ne peux pas affecter à une variable que je crée dans le formulaire une instance de la classe, comme ça par exemple :

    p = New Personne()

    au lieu de créer des constructeurs dans la classe elle-même.

    Quelle utilité de créer des constructeurs dans la classe plutôt que d'affecter à une variable des instances de la classe dans le code principal du formulaire ?

  5. #5
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    En réalité tu devrais étudier la POO avant tout... Lorsque tu fait
    Tu utilise un constructeur par défaut donc avec aucun paramètre. Il me semble qu'en VB si tu définis des constructeurs avec paramètres, tu cache d'office le constructeur par défaut, c'est le cas dans certains langages il me semble. Le fait d'avoir plusieurs constructeurs te permet d'instancier une classe suivant différents critères donc par rapport aux nombre et type d'arguments.

    Tu pourrais avoir une classe Voiture avec des constructeurs qui soit veulent juste la marque, le nombre de portes et la puissance, d'autres avec la couleur en plus, etc.. Si la classe est définie de cette manière et bien elle s'utilise comme telle alors faut pas chercher plus loin, s'il y a des paramètres dans les constructeurs, tu utilises celui que tu semble le plus approprié selon les paramètres, donc les données à ta disposition pour créer les instance de ta classe !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  6. #6
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par wallace27 Voir le message
    Mais pourquoi est-ce que je ne peux pas affecter à une variable que je crée dans le formulaire une instance de la classe, comme ça par exemple :

    p = New Personne()

    au lieu de créer des constructeurs dans la classe elle-même.
    si tu n as pas de constructeur dans la classe personne alors tu ne pourras pas créer d objet(New personne) !
    Quelle question......o_O

    Quelle utilité de créer des constructeurs dans la classe plutôt que d'affecter à une variable des instances de la classe dans le code principal du formulaire ?
    Si tu ne crees pas de constructeur alors tu ne crées pas d'objet donc pas d'instance de classe ........donc autant utiliser une classe avec des methodes shared
    ....

    brefffff ....un peu de lecture ne te fera pas de mal.....si tu veux obtenir des reponses a tes questions...

    ++

  7. #7
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Citation Envoyé par wallace1 Voir le message
    si tu n as pas de constructeur dans la classe personne alors tu ne pourras pas créer d objet(New personne) !
    On est d'accord sur le fond mais je vais chipoter sur la forme
    Techniquement parlant ce cas ne figure ne peut pas se présenter (pas pour cette raison en tout cas); il y aura toujours au moins un constructeur.
    Soit aucun n'a été mis explicitement et là on a toujours le constructeur par défaut, soit on en a au moins écrit un (avec ou sans arguments) et là on peut l'utiliser (sous réserve qu'il soit visible par le consommateur de la classe, c'est justement le seul cas où on peut pas utiliser un constructeur)
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Novembre 2014
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Novembre 2014
    Messages : 367
    Points : 9
    Points
    9
    Par défaut ListBox
    Est-ce que je peux vous demander votre aide ? Voici ce qu'affiche ma Listbox :

    Nom : listbox.JPG
Affichages : 122
Taille : 12,0 Ko

    au lieu d'afficher les noms et prénoms des personnes....

    Voici mon code en ce qui concerne la classe personne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Class Personne
        Private nom As String
        Private prenom As String
        Private age As Date
        Public Sub New(ByVal n As String, ByVal p As String, ByVal d As Date)
            nom = n
            prenom = p
            age = d
        End Sub
     
    End Class
    voici le code général :
    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 Form1
     
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            initTrombi()
        End Sub
     
        Private Sub initTrombi()
            Dim p As Personne
            p = New Personne("Durand", "Pierre", New Date(1965, 10, 2))
            ListBTrombi.Items.Add(p)
     
            p = New Personne("Dupont", "Alexandre", New Date(1977, 12, 1))
            ListBTrombi.Items.Add(p)
     
            p = New Personne("Gras", "Andre", New Date(1960, 2, 1))
            ListBTrombi.Items.Add(p)
        End Sub
    End Class

  9. #9
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Quand on se sert d'un contrôle ça peut être utile de consulter sa documentation afin de voir quelles sont ses méthodes/propriétés/évènements afin de savoir ce qu'on peut en faire (dans le grandes lignes au moins).
    En l'occurrence ici je suggère de regarder ListBox.DisplayMember

    Sur un autre plan, il aurait peut-être mieux valu ouvrir un nouveau sujet pour ça, parce qu'il y a déjà moins de rapport entre le "problème" et le titre
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

  10. #10
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par Sehnsucht Voir le message
    On est d'accord sur le fond mais je vais chipoter sur la forme
    Tu chipottes ...oui.... et je sais qu'il existe le constructeur par défaut Sehn....comme beaucoup n'utilisent pas dans le formulaire principal de leur application en tapotant : Sub New et le générateur de code fait le reste ....ou encore comme on peut le voir dans un décompileur DotNet :



    @wallace27 :

    Tu créés des propriétés publiques (name, prenom, age) et tu ajoutes p.name à ta combobox !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Public Class Personne
        Property nom As String
        Property prenom As String
        Property age As Date
        Public Sub New(ByVal n As String, ByVal p As String, ByVal d As Date)
            _nom = n
            _prenom = p
            _age = d
        End Sub
     
    End Class

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim p As New Personne("Durand", "Pierre", New Date(1965, 10, 2))
            ListBTrombi.Items.Add("NOM=" & p.name & "PRENOM=" & p.prenom)
    De la lecture ..... Arrêtes de poser tes questions ou alors ouvres un autre topic....

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Novembre 2014
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Novembre 2014
    Messages : 367
    Points : 9
    Points
    9
    Par défaut
    Merci je viens de comprends. Il y manifestement aussi une autre méthode, ça consiste à insérer ceci dans la classe personne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Overrides Function ToString() As String
            Return nom & " " & prenom
        End Function
    Toutefois, je ne comprends pas bien comment la fonction ci-dessus est à même de faire apparaître le nom et prénom dans la listbox..

  12. #12
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par wallace27 Voir le message
    Toutefois, je ne comprends pas bien comment la fonction ci-dessus est à même de faire apparaître le nom et prénom dans la listbox..
    Heu... à ton avis, ta fonction retourne quoi ? Va vraiment falloir apprendre le langage avant même vouloir te lancer dans la programmation, tu en as réellement besoin car programmer ça ne se fait pas au hasard, ce sont des compétences qu'il faut apprendre !

    Ta fonction ne fait rien afficher dans ton ListBox, tu ajoutes dans ton ListBox un nouvel élément dont sa valeur est la valeur retournée par ta fonction, c'est tout.
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    @wallace1
    ajouter p.nom dans le listbox est beaucoup moins utile que d'ajouter p quand même


    @wallace27 et @Franck.H
    les controles windows forms dans le genre (cmb, lst ...) quand on leur donne un objet, ils appellent .tostring dessus, donc c'est une méthode de contournement à displaymember


    @wallace27
    ca fait 3x qu'on te dit de lire un cours avant de venir poser des questions aussi simples
    si tu ne le fais pas on finira par ne plus ouvrir tes topics ...
    et puis en lisant une journée de cours, tu vas gagner plusieurs journée en temps de développement
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  14. #14
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    @wallace1
    ajouter p.nom dans le listbox est beaucoup moins utile que d'ajouter p quand même
    Tu prêches un convaincu .... c'était juste pour aborder la notion des propriétés afin d'illustrer mon exemple plus haut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Public Class Personne
        Property nom As String
        Property prenom As String
        Property age As Date
        Public Sub New(ByVal n As String, ByVal p As String, ByVal d As Date)
            _nom = n
            _prenom = p
            _age = d
        End Sub
     
    End Class

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

Discussions similaires

  1. Création d'une classe ASP (connection & recordset)
    Par polothentik dans le forum ASP
    Réponses: 1
    Dernier message: 12/03/2008, 00h46
  2. [POO] création d'une classe de connexion
    Par artotal dans le forum Langage
    Réponses: 1
    Dernier message: 14/02/2008, 12h01
  3. Réponses: 3
    Dernier message: 06/05/2007, 19h46
  4. [C++] Création d'une classe dans un fichier
    Par Pfeffer dans le forum C++Builder
    Réponses: 1
    Dernier message: 02/05/2007, 15h49
  5. Création d'une class contenant un TEdit (Débutant)
    Par Dereck07 dans le forum Delphi
    Réponses: 5
    Dernier message: 01/05/2007, 17h02

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