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 :

Comment créer un type de donnée ? [Débutant]


Sujet :

VB.NET

  1. #1
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 139
    Points : 90
    Points
    90
    Par défaut Comment créer un type de donnée ?
    Bonjour tout le monde,

    Je voudrais savoir, comment on peut créer un type de donnée ? Je n'ai pas trouver dans les cours VB.net.

    Par exemple, pour stocker les infos d'une personne. Je sais que en DELPHI, c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    type
     TPersonne = record
        NomPrenom: Ansistring;
        Sex : Byte;
        Telephone: Ansistring;
    end
    Comment on peut faire ça en VB ?
    Si vous savez les liens des sites qui explique ? Merci bien de votre temps

  2. #2
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Le topic est marqué comme résolu, mais je répond quand même

    Tu as la possibilité de créer une structure (struct) qui est le synonyme de "record".

    Tu peux aussi créer une classe.

    Si dans la plupart des autres langages (notamment le C++) la différence entre struct (simple succession de variables regroupée derrière un même pointeur) et une classe (un objet, avec tous les mécanismes associés), la différence entre les deux est bien moins évidente avec .NET puisqu'une structure peut avoir :
    - un constructeur
    - mes méthodes
    - champs privés
    - des accesseurs sur ces champs

    Bref, la différence avec une classe est très minime (à vrai dire, je ne me souviens plus exactement quelles sont les différences).

    Cependant, sémantiquement, il vaut mieux conserver les struct pour stocker des variables liées entre elles, sans y apporter de mécanismes complexes.

    Tout au plus un constructeur et des méthodes de mise en forme.
    (Genre pour une personne, on peut avoir un accesseur "Age" qui retourne un int à partir de la différence entre Datetime.Now et le champ DateNaissance, ou alors un autre accesseur "FullName" qui retourne la concaténation des champs Firstname et Lastname, etc.)
    On ne jouit bien que de ce qu’on partage.

  3. #3
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    Salut

    Bref, la différence avec une classe est très minime (à vrai dire, je ne me souviens plus exactement quelles sont les différences).
    un noeud

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Class dataclient
               Public datanode as string
               public nextnode As dataclient
        End Class

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

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par shayw Voir le message

    un noeud

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Class dataclient
               Public datanode as string
               public nextnode As dataclient
        End Class
    Artifice totalement inutile car géré dans le framework avec les LinkedList.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  5. #5
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    Il y a pas une magouille entre les classes et les structures qui font que les classes sont toujours passé en référence alors que les structures non ?

    J'ai même trouvé un "vieux" topic sur le sujet:

    http://www.developpez.net/forums/d67...ucture-classe/

    A noter dans ton exemple, une structure semblerait la solution la plus appropriée.

    Néanmoins je pense qu'il faut un niveau technique assez elevé pour être en mesure de déterminer (et surtout comprendre pourquoi) quand il faut utiliser une structure au lieu d'une classe.

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

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    Bref, la différence avec une classe est très minime (à vrai dire, je ne me souviens plus exactement quelles sont les différences).
    Ces différences sont quand même essentielles :

    - une struct est un type valeur, une class un type référence.
    - une struct n'est pas héritable et ne peut hériter (sauf, obligatoirement, de Object).

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  7. #7
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Pour moi, le choix entre structure et classe est surtout déterminé par l'aspect fonctionnel.

    Une structure est faite pour représenter un ensemble de variables liées entre elles, dénuées de traitements métiers.

    Une classe contient avant tout des traitements métiers, et des données sur lesquelles ils se basent.
    On ne jouit bien que de ce qu’on partage.

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

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    Pour moi, le choix entre structure et classe est surtout déterminé par l'aspect fonctionnel.
    Alors que la différence est en grande partie technique, j'ai un peu de mal à comprendre cette affirmation.

    Une structure est faite pour représenter un ensemble de variables liées entre elles, dénuées de traitements métiers.
    Strictement rien n'empêche de mettre du code métier dans une struct.

    Une classe contient avant tout des traitements métiers, et des données sur lesquelles ils se basent.
    Inversement, rien n'empêche d'avoir une classe ne contenant aucune méthode.

    Le choix se fait déjà par élimination : ai je besoin de l'héritage ? oui/non ? si oui, la struct est exclue.
    La contrainte sur sur type valeur vs type référence peut être aussi pertinente notamment quand on gère des listes .

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  9. #9
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Ces différences sont quand même essentielles :
    - une struct est un type valeur, une class un type référence.
    Oui, mais là où c'est moins clair, c'est quand la structure contient des variables de type référence. Du coup on passe en valeur des références, et on retrouve à peu de chose près le comportement d'une classe.
    On ne jouit bien que de ce qu’on partage.

  10. #10
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Le choix se fait déjà par élimination : ai je besoin de l'héritage ? oui/non ? si oui, la struct est exclue.
    Ouais, enfin de l'héritage sur une classe qui ne contient pas de méthode, c'est un peu limité quand même...

    Ensuite, d'après la MSDN, il est clairement stipulé qu'il faut mieux éviter de mettre du code métier dans une struct. C'était en tout cas le cas de la doc de .NET 1.1 Après, j'avoue que je me suis pas amusé à relire la doc depuis.
    On ne jouit bien que de ce qu’on partage.

  11. #11
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 179
    Points : 4 493
    Points
    4 493
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    Oui, mais là où c'est moins clair, c'est quand la structure contient des variables de type référence. Du coup on passe en valeur des références, et on retrouve à peu de chose près le comportement d'une classe.
    Euh non du tout

    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
     
    public partial class WinTest: Window
        {
            public WinTest()
            {
                TestStruc stu=new TestStruc();
                stu.Val = 1;
                stu.testClass1 = new TestClass();
                stu.testClass1.intValue = 2;
                stu.testClass2 = new TestClass();
                stu.testClass2.intValue = 2;
                Test(stu);
                InitializeComponent();            
            }
     
            public void Test(TestStruc stu)
            {
                stu.Val=9;
                stu.testClass1.intValue = 8;
                stu.testClass2 = new TestClass();
                stu.testClass2.intValue = 7;
            }
     
        }
     
        public struct TestStruc
        {
            public int Val;
            public TestClass testClass1;
            public TestClass testClass2;
        }
     
        public class TestClass
        {
            public int intValue {get;set;}
        }
    Remplace public struct TestStruc public class TestStruc
    et tu aura pas du tout le même comportement
    dans un cas tes valeurs seront perdue quand tu sortiras de la fonction dans l'autre pas
    Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes

  12. #12
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 139
    Points : 90
    Points
    90
    Par défaut
    Citation Envoyé par sinople Voir le message
    Il y a pas une magouille entre les classes et les structures qui font que les classes sont toujours passé en référence alors que les structures non ?

    J'ai même trouvé un "vieux" topic sur le sujet:

    http://www.developpez.net/forums/d67...ucture-classe/

    A noter dans ton exemple, une structure semblerait la solution la plus appropriée.

    Néanmoins je pense qu'il faut un niveau technique assez elevé pour être en mesure de déterminer (et surtout comprendre pourquoi) quand il faut utiliser une structure au lieu d'une classe.
    Merci , en fin j'ai utilisé une structure tout simplement. Au début je voudrais créer une classe pour gérer aussi la communication de CAN. Mais le problème est que ça me semble compliqué et je ne suis pas encore à ce niveau. Du coup, j'ai créé cette structure dans un autre module que celle principale, dans le but de simplifier les codes. Merci à tous ceux qui ont participé dans cette discussion. Vous m'avez bcp dépanné et bcp appris des choses !! Merci

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

Discussions similaires

  1. Comment créer une base de donnée dans un fichier .txt
    Par vantoff dans le forum C++Builder
    Réponses: 9
    Dernier message: 19/07/2006, 19h44
  2. Réponses: 9
    Dernier message: 03/03/2006, 10h02
  3. Comment créer une structure de donnée dynamiquement ?
    Par Beaunico dans le forum Langage
    Réponses: 9
    Dernier message: 24/01/2006, 09h34
  4. Créer son type de donnée
    Par progfou dans le forum Général Python
    Réponses: 5
    Dernier message: 14/12/2005, 09h31
  5. Comment créer une base de donnée Access ?
    Par Soulama dans le forum Bases de données
    Réponses: 1
    Dernier message: 24/10/2005, 14h56

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