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 :

Besoin de bien comprendre les classes


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2009
    Messages : 33
    Points : 16
    Points
    16
    Par défaut Besoin de bien comprendre les classes
    Bonjour a tous
    Je débute en vb.net et je me rends compte que les classes sont essentielles pour programmer une appli qui tienne la route
    Or si j'ai compris que l'objet est un moule et que pour l'utiliser il faut créer une nouvelle instance.
    Je ne parviens toujours pas a synthétiser l'utilité du constructeur, les paramètres, les classes partielles...
    J'ai besoin de créer des classes et de les comprendre pour assimiler toutes les infos qui gravitent autour
    Merci d'avance

  2. #2
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Bonsoir,
    Tu peux commencer par lire ceci et ça

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    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 177
    Points : 25 125
    Points
    25 125
    Par défaut
    le problème des tutos c'est qu'ils sont bien souvent loin des réalités, avec des exemples farfelus

    avec des infos de ce que tu veux développer on pourrait te donner un exemple concret

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2009
    Messages : 33
    Points : 16
    Points
    16
    Par défaut
    Salut Callo
    Merci pour tes liens
    Je suis parti les consulter de suite tellement j'ai hâte d'y arriver
    Des que j'ai fini je reviens vers toi pas de soucis?
    Merci

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2009
    Messages : 33
    Points : 16
    Points
    16
    Par défaut
    Slt Pol63
    Bien d'accord avec toi
    c'est souvent en créant sa propre appli qu'on intègre les principes de bases.
    je cherche a créer une interface entre une base de donnée Filemaker et windows
    Pour cela j'ai besoin de transmettre des paramètres reçus par Fmp pour, par exemple créer un ScheduldedTask, faire apparaitre une alerte pres de l'horloge,recuperer des infos dans une base de données...
    En fait de tous les langages de programmations vb.net c'est celui qui me fâche le moins
    Et plus si j'arrive a progresser

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    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 177
    Points : 25 125
    Points
    25 125
    Par défaut
    mouais ca me parle pas trop

    mais les classes ca fait partie de la programmation orientée objet
    avant on avait des tableaux, dans lesquelles on mettait les variables
    dim a(7) as object en gros
    on fait des redim pour ajouter une ligne, et on lisait les variables par if a(6) = tellevaleur then tellesub(a)
    avec la poo on fait une classe explicite avec des variables typées

    pour une tâche on ferait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class task
      public property nom as string
      public property dateevent as date
      public function DoitAvertir as boolean
         if dateevent > now then return true
         return false
      end function
      ...
    end class
    ca rend le code beaucoup plus lisible, moins buggable et donc plus maintenable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dim t as new task
    t.nom = "tache 1"
    t.dateevent = cdate("01/11/2013 10:00:00")
    pour le stockage il y a des collections, en gros des tableaux encapsulés dans du mieux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim l as new list(of task)
    l.add(t)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if t.DoitAvertir then gestionnaireDavertissement.active(l(0))
    en mettant des sub et des fonctions dans les classes ca permet de ranger le code là ou il doit être plutot que d'avoir des fonctions partout pour faire tout

    on peut donc en peu de code lisible faire ses traitements
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for each t in l
      if t.DoitAvertir then gestionnaireDavertissement.active(t)
    next
    après on peut mettre un peu de linq là dedans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim tachesAvertissements = (from t in l where t.DoitAvertir = true select t)
    tachesAvertissements.ForEach(new action(of tache)(sub(t as tache)(gestionnaireD'avertissement.active(t)))
    concernant tes questions spécifiques :
    le constructeur c'est le sub new, c'est lui qui est appelé pour créé l'instance, par défaut il ne fait rien et ne demande pas de paramètres
    néanmoins dans certains cas on peut le modifier

    en lui ajoutant des paramètres, ca permet de forcer la création de l'instance avec des valeurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public sub new (nom as string)
      if nom = "" then throw new argumentnullexception("nom")
      me.nom = nom
    end sub
    comme ca on est sur que nulle part dans l'appli quelqu'un créera une tache sans nom
    ce genre de chose peut paraitre inutile, néanmoins il permet de coder de manière plus sécurisée, après nulle part dans le code on aura la surprise de trouver un tâche sans nom
    sécuriser le code est aussi essentiel sur des gros projets et/ou du travail d'équipe
    après sur des petits projets, on code au plus vite et sans mettre en place des tas de techniques

    en le rendant private, personne ne peut l'appeler de l'extérieur, tu n'en auras surement pas besoin, mais ca permet alors de créer des factories, à savoir une méthode permettant de créer des instances, ou d'en retourner des existantes
    je peux détailler plus ce point, mais on doit trouver des explication sur le design pattern factory ou des singletons sur le net

    le constructeur surtout s'il est paramétré permet aussi de coder une initialisation de certaines choses

    les classes partielles sont rarement utiles aussi, le plus souvent on les trouve avec des générateurs de code, les plus connus étant le designer windows forms et entity framework
    ca permet de couper une classe en plusieurs morceaux
    quand on créé un form visual studio créé 2 fichiers, un fichier où tu mets ton code, et un fichier caché par défaut que visual studio remplie avec la description de l'interface (mais en code vb.net)
    ca permet de réunir ces 2 codes au sein de la même classe


    au final il y a des principes de base à bien assimiler en .net comme la POO, faire des classes utiliser des collections
    ca permet de bien débuter sans passer à côté des bases
    après il y a des tas de possibilités techniques qui sont pratique dans certains cas mais qui ne sont pas obligatoires pour faire un programme qui marche
    mais au moins l'outil est complet, on peut faire de grandes choses si nécessaire

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2009
    Messages : 33
    Points : 16
    Points
    16
    Par défaut
    Salut Pol63
    Si seulement je t'avais rencontré avant....
    J'avais commencé un projet Vb.net dont j'avais besoin a l’époque pour évoluer dans mon boulot et pour des raisons pratiques. Du coup je suis resté petit et de jeunes virtuoses d'excel ont pris le poste.
    Et j'ai du laisser tomber car chaque fois que j'avais besoin d'aide la réponse était:
    Va lire ce tuto entier ou donne moi 50€ pour l'envoi d'un mail de réponse...
    Du coup j'ai tout arreté et je suis passé sur filemaker qui reste une base de donnée interfaçée avec des scripts de code et surtout un forum de passionnés qui m'a permis de developper un agenda des bons de commandes....(je suis magasinier)
    Bref c'est avec dechirement que j'ai arreté vb.net et toutes ses possibilitées.
    Si ça te tente je veux bien reprendre mon projet....
    Bref pour ce qui est d'aujoud'hui pour qq'un qui sait pas trop tu as tapé dans le mille avec ton exemple.
    C'est ce genre de classe que je veux pouvoir construire!!!! et en même temps tu as cerné tous mes points noirs: Sub new,classe partielle, classe tout court, constructeur...

  8. #8
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2009
    Messages : 33
    Points : 16
    Points
    16
    Par défaut
    En gros une classe c'est un concentré de fonctions auxquelles on envoi des paramètres pour exécuter une fonction définie.

    J'ai acheté de nombreux livres a ce sujet et j'ai passé bien de temps pour bien peu de résultat au final

    Mais dans l'un de ces ouvrages on détaillait une classe "person" livre traduit de l'anglais pas toujours clair par ailleurs

    Je me suis étonné que dans cette classe "person" on puisse rajouté supprimer ou modifier des données comme si cette classe devenait une base de donnée qui contenait toutes les personnes créé.

    Certes je comprends que par le biais de paramètres on renseigne un nom un prénom, un age, une fonction... mais que cette classe puisse stocké des données?????

    Je travaille sans discontinuité jusqu’à ce soir mais je veux bien reprendre point par point ton exemple avec tes compléments d'explications pour tenter de le réécrire en comprenant ce que je fais

  9. #9
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    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 177
    Points : 25 125
    Points
    25 125
    Par défaut
    une classe peut bien stocker des données
    si une classe contient des propriétés comme les colonnes d'une table, une instance équivaut à une ligne
    et la collection qui les contient équivaut à la table

    mais les classes on en fait ce qu'on en veut, si on veut faire du stockage de données on peut, si on veut faire des traitements on peut aussi

    le point qu'il te manque pour saisir ca c'est surement celui là :
    dans certaines applis, au démarrage on charge une collection avec tout ce qu'il y a dans une table, et on peut faire en sorte que la collection reste en mémoire pendant toute la durée de l'exécution, on peut aussi rendre accessible une variable de partout dans le code
    ca permet donc d'avoir un cache plutot que d'aller faire des requetes tout le temps (parfois sur un réseau), et donc dans ce cas on ne met pas de méthodes et fonctions sur cette classe
    ce n'est pas utile non plus dans tous les cas, par exemple pour les codes postaux avec les villes qui vont avec, comme ca on peut créer un usercontrol CP+ville, et sur la saisie du cp charger les villes dans le combo (36k communes avec un nom de 50 caractères = environ 2Mo en ram)
    pour les tables qui bougent un peu il est aussi possible d'être averti d'un changement (par le sgbdr ou autre) pour modifier en conséquence son cache


    bref la classe est juste un moyen technique de faire différentes choses


    après le principe c'est bien de lire des tutos ; celui de p lasserre est bien d'ailleurs, j'ai commencé par celui là quand je suis passé sur .net
    après c'est vrai que la classe chien avec la méthode aboyer et la propriété couleur pour faire un chien vert on ne comprend pas forcément où le rédacteur veut en venir au début
    mais le truc c'est qu'avant de lire les tutos sur vb.net il faut avoir des bases en programmation générale et algorithmie

  10. #10
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2009
    Messages : 33
    Points : 16
    Points
    16
    Par défaut
    Merci pour tes explications je comprends ou en tous cas je cerne bien ton porpos
    Mais je crois que pour assimiler tout ça je puisse pratiquer par des exemples concrets
    Tu es partant pour m'aider
    On pourrait creer une classe personne comme dans l'exemple que j'ai cité
    Avec recherche des enregistrements
    Etc...
    Le tout étant que je mettes les mains dans le camboui et que je puisse être guidé
    Et recommencer sur d'autres exemple pour que je tilt enfin

  11. #11
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2009
    Messages : 33
    Points : 16
    Points
    16
    Par défaut
    Merci pour tes explications Pol63
    Si tu veux bien on reprends mon projet d'il y a sept ans
    J'ai été frustré vraiment de n'y être pas parvenu.
    Veux tu m'aider on reprendrai tous les principes de la Poo sous forme de projet ludique
    Aujourd'hui je n'en ai plus besoin mais c'est pour le principe
    Voir tout ce qui me manquait pour y parvenir...
    Je serai ravi que tu acceptes.
    Mais j'adore coder j'aurais voulu en faire mon métier

    Merci

  12. #12
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    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 177
    Points : 25 125
    Points
    25 125
    Par défaut
    j'ai un emploi du temps assez chargé, et je ne suis pas coach à domicile
    je participe sur ce forum pour aider ceux qui ont des questions et ceux qui par la suite trouveront des réponses on arrivant ici depuis google

    tu peux exposer tes problèmes et questions sur la modalisation de ton appli ici (ou dans un nouveau topic) si je peux t'aider je le ferais, et d'autres pourront participer aussi
    et pour ca il faudra donc des détails, et bien sur que tu y mettes du tiens

  13. #13
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2009
    Messages : 33
    Points : 16
    Points
    16
    Par défaut
    Je comprends bien que personne ne fera le travail a ma place et qui plus ai je veux apprendre
    Mais la Poo est assez difficile a appréhender et comme tu le dis c'est lorsqu'on acquiert les bases que l'on commence a devenir autonome et que le plaisir laisse place au désespoir.
    J'ai également des journées très remplies mais des que j'ai 5 minutes je cherche a progresser.
    Il y a un an je ne connaissais rien a Fmp et grâce au Forum et a l'aide de certains passionnés j'ai acquis des bases qui me permettent aujourd'hui de ne les déranger que ponctuellement

    Mon projet initial il y a 7 ans c’était une appli pour trouver les transporteurs les moins cher en fonction de 3 paramètres renseignés par l'utilisateur:

    • Le poids
    • Le departement
    • Le nombre de colis ou palette

    Avec une fonction d’interrogation dans le cas d'une consultation pour un prestataire non choisi et la mise en sommeil de prestataire dont on voulait suspendre l'usage.

    La base de donnée de mon logiciel devait être nourrie par les tableaux excel fournis par chaque prestataire
    On devait donc avoir des mise a jour
    • tarifaires
    • taxe gazole
    • Surtaxe zone urbaine (Paris,Lyon,Marseille...)

    L'application devait par ailleurs permettre la consultation du suivi des palettes ou colis via le site web des différents prestataires et fournir une alarme et une gestion de temps a l'utilisateur pour tout départ express ou retard de livraison.

    L'application devait donc gérer une liste de client avec tous les renseignements variés et divers que cela nécessite

    les départs de chaque client devait être enregistrés pour nourrir des stats
    Voila pour le gros du projet
    C'est pas du travail de groupe ça?

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/11/2008, 12h22
  2. J'ai besoin d'aides sur les classes
    Par zizo89 dans le forum Langage
    Réponses: 2
    Dernier message: 30/12/2007, 14h52
  3. Besoin de conseil sur les classes
    Par SuperWeight dans le forum MFC
    Réponses: 1
    Dernier message: 04/06/2007, 22h44
  4. Conseils pour bien écrire les classes ado.net
    Par azerty53 dans le forum VB.NET
    Réponses: 3
    Dernier message: 15/05/2007, 18h24
  5. [POO] Besoin de tutorat sur les classes
    Par misterniark dans le forum Langage
    Réponses: 11
    Dernier message: 20/04/2006, 14h48

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