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

Windows Forms Discussion :

[C#] programmation judicieuse ?


Sujet :

Windows Forms

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 30
    Par défaut [C#] programmation judicieuse ?
    bonjour !

    mon programme posséde ceci :
    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
     
    [Main.cs]
    //programmation qui appelle des méthodes de ma classe (voir ci-dessous)
     
    [Class1.cs]
    Class1
    {
    collectionX CX = new collectionX();
    //méthode qui manipule les données passées en paramètres à partir de Main.cs
    exemple : 
    - méthode qui me renvoit le count de ma collection... 
    - méthode qui ajoute un nouvel élément à ma collection en passant par les classe ci-dessous...etc
    }
     
    Class2
    {
    //constructeur + getters qui me renvoi les données contenu dans ma collection
    }
     
    Class collectionX : System.Collections.CollectionBase
    {
    //méthode permettant d'ajouter, supprimer un élément de ma collection
    }
    ma question est donc la suivante :

    est-ce judicieux de programmer de cette façon ?
    je veux dire par là que le fait de manipuler ma collection dans ma class1 (en recevant les paramètres de mon form principale) puis de basculer tout cela vers mes classe techniques... est-ce correct ?

    niveau compilation ça fonctionne... mais niveau "conception orientée objet" ça vaut quelque chose ? avant d'aller plus loin je préfére savoir
    merci !

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Par défaut
    Si j'ai bien compris, tu as une collection, une classe (class1) pour écrire dedans et une autre (class2) pour lire.

    Si class1 et class2 ne font que ça, elle sont inutiles.
    Il faut utiliser simplement ta classe collection pour accéder aux données.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 30
    Par défaut
    ma classe2 contient des données privée qui sont en fait stockés dans ma collection.


    et ma classe1 ne fait pas uniquement ça

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Par défaut
    C'est un peu difficile de donner un avis sans connaître ce que tu veux faire.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 30
    Par défaut
    en fait je voudrais reprendre une idée de logiciel posé sur le forum... un générateur de cv.

    je voudrais donc organiser tout ça correctement dans un premier temps avant de me lancer dans le code

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 160
    Par défaut
    Moi je vote non, pas du tout.

    Sauf cas exceptionnels, un membre (ta collection) ne doit etre manipulé que par sa propre classe. Tes Get(), Set() et consorts doivent tous etre dans Classe1.

    Le but est justement d'interdire l'acces a ta collection a toutes les autres classes et de pouvoir la manipuler que par les regles que tu auras toi meme definies dans tes methodes.

    Euh ... Je suis clair, là?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 30
    Par défaut
    salut hobotalker ! oui c'est très clair ce que tu as évoqué alors comment organiserais-tu ça ? une ébauche... pour moi pas partir dans le décor
    merci !

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 160
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    class Classe1
    {
    private MaCollectionX objCollection = new CollectionX();
    public void AjouterElement();
    public void SupprimerElement(int iIndex);
    public int NbElements
    {
        get { return objCollection.Count; }
    }
     
    // etc etc ...
     
    }
    Désolé, moi j'suis plutot C# ...

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Par défaut
    Je pense qu'il est préférable d'étendre les fonctionalités de CollectionX plutôt que de créer une autre classe pour l'encapsuler.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 30
    Par défaut
    ah il est préférable de tout mettre dans classe1...

    oui je suis plutot C# aussi

    donc je ne distingue rien.. je manipule tout au sein de la même classe...

    si c'est confirmé je commence ! lol

    a vos marques... prêt... confirmez ?

  11. #11
    Membre Expert
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Par défaut
    Salut

    Moi je raisonne autrement:

    Tant que j'ai deux possibilites de faire la meme chose de deux manieres differentes, mais apparement justes, je me pose des questions jusqu'a ce que je puisse me dire qu'un des moyens est meilleur que les autres.

    Comme je ne connais pas les tenants et aboutissants du programme, je te dis: je suis incapable de repondre
    Il faut donc que tu te pose les bonnes questions:

    - Quel est l'objectif (unique si possible) de chaque classe
    - Qui apelle quoi, qui a besoin de quoi
    - Faut il un intermediaire pour que cette classe ne depende pas directement de celle-ci
    - Qu'est ce qui pourrait etre modifie dans le futur (ou comment faire pour que tout ne se casse pas la figure plus tard si je modifie quelque chose, ou si je rajoute une alternative)
    ......

    Prends le temps de bien reflechir au role que jouent tes classes, meme si elles ont l'air inutiles maintenant, demande-toi pourquoi tu as voulu les mettre, decide de les garder, d'en rajouter, ou pas

    Bien sur avec la pratique, cette reflexion sera plus naturelle et plus rapide, tu vas acquerir des reflexes. Tu pourras etudier les "best practices" et les desing patterns pour a la fois enrichir ta reflexion , voire pour trouver des solutions toutes faites

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 30
    Par défaut
    salut piotrek !

    si je comprends bien, toi tu raisonnes plutot sur les "objectifs" d'une façon générale. Donc rien n'est mauvais, rien n'est "bon" tout dépend ce que l'on attend et désire !

    je suis entièrement d'accord avec toi sur ce point. Cependant étant donné que c'est mon premier vrai programme orienté objet, je voulais éviter de foncer droit dans le mur ! donc attendez quelque réflexion possible quand à la structure de mon application.

    sachant que je veux faire quelque chose d'assez "classique".
    - saisies des formations, expériences, compétences, loisirs et informations civiles. Puis génération d'un cv de façon automatique en récupérant les saisies faites par l'utlisateur. Je veux donner la possibilité à l'utilisateur de sauvegarder son cv saisie, en vue d'une modification ultérieure pour ainsi le regénérer et éviter qu'il ne retape la totalité de son cv.
    L'extension de l'application est envisageable... dans le futur.

    Pour quel structure d'application obteriez-vous ?

    merci !

  13. #13
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    Salutations,

    Ce que j'en pense moi, si j'ai bien compris:
    Ce que tu fais là, c'est que

    - tu as une collection
    - tu souhaites créer une classe destinée à lire/modifier cette collection
    - une autre destinée à ajouter et supprimer un élément de cette collection

    Pour mois c'est un peu comme si tu essayais de modéliser un cube avec trois INT pour la longueurs des cotés, et que tu décidais de mettre les méthodes GET/SET dans une autre classe, et les méthodes Perimetre() et volume encore dans une autre!

    Question code, il devra y avoir une référence vers cette collection dans chacune des classes qui vont la manipuler! Ce n'est pas grave à priori mais ça deviendra super lourd lorsque cet objet collection devra être supprimé.

    Le but de la POO est justement de regrouper dans une enveloppe "une classe en l'occurence" une entité PLUS tout ce qui est nécessaire pour la manipuler. Hors ton idée casse ce concept.

    Pour moi, ta collection et ses méthodes de manipulation, ça doit être une seule et même classe.

    Donc, tu peux hériter de collection et la compléter selon tes besoins, ou si tu ne veux pas que toutes les méthodes de collection soient accessibles, encapsuler et appauvrir.

    Tu m'as suivi?

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 30
    Par défaut
    salut _skip ! j'ai suivis et si je pars sur ton principe tu ferais plutot comme hobotalker c'est bien ça ?

  15. #15
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    Il propose une encapsulation de la collection oui...
    C'est ce que j'aurai fait aussi.

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 30
    Par défaut
    j'ai donc 3 ou 4 collections à gérer je fais donc 3 / 4 classes différentes... une pour gérer chaque collection ? :o

  17. #17
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    Tu crées 3/4 instances tu veux dire?

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 30
    Par défaut
    pourquoi 3 / 4 instances ?
    si c'est des collections différentes... comment tu veux gérer ça ?

  19. #19
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    Je sais pas...
    Elles sont fondamentalement différentes ces collections?

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 30
    Par défaut
    salut !
    bah je vais avoir des données différentes mais j'aurais en fait les mêmes méthodes derrière à savoir ajout, suppresion, selection...


+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Programme de boot qui passe la main à Windows
    Par Bob dans le forum Assembleur
    Réponses: 7
    Dernier message: 25/11/2002, 03h08
  2. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  3. communication entre programmes
    Par jérôme dans le forum C
    Réponses: 12
    Dernier message: 16/04/2002, 08h05
  4. Comment débuter en programmation ?
    Par Marc Lussac dans le forum Débuter
    Réponses: 0
    Dernier message: 08/04/2002, 11h29
  5. [Kylix] icone associée à un programme
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h43

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