begin process at 2010 02 09 17:13:11
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Divers

 > 

Débutants

 > 

classe correcte ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

classe correcte ?

dimanche 2 mars 2008 à 16:31:23 | classe correcte ?

zebiker

bonjour à tous
je ne comprend pas pourquoi j'ai une erreur, ca devrait etre simple :

Voici la classe que j'ai définie :


'definition radio class
Public Class uneRadio

    Private frequency As Double
    Private modulation As String
    Private description As String

    'constructor of creating a new object of type 'radio'
    Sub New(ByVal Lafreq As Double, ByVal Lemode As String, ByVal ladesc As String)
        frequency = Lafreq
        modulation = Lemode
        description = ladesc
    End Sub

    'constructors
    Public Function create(ByVal Lafreq As Double, ByVal Lemode As String, ByVal ladesc As String)
        frequency = Lafreq
        modulation = Lemode
        description = ladesc
    End Function

    'accessors
    Public Function laFrequency()
        Return frequency
    End Function

    Public Function laModulation()
        Return modulation
    End Function

    Public Function laDescription()
        Return description
    End Function
    'exemple de creation de radio :
    'Dim maradio As New uneRadio(89.4, librairie.leMode.FM, "salut toi")

End Class

Est ce que vous voyez une erreur ????  Moi non, VB non plus...

ensuite dans ma form je fais ceci :

'cree mon tablea de type unRadio
Dim lesRadioFav(10) As uneRadio
dim index as integer
For index = 0 To 10
    ' ET LA ERREUR :
    'Additional information: Object reference not set to an instance of an object.
    'a cause de la lign suivante :

    lesRadioFav(index).create(56.5, "AM", "description")
Next

Voila je comprend pas bien pourquoi cette erreur : les types sont bien respectés et tout ...

merci d'avance



dimanche 2 mars 2008 à 16:43:08 | Re : classe correcte ?

keke4483

Réponse acceptée !
Ca fait bien longtemps que je n'ai pas de VB mais je dirais que le problème vient du fait que tu n'instancie pas tes classes avant de les utiliser.

'cree mon tablea de type unRadio
Dim lesRadioFav(10) As uneRadio
dim index as integer
For index = 0 To 10
    lesRadioFav(index) = new uneRadio()
    lesRadioFav(index).create(56.5, "AM", "description")
Next

Bon courage
-=KeKe4483=-
dimanche 2 mars 2008 à 16:53:16 | Re : classe correcte ?

zebiker

S U P E R !!
merci beaucoup
j'étais sur qu'il en fallait peu mais bon, il faut bien commencer un jour !

Bonne continuation et encore merciiiiiiiiiiiiiiii !!!
mardi 4 mars 2008 à 05:18:10 | Re : classe correcte ?

Kevin.Ory

Réponse acceptée !
Salut zebiker,

Bon début, mais apparement tu as "hérité" de qq techniques venant d'un autre langage

