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 :

[vb][Débutant] Parcours d'une collection de classe filles


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Par défaut [vb][Débutant] Parcours d'une collection de classe filles
    Bonjour

    Je suis débutant en programmation, et pas très a l'aise avec la prog objet, je m'escuse d'avance si la question est simplissime, mes recherches n'ont pas été fructueuses.

    je fais une application qui gère les différents supports d'une mediathèque.(cd de musiques, livres et films)
    J'ai une classe mère Support qui a trois classe filles: Support_CD Support_Livre et Support_Film.

    J'aimerai avoir une collection de toutes les œuvres de la médiathèque sans distinction de support, afin de pouvoir parcourir cette collection pour obtenir une liste des supports présentant les attributs communs aux classes filles(exemple :titre) et des attributs des classes filles (exemple: Nombre de page)

    actuellement, j'ai cette boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim UnSupport As Support     //Support est la classe mère
     
            For Each UnSupport In mesSupports
     
               // blabla
            Next
    j'obtiens le message d'erreur:
    La référence d'objet n'est pas définie à une instance d'un objet.
    Je n'ai aucune idée d'où viens mon erreur.



    Mon problème est accompagné d'une petite question, comment puis je connaitre la classe de l'objet a partir de celui ci?
    (par exemple dans mon cas présent: comment savoir si l'élément E dans ma collection de Supports est un cd ou un livre?)

  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
    il faut un new pour créer un object
    une variable qui ne pointe par vers un objet ne peut pas etre utilisé
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Par défaut
    Merci tobba

    @Pol63 Ma classe support possède une méthode mustOverride, avec le new j'ai cette erreur:
    New cannot be used on class support because it contains a mustoverride member that has not been overridden

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Par défaut
    Bon, j'ai isolé le problème, mais n'arrive toujours pas a le résoudre, voila l'application archi-simplifié: (j'ai aussi enlevé les accesseurs)

    mes deux classes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public MustInherit Class Support
        Private leTitre As String 
        Public Sub New(ByVal UnTitre As String)
            leTitre = UnTitre
        End Sub
    End Class
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Class Support_CD
        Inherits Support
        Private leNbPistes As Integer 
        Public Sub New(ByVal unTitre As String, ByVal UnNbPistes As Integer)
            MyBase.New(unTitre)
            leNbPistes = UnNbPistes
        End Sub
    End Class
    un module avec la collection:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Module Module1
        Public mesSupports As List(Of Support)
    End Module
    Et un Form avec un bouton et une zone de texte:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Class Form1
        Private Sub Button1_Click
     
            Dim UnSupport As New Support_CD("Hello world",12)
            mesSupports.Add(UnSupport) 'ligne avec l'erreur
     
            textbox1.text= mesSupports.items(0).getTitre
        End Sub
    End Class
    l'erreur est :
    La référence d'objet n'est pas définie à une instance d'un objet

  5. #5
    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
    j'ai dit une connerie avec le new

    mal lu car au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim UnSupport As Support
    For Each UnSupport In mesSupports
    moi j'écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each UnSupport As Support In mesSupports

    fais nous voir la ligne qui passe en erreur
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mesSupports.Add(UnSupport)
    j'l'avais mis en commentaire

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Maroc

    Informations forums :
    Inscription : Mai 2008
    Messages : 50
    Par défaut
    pour savoir le type de l'objet tu peut utiliser cette instruction :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if TypeOf obj1 Is nom_de_la_classe then
    'instructions
    end if

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

Discussions similaires

  1. Declaration d'une collection de classe
    Par nark07 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 21/03/2009, 10h43
  2. Débutant comment trié une collection ?
    Par gold15 dans le forum PL/SQL
    Réponses: 1
    Dernier message: 11/02/2009, 14h21
  3. [Débutant] Parcours d'une line2D
    Par vaspered dans le forum Débuter
    Réponses: 3
    Dernier message: 07/10/2008, 01h23
  4. [Débutant]Parcours d'une string.
    Par Baban29 dans le forum Langage
    Réponses: 2
    Dernier message: 23/05/2008, 17h07
  5. [débutant] Syntaxe d'une constante de classe
    Par alone dans le forum C++
    Réponses: 5
    Dernier message: 14/02/2008, 22h05

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