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

Java Discussion :

[Conception][Strategie] Combien de classes ?


Sujet :

Java

  1. #1
    Membre éprouvé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Par défaut [Conception][Strategie] Combien de classes ?
    je creé un quizz avec gain de point à chaque bonne réponse puis un calcul de point final
    mais je ne sais pas si je dois creer une classe "CalculPointTotal"
    j'ai dejà une classe jeu4, dont voici le code :
    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
    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
     
    package com.jeu4.test;
    import java.awt.*; 
    import java.awt.event.*; 
    import javax.swing.*; 
    import javax.swing.JOptionPane;
     
     
    public class Jeu4 extends Frame implements ActionListener 
     {
         Frame f;
         CardLayout carte;
         Panel jeu;
         Button bouton=new Button("suivant");
     
     
     
     
     
     
         public Jeu4() {
             //panel de la première carte (1ere question)
             Label situation = new Label("quel est le chanteur du groupe Placebo?");
             Panel p1 = new Panel();
              p1.add(new JRadioButton("Brian Molko"));
              p1.add(new JRadioButton("Johnny Halliday"));
              p1.add(new JRadioButton("Jean pascal"));
     
              p1.setBackground(Color.orange);
     
              //panel de la deuxieme carte (2eme question)
              Label situation2 = new Label("qui est 50 cents?");
              Panel p2 = new Panel(); 
              p2.add(new JRadioButton("un cycliste"));
              p2.add(new JRadioButton("Un chanteur"));
              p2.add(new JRadioButton("Un presentateur TV"));
              p2.setBackground(Color.green);
              //panel contenant les deux précédents
                       jeu=new Panel();
                        carte = new CardLayout();
                        jeu.setLayout(carte);
                       jeu.add("placebo", p1);
                        jeu.add("50 cents", p2);
     
                        setLayout(new BorderLayout());
                        add("South", bouton);
                        add("Center", jeu);
                        p1.add("South",situation);
                        p2.add("South", situation2);
     
     
     
     
                        bouton.addActionListener(this);
                        setVisible(true);
                       setBounds(150,150,300,250);
                       setTitle("un petit quizz");
                       int score;
     
     
     
     
         }
     
     
         public void actionPerformed(ActionEvent e) {
             carte.next(jeu);
     
            int score = 0;
             {
                 if (bouton.getLabel().equals("Brian Molko"))
     
                     score += 1;
                 else 
                     score += 0;
     
                 if (bouton.getLabel().equals("Un chanteur"))
     
                  score += 1;  
              else
                  score += 0;
                     }
             }
     
         public static void main(String[] args) { 
               Frame f = new Jeu4(); 
           } 
     
     
     
     
     
     
     }
    puis une classe Point, dont voici le code :
    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
     
    package com.jeu4.outil;
    import com.jeu4.test.Jeu4;
     
     
     
     class Point 
    {
       private float score;
     
       public Point (float score)
       {
           this.score = score;
       }
       public float getScore()
       {
               return this.score;
    }
    }
    dois je creé une classe CalculPointTotal, pour avoir le nombre de point final?

    merci
    [ Modéré par vedaer ]
    Ajout d'un tag dans le titre
    Les Règles du Forum

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Par défaut
    Je comprends pas l'interet de la class point a part proteger ton float....

  3. #3
    Membre averti
    Inscrit en
    Février 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 23
    Par défaut
    Je comprends pas l'interet de la class point a part proteger ton float....
    Pourquoi pas elle peut etre amenée plus tard a ajouter une reference au jeu qui a fait gagner ce point par exemple. Enfin on peut tout envisager.
    dois je creé une classe CalculPointTotal, pour avoir le nombre de point final?
    Ba c'est une methode dont tu as besoin plutot, une methode que l'on pourrait mettre dans la classe Joueur par exemple, enfin la classe de l'avatar du joueur que tu appelles comme tu le sens ^^. Cette methode pourrait parcourir la collection de points de l'objet Joueur, faire un getScore() sur chaque point, les aditionner et les retourner.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Par défaut
    Oui si la class point deviens plus complexe je suis d'accord, par exemple ajouter une description (String) du jeu. Dans ce cas la la methode pour calculer les points peut etre static dans la class Point et retourne le score total.
    static public Point getTotal(Point[]) { //implementation }
    L'avantage d'une telle solution est que tu n'a pas a definir d'acceseur pour la variable score dans Point.

    2, 3 commentaires sur le reste de ton implementation :
    -Sais-tu qu'il existe JOptionPane ? cela permet de faire des dialog assez simplement mais c'est vrai que tu ne pourrais conserver ta mise en forme avec un radioGroup... Question de design comme tu veux... http://java.sun.com/docs/books/tutor...ts/dialog.html
    - pour tes questions tu peux creer une class Question contenant un String[] answers qui contiendra les reponses et un int index qui contiendra le numero de la bonne reponse. Ton IHM sera desormais independante de tes questions... Il faudra juste creer une fonction genre public boolean displayQuestion(Question q) le boolean precisant si la question a été réussie ou non, tu pourrais aussi renvoyer le nombre de point soit par un int soit par une instance de Point...
    (Ceci est fait afin de respecter le MVC, je ne sais pas si tu connais le MVC mais cela simplifie enormement la mise à jour de ton code apres...)
    -Si tu conserve ta mise en forme initiale, le listener effecue un test pour savoir si la reponse est bien la bonne conformement à l'index..
    -Dans le cas de ma propostition d'interface qui est juste plus simple à mettre en oeuvre mais pas forcement le design souhaité, aucun listener n'est necessaire juste un test pour savoir si le bouton cliquer correspond bien au bon index.

  5. #5
    Membre éprouvé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Par défaut :s
    merci pour vos reponses !!
    mais j'arrive à rien
    je suis completement bloké avec cette histoire de point
    j'ai vraimentl'impression que c'est super dur :s

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 109
    Par défaut
    Bonjour,

    Juste mes 0.02€ de théorie : en OO, les classes sont des nom et les méthodes sont des actions. Partant de ce principe, "CalculTotalPoint" est une action => ce doit donc être une méthode et non une classe

  7. #7
    Membre émérite
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Par défaut
    Moi je ne comprend pas le problème
    Effectivement, je vois ça comme une méthode. T'as une classe Point qui contient toutes les actions et valeurs relatives aux points.

    Nas'

  8. #8
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    Où utilises tu ta classe point ? Sinon, l'acces a la variable point en elle meme est suffisante si tu ajoute a chaque fois les points d'un joueur dans la classe point correspondante...
    Explique un peu mieux quand et comment tu vas utiliser ta classe point.
    merci

  9. #9
    Membre confirmé Avatar de Kenji
    Inscrit en
    Janvier 2005
    Messages
    129
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Janvier 2005
    Messages : 129
    Par défaut
    Hum peut-être que j'ai mal saisi le concept mais à quoi sert une classe Point si il n'y a pas une classe Joueur?
    Sinon ça se résume à déclarer des classes Point dans la classe Principale pour compter le score et dans ce cas un simple int suffit non?

  10. #10
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    on peut immaginer d'instancier une classe point par joueur, et d'étendre le concept en ajoutant des choses dans la classe point. Java reste un langage de programmation fortement orienté objet, mieux vaut trop en faire que pas assez, ca évite de faire des manipulations de code hasardeuses en cas de modification du concept de points...

  11. #11
    Membre chevronné Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Par défaut
    Voire meme faire une classe Question qui indiquerait elle mme combien de points vaut la question et qui a repondu a cette question ( ou une valeur par defaut si personne n'a repondu )
    Et pour calculer le nombre de points total il suffirait de faire la somme pour chaque joueur.
    enfin c'est une idée comme ca à la va-vite .

  12. #12
    Membre confirmé Avatar de Kenji
    Inscrit en
    Janvier 2005
    Messages
    129
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Janvier 2005
    Messages : 129
    Par défaut
    Je suis tout à fait d'accord avec toi que le concept de classes permet de protéger l'intégrité du code et de pouvoir retoucher son code proprement mais dans ce cas je vois que sa classe Point ne calcule que le score c'est pour ça que je me suis permis cette intervention.
    Quand à la progammation objet à vouloir en faire trop on risque de vouloir modéliser le monde

  13. #13
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    n'est ce pas le but de certaines formes d'analyse ? je pense tout particulierement a UML, qui veut tout représenter par des objets...
    Sa classe point pourrait lui servir s'il veut faire plus d'un joueur, et ainsi la transformer en classe joueur, avec une string pour le nom, le score, etc...

  14. #14
    Membre confirmé Avatar de Kenji
    Inscrit en
    Janvier 2005
    Messages
    129
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Janvier 2005
    Messages : 129
    Par défaut
    Oui tout à fait c'est le but d'UML de conceptualiser par objet et je pense pas qu'en UML se soit tres joli de transformer un objet Point en objet Joueur
    Et c'est justement pour ça que je m'interroge sur le rôle de sa classe Point vu les méthodes qu'elle contient.
    Donc à mon avis je pense qu'il y a une erreur de conception si la classe Point est bien la pour prendre le score.
    Il vaut mieux dans ce cas créer une classe Joueur avec un attribut score et pourquoi un attribut couleur pour les distinguer.

  15. #15
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    Citation Envoyé par Kenji
    Oui tout à fait c'est le but d'UML de conceptualiser par objet et je pense pas qu'en UML se soit tres joli de transformer un objet Point en objet Joueur
    Et c'est justement pour ça que je m'interroge sur le rôle de sa classe Point vu les méthodes qu'elle contient.
    Donc à mon avis je pense qu'il y a une erreur de conception si la classe Point est bien la pour prendre le score.
    Il vaut mieux dans ce cas créer une classe Joueur avec un attribut score et pourquoi un attribut couleur pour les distinguer.
    Si son projet évolue et qu'elle veut faire en sorte qu'il y ait plusieurs joueurs, pouruqoi pas ne pas changer sa classe point en joueur ? Apres tout, les points représentent ceux du joueur, donc c'est juste une sorte de généralisation des points a plusieurs joueurs.

  16. #16
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 76
    Par défaut
    Personnellement, je suis du même avis que mavina : une analyse s'impose pour bien démarrer et surtout de manière cohérente.

    Tout d'abord :
    - Une classe Plateau
    - Une classe Joueur
    - Une classe Question

    Un Plateau est composé de Joueurs (list)
    Un Joueur a des caractéristiques (nom, prenom,...)et un score en cours
    Une question est un texte associée avec le score de la question.

    Ensuite, tu peux ajouter une liste de questions dans la classe Joueur pour savoir quelles questions ont été posées à un joueur en particulier durant le jeu etc...
    Voili voilou

  17. #17
    Membre confirmé Avatar de Kenji
    Inscrit en
    Janvier 2005
    Messages
    129
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Janvier 2005
    Messages : 129
    Par défaut
    Hum la Généralisation en UML couvre la notion d'héritage,je suis pas sur qu'un joueur hérite de la classe Pion.
    Enfin bon je pense que romano21 a décrit une piste assez poussée pour la guider.

  18. #18
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    vi voila... Enfin ce n'est pas ce que je voulais dire, le fait de faire hériter joueur de pion, je dis juste que SI elle devait améliorer, ca lui poserai moins de problèmes!

Discussions similaires

  1. [Conception] Traits, RTTI & méta-classes
    Par mchk0123 dans le forum C++
    Réponses: 5
    Dernier message: 03/05/2007, 00h11
  2. Conception: héritage d'une classe abstraite
    Par Kikito dans le forum Langage
    Réponses: 19
    Dernier message: 05/10/2006, 17h36
  3. [Strategie] Emulation clavier, Class Robot
    Par Invité dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 06/07/2005, 12h37
  4. Réponses: 2
    Dernier message: 07/10/2004, 16h31
  5. [Débutant][Conception] Erreur avec une classe interne
    Par Devil Redneck dans le forum Général Java
    Réponses: 5
    Dernier message: 11/06/2004, 15h45

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