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 :

question du mécanisme pour la structure de program grand


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 question du mécanisme pour la structure de program grand
    Bonjour tout le monde,

    Je suis dans un projet que je dois créer un logiciel de contrôle.

    J'ai commencé par l'exemple fourni, et je commence à ajouter des codes, ce

    qui fait que le programme devient long et lourd.

    Ce que je voudrais, c'est que mettre certain fonctions dans un autre fichier

    (Classe ? je ne suis pas sure). Et ensuite, d’inclure le classe dans le fichier

    principal, comme ca je peux faire l'appel aux fonctions dans ce classe.

    Qui pourrait me donner des conseils, ou bien des liens à regarder pour

    cela?

    Merci bien

  2. #2
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Y a déjà pas mal de choses ici :
    http://plasserre.developpez.com/cours/vb-net/

  3. #3
    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 griftou Voir le message
    Y a déjà pas mal de choses ici :
    http://plasserre.developpez.com/cours/vb-net/
    Merci griftou.

  4. #4
    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 griftou Voir le message
    Y a déjà pas mal de choses ici :
    http://plasserre.developpez.com/cours/vb-net/
    Griftou,

    Je n'ai pas compris ... ce sont des cours VB.net.

    En fait, je ne sais pas sur quel chapitre que je peux trouver ce sujet.

    Je pense à faire un fichier à part de celle principal, comme "unit" en Delphi.

    Où je peux m'adresser ?

    Merci d'avance

  5. #5
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    En vb.net, les units de delphi sont les classes.

    Après si tu veux vraiment te prendre la tête quant à l'architecture de ton programme, tu peux lire cette discussion et les articles vers lequels les intervenants pointent :
    http://www.developpez.net/forums/d11...m-bpl-dal-bel/

    Mais je pense que tu n'en es pas encore là.

    Vu les questions que tu poses, commence par lire le cours que je t'ai donné (p-e pas complètement mais presque). Tu y verras déjà plus clair.

  6. #6
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 170
    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 170
    Points : 7 422
    Points
    7 422
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    J'ai l'impression que tu viens du monde "procédural", comme l'est le C, ou le VB, pas vrai ?

    Donc le plus simple, c'est de te cogner la tête très fort contre un mur, et de tout oublier ce que tu sais déjà : avec .NET, de voilà dans la programmation orientée objet.

    Et là, ça change tout, ou presque.

    Pas tant que ça au final, je te rassure, tu peux mettre un casque avant de te taper la tête

    En tout cas, une règle d'or à appliquer au monde de la programmation en général, quel que soit le programme :
    - Jamais de "grand" programme. Chaque "routine" ne doit pas excéder quelques dizaines de lignes (déjà 20 lignes, c'est presque trop long pour la plupart des traitements).
    - Il faut donc éclater le code le plus possible en traitements unitaires, réutilisables.

    Par exemple, si tu as un programme qui demande un nombre N, lit la Nième ligne dans un fichier, puis affiche cette Nième ligne à l'écran, en faisant de la mise en forme, jamais de la vie on fait tout dans une même routine.
    On fait une première routine :
    - Qui s'occupe de demander le numéro de la ligne, avec toutes les vérifications possible : on a bien donné un nombre positif
    On fait ensuite une seconde routine :
    - Qui ouvre le fichier
    - Récupère la ligne à l'indice N retourné par la routine précédente
    - Qui ferme le fichier
    On fait enfin une troisième routine :
    - Qui affiche la ligne N retournée par la routine précédente

    Ensuite, vu qu'on parle objet, on va travailler avec des objets :
    - Pour les deux premières routines, y'a pas grand chose d'intéressant à gérer le nombre (qui est un type valeur) ou le fichier (qui est déjà un objet) sous forme d'un objet.
    - En revanche, la ligne lue dans le fichier, il y a de grandes chances pour que, surtout si on veut la mettre en forme après, qu'il s'agisse d'un "objet" (une personne, un article, etc.) => A ce moment, on va créer un objet qui va s'occuper lui-même de faire la mise en forme.


    Etudie le code ci-dessous pour comprendre la différence entre les 3 approches.
    Code c# : 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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
     
     
    using System;
    using System.IO;
     
    namespace TestModele
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Grand programme");
                GrandProgramme();
                Console.WriteLine();
     
                Console.WriteLine("Petite Procédures");
                PetitesProcedures();
                Console.WriteLine();
     
                Console.WriteLine("Programmation Objet");
                ProgrammationObjet();
                Console.WriteLine();
     
                Console.ReadKey(true);
            }
     
            static void GrandProgramme()
            {
                Console.WriteLine("Ligne ?");
                int indice = -1;
                while (!int.TryParse(Console.ReadLine(), out indice) && indice > 0)
                {
                    Console.WriteLine("Ligne ? (je te demande un nombre, banane !)");
                }
     
                string ligne = string.Empty;
                using (TextReader tr = new StreamReader("c:\\in\\personnes.txt"))
                {
                    int i = 0;
                    while (++i < indice)
                    {
                        tr.ReadLine();
                    }
                    ligne = tr.ReadLine();
                    tr.Close();
                }
     
                string[] infos = ligne.Split(';');
                Console.WriteLine("Nom :\t{0}\nPrénom : {1}\nAge :\t{2} ans", infos[0], infos[1], (int)(DateTime.Now.Subtract(DateTime.Parse(infos[2])).TotalDays / 365.25));
            }
     
            static void PetitesProcedures()
            {
                int indice = GetIndice();
                string line = GetLine(indice);
                DisplayLine(line);
            }
     
            static int GetIndice()
            {
                Console.WriteLine("Ligne ?");
                int indice = -1;
                while (!int.TryParse(Console.ReadLine(), out indice) && indice > 0)
                {
                    Console.WriteLine("Ligne ? (je te demande un nombre, banane !)");
                }
                return indice;
            }
     
            static string GetLine(int indice)
            {
                string line = string.Empty;
                using (TextReader tr = new StreamReader("c:\\in\\personnes.txt"))
                {
                    int i = 0;
                    while (++i < indice)
                    {
                        tr.ReadLine();
                    }
                    line = tr.ReadLine();
                    tr.Close();
                }
                return line;
            }
     
            static void DisplayLine(string line)
            {
                string[] infos = line.Split(';');
                Console.WriteLine("Nom :\t{0}\nPrénom : {1}\nAge :\t{2} ans", infos[0], infos[1], (int)(DateTime.Now.Subtract(DateTime.Parse(infos[2])).TotalDays / 365.25));
            }
     
            static void ProgrammationObjet()
            {
                int indice = GetIndice();
                string line = GetLine(indice);
                Personne p = new Personne(line);
                p.Display();
            }
     
            class Personne
            {
                public string Nom { get; set; }
                public string Prenom { get; set; }
                public DateTime DateNaissance { get; set; }
     
                public Personne(string s)
                {
                    string[] infos = s.Split(';');
                    Nom = infos[0];
                    Prenom = infos[1];
                    DateNaissance = DateTime.Parse(infos[2]);
                }
     
                public void Display()
                {
                    Console.WriteLine("Nom :\t{0}\nPrénom : {1}\nAge :\t{2} ans", Nom, Prenom, (int)(DateTime.Now.Subtract(DateNaissance).TotalDays / 365.25));
                }
            }
        }
    }

    Il faut utiliser la troisième approche.

    Chaque "class" peut être stockée dans un fichier séparé.
    Chaque fonction peut éventuellement être stockée dans un fichier séparé en utilisant le mot clé "partial" lors de la déclaration de la classe englobante.

    Ceci permet de faire du code simple, clair, concis, maintenable, et évolutif.

    Aussi, on remarque immédiatement que si on utilise des objets, alors on peut faire différents traitements sur une même ligne du fichier sans devoir la recharger à chaque fois, ce qui est très difficile à faire avec la première approche, et assez complexe avec la seconde.

  7. #7
    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
    Merci Griftou et StringBuilder de vos conseils !!!! c'est importante pour moi comme une débutante .

Discussions similaires

  1. Questions sur Openldap pour faire PDC
    Par valal dans le forum Réseau
    Réponses: 4
    Dernier message: 20/04/2006, 10h12
  2. Questions d'informatique pour un concours
    Par jeje00 dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 04/04/2006, 08h38
  3. Réponses: 6
    Dernier message: 24/03/2006, 18h24
  4. Réponses: 1
    Dernier message: 09/02/2006, 11h03
  5. question xml / xslt pour tableau a 3 colonnes
    Par taybott dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 26/10/2005, 00h22

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