1° Ta function 'create'
A priori elle ne sers pas à grand chose dans ton cas. Pour instancier une classe uneRadio tu vas utiliser son constructeur, dans lequel tu va passer les arguments adéquats. La fonction create peut tout de même être utile lorsque tu voudra changer les données de ta radio (frequ, ...) déjà instancié dans une autre partie du code, mais tu pourra tout aussi bien utiliser ses propriétés pour le faire (voir la suite).
De plus, tu aura un warning, car une fonction doit retourner une valeur. (il faut faire une Sub si tu ne veux pas qu'elle retourne de valeur)

2° Tes 'accessors'
Pour retourner une valeur, il vaut mieux utiliser des propriétés et non des fonctions:
Public Property laFrequency() as Double  
    Get
        Return frequency
    End Get
    Set(Value as Double)
       frequency = Value
    End Set
End Property
ou comme ceci si tu la veux en lecture seule:
Public ReadOnly Property laFrequency() as Double  
    Get
        Return _frequency
    End Get
End Property
Enfin, il faut déclarer le type de tes fonctions:
Public Function laFrequency() as Double
Car sinon elle retourne un Object (type par défaut)

3° Fonction Shared
Il est possible que ton erreur venait de là. Tu peux utiliser une fonction quelconque (create par exemple) qui te créé une instance de ta classe et te la retourne. Dans ce cas, on la déclare Shared.
Shared Function create(ByVal Lafreq As Double, ByVal Lemode As String, ByVal ladesc As String) as uneRadio
    Return New uneRadio(Lafreq, Lemode, ladesc)
End Function
Et on l'utilise de cette façon (sans utiliser le constructeur):
lesRadioFav(index) = uneRadio.create(56.5, "AM", "description")

Ceci n'est pas utile dans la plupart des cas, mais il faut savoir que ça existe.

4° Autres remarques
Lorsque tu déclare un constructeur qui possède des arguments, le constructeur par défaut (constructeur sans argument) n'est plus créé et n'est donc plus utilisable. Si tu veux avoir un constructeur sans argument et un autre avec des arguments, il faut explicitement les déclarer les deux:
Public Sub New(Arg1 as Integer, Arg2 as Integer)
    ...
End Sub
Public Sub New()
    ...
End Sub
Dans ton cas tu ne peux donc pas instancier une classe uneRadio de cette façon:
Dim laRadio =new uneRadio()


Voilà, espérant que ca t'aide pour la suite
mardi 4 mars 2008 à 13:19:42 | Re : classe correcte ?

zebiker

okies merci beaucoup aussi à toi kevin, j'avais quelques bases de Java (mais j'avais pas écouté en cours, ce que je regrette maintenant) Tout marche nikel, j'ai modifié comme tu me l'as expliqué. Ce qui me manquait c'était des explication claires, car des exemples simple j'en ai pas trouvé beaucoup sur le net ... Merci d'avoir pris le temps d'écrire tout ca ! bonne continuation Florian


Cette discussion est classée dans : function, end, string, description, byval


Répondre à ce message

Sujets en rapport avec ce message

.NET problème avec GetClassName [ par Hades53 ] Bonjour, j'ai un petit problème en VB .NET, la fonction Win32 GetClassName bogue, apparement, d'autre fonctions comme GetWindowText (utilisé dans le m Petite question sur l'ajout de propriété [ par veler ] Salut,J'ai un petit soucie, je sais créer une propriété pour un User Control par exemple, tout simplement en insérant le code suivant dans la class du Selection d'un repertoir [ par calitoli ] Bonjour à tous,J'ai utilisé le code ci-dessous pour selectionner un repertoir. Et comme erreur obtenu lorsque je lance mon application: "Can't find pr Aide pour une basse de données [ par rolodo ] bonjour a tout(e)s je m'explique dans vb 2008 j'ai commencé ceci : Atelier 4 - Manipuler des données de fichierje comprend pas tout mais j'essaie. ded probleme requete linq xmlsource datgride [ par G4uthier ] Bonjour, Je fais du vb dans un projet silverlight. Je suit un tutoriel du coach silverlight (http://msdn.microsoft.com/fr-fr/silv.../cc512801.aspx) Affichage de données de prod VB 2008 Express [ par puipuich ] Bonjour à tous !!! Je post pour la première fois ici car (là) je suis bloqué avec un problème à la con. Pour faire court (je donnerais des détails s Connexion à une base FIREBIRD??? [ par cedricloffer ] Bonjour à tous, je suis en train de modifier un projet Visual Basic (.net 2008) de manière à désormais travailler avec une base de données FIREBIRD. comment envoyer les données (vb2008) [ par toufou2006 ] Donc voila tout mon code j ai donc reussi a connecter le clien et el serveur a traiter les infos recu du plug in 3d et les preparer pour l'envoie l VB.Net : Comment obtenir le nb de pixels par pouce d'un écran ? [ par Fabasia ] Y a t-il une autre solution que ... _ Public Shared Function CreateIC(ByVal lpDriverName As String, ByVal lpDeviceName As String, ByVal lpOu problème avec ftpgetfile [ par Germouse ] J'ai un petit souci: Ftpgetfile marche quand je suis connecté depuis mon bureau (succès = True) mais pas quand je me connecte depuis un autre (succès=


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales