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

Diagrammes de Classes Discussion :

[DC] [débutante] Validité de mon diagramme de classe


Sujet :

Diagrammes de Classes

  1. #41
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Je viens de connecter...

    Quand je dis dans les propriétés de Repas
    private ArrayList<IRepas> sesIRepas;

    En fait je dis que sesIRepas sont des aliments et des plats....
    J'étais passée à coté de gros non?

    Ceux qui veulent me planter une machine virtuelle java dans le cerveau le peuvent :/

  2. #42
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 534
    Points : 6 723
    Points
    6 723
    Par défaut
    Citation Envoyé par Deallyra Voir le message
    Quand je dis dans les propriétés de Repas
    private ArrayList<IRepas> sesIRepas;

    En fait je dis que sesIRepas sont des aliments et des plats....
    oui, car on sait aussi que aliments et des plats héritent de IRepas

    Ceux qui veulent me planter une machine virtuelle java dans le cerveau le peuvent :/
    surtout pas !

  3. #43
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 534
    Points : 6 723
    Points
    6 723
    Par défaut
    quel est ton problème, qu'est-ce que tu ne comprends pas ?

  4. #44
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 534
    Points : 6 723
    Points
    6 723
    Par défaut
    je viens de regarder ton rar, si tu regardes ta définition de calculerCalories() dans la classe Plat on voit que Plat connait deux opérations sur Constituer (getQuantiteAliment, getSonAliment) et l'opération getNombreCaloriesPour100g de Aliment

    cela fait beaucoup de choses, pourquoi ne pas avoir demander simplement à Constituer de calculer le nombre de calorie (avec la même formule quantite*calories_pour_100gr) ? Ainsi Plat à moins de choses à savoir et il y a moins de risque en cas de modification/évolution (comme dans ma remarque sur les interfaces).

  5. #45
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 534
    Points : 6 723
    Points
    6 723
    Par défaut
    ta partie purement algo calculant le nombre de calorie n'est pas finie dans le rar, pourquoi ?

  6. #46
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Citation Envoyé par bruno_pages Voir le message
    je viens de regarder ton rar, si tu regardes ta définition de calculerCalories() dans la classe Plat on voit que Plat connait deux opérations sur Constituer (getQuantiteAliment, getSonAliment) et l'opération getNombreCaloriesPour100g de Aliment
    cela fait beaucoup de choses, pourquoi ne pas avoir demander simplement à Constituer de calculer le nombre de calorie (avec la même formule quantite*calories_pour_100gr) ?
    sokka. Je fais la modification... j'ai juste à itérer la fonction pour les IRepas...

    Ainsi Plat à moins de choses à savoir et il y a moins de risque en cas de modification/évolution (comme dans ma remarque sur les interfaces).
    Je dois donc laisser ceci dans la classe plat? Je suis obligé de donner un corps à la méthode calculerCalories()

    public int calculerCalories() {
    throw new UnsupportedOperationException("Not supported yet.");
    }

  7. #47
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 534
    Points : 6 723
    Points
    6 723
    Par défaut
    Citation Envoyé par Deallyra Voir le message
    Je dois donc laisser ceci dans la classe plat? Je suis obligé de donner un corps à la méthode calculerCalories()

    public int calculerCalories() {
    throw new UnsupportedOperationException("Not supported yet.");
    }
    mais non, calculerCalories() dans la classe Plat itère sur les Constituer et leur demande de faire le calcul

    au lieu d'avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        public int calculerCalories() {
            int total = 0;
            for(int i = 0; i < sesConstitutions.size(); i++){
                total+= sesConstitutions.get(i).getQuantiteAliment()*sesConstitutions.get(i).getSonAliment().getNombreCaloriesPour100g();
            }
            return total;
        }
    tu auras simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        public int calculerCalories() {
            int total = 0;
            for(int i = 0; i < sesConstitutions.size(); i++){
                total+= sesConstitutions.calculerCalories();
            }
            return total;
        }
    et calculerCalories() est définie sur Constituer (qui n'hérite pas de IRepas pour autant)

  8. #48
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Une dernière (j'espère) question.
    Repas est un IRepas...
    Dans repas, j'ai une collection de IRepas...
    Donc selon mon diagramme, rien n'empêche à ce qu'un repas soit composé en partie ou en totalité de repas...

    Niveau applicatif, ce n'est pas un problème qui se posera...
    Mais au niveau du diagramme, y a t il possibilité de supprimer cette possibilité?

  9. #49
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    rien n'empêche à ce qu'un repas soit composé en partie ou en totalité de repas...
    Tout à fait, c'est le corrollaire de Composite.

    Personnellement, cela ne me gène nullement.
    Si tu veux y remédier, il te suffit de placer une note de commentaire, ou une assertion OCL. Dans ton cas, j'estime qu'une simple note expliquant que les IRepas d'un Repas doivent être des Plat/Aliment et non des Repas.

    mon professeur d'informatique et ses 2*4pages pour son cour de java........
    Cela explique de nombreux quiproquo et incompréhensions... Désolé, je ne savais pas que les interfaces étaient obscures pour toi.

    Ceux qui veulent me planter une machine virtuelle java dans le cerveau le peuvent :/
    Effectivement surtout pas

    Si tu as la moindre question / point à éclaircir, n'hésite pas.

    Au plaisir de pouvoir t'aider.

  10. #50
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 534
    Points : 6 723
    Points
    6 723
    Par défaut
    Citation Envoyé par hed62 Voir le message
    Personnellement, cela ne me gène nullement.
    et c'est là qu'TheLeadingEdge et moi ne sommes pas d'accord, surtout que cela n'apporte rien et que ton prof te demandera mais pourquoi un repas peut être constitué de repas ...

    comme je l'avais dis j'aurais préféré que seuls Plat et Aliment hérite de IRepas (en le renommant Constituant par exemple), et que IRepas/Constituant soit toujours une interface mais avec la seule opération float calculerCalories(float quantitee), et là tout devient clair et simple ...

  11. #51
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Effectivement, cela peut se faire ainsi
    Oui c'est plus clair. Surtout que je pense qu'en aucun cas on ne fera qu'un Repas se compose d'un Repas ( même dans le cas d'un banquet... )

  12. #52
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Hum...
    En ce cas, je supprime l'implémentation de IRepas dans Repas et place le fait qu'un repas est composé de IRepas.

    Cela explique de nombreux quiproquo et incompréhensions... Désolé, je ne savais pas que les interfaces étaient obscures pour toi.
    ce n'est rien ^^
    C'est à moi de m'excuser... J'aurais dut mieux m'y prendre...
    En tout cas j'aurais beaucoup apprit, merci merci merci

    je retourne à ma programmation \o/

  13. #53
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    >.>
    Qui a mit le topic en résolu?

    Des aliments tels que le beurre, les pâtes ou autres sont pesés...
    Un pain au chocolat ^^ on le pèse pas... On a une unité...

    Donc juste votre avis...
    Actuellement je triche... J'ai rajouté une variable booléene qui me sert à savoir si l'aliment est pesé ou s'il est mangé à l'unité.

    Croyez vous qu'il faille faire quelque chose de plus esthétique ou ca ne vous choque pas vraiment?

  14. #54
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Croyez vous qu'il faille faire quelque chose de plus esthétique
    Ce serait l'idéal effectivement.

    Cette distinction se fait purement au niveau de l'aliment ? Si c'est le cas, tu peux scinder Aliment en AlimentAPeser et AlimentUnitaire, les deux héritant de l'ancienne interface IRepas (comment est elle nommée maintenant ?)

    L'un prendra en paramètre de son constructeur la masse, l'autre la quantité (oui oui, je mange plusieurs croissants au pti dej ) .

    La fonction calculerCalories aura un corps différent dans les deux cas.

  15. #55
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    erf
    c'est bien ce que je craignais >.>
    devoir jouer de l'héritage... A savoir me retrouver avec un peu plus de classes
    Sauf que! si je fais ca... j'aurais les propriétés nombreCaloriePour100g et nombreCalorieParUnite....

    Quand ma méthode CalculerCalorie() de mon constituer viendra voir combien j'ai prit... il ne saura pas quelle propriété prendre
    à moins que je puisse faire un test sur la classe terminale de l'aliment...
    Je reste compréhensible? :/

    l'ancienne interface IRepas (comment est elle nommée maintenant ?)
    je n'ai pas changé le nom de l'interface... IRepas me semble si mélodieux *o*

  16. #56
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Je reste compréhensible? :/
    Tout à fait

    Quand ma méthode CalculerCalorie() de mon constituer viendra voir combien j'ai prit... il ne saura pas quelle propriété prendre
    à moins que je puisse faire un test sur la classe terminale de l'aliment...
    Cette ambiguité vient du fait que tu ne délègue pas assez le calcul.

    Pour l'instant tu as :
    Code java : 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
     
    class Repas
    {
        int calculerCalories()
        {  
           int cal = 0
           foreach Constituant c in mesConstituant
                  cal += Constituant.calculerCalories()
           return cal;
        }
    }
     
    class Constituant
    {
      int calculerCalories()
      {
        return monAliment.caloriesAu100g * qté / 100 ;
      }
    }
    Or, ce n'est pas au Constituant de savoir comment un aliment fait pour calculer ses calories. Il doit donc etre écrit :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class Constituant
    {
      int calculerCalories()
      {
        return monAliment.calculerCalorie(qté) 
        // qté est soit en gramme, soit en unités, cela ne change rien.
      }
    }

    En arrivent les deux classes Aliments : AlimentUnitaire, AlimentPesé :
    Code java : 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
     
    class AlimentUnitaire
    {
      int calculerCalories(int qté)
      {
        return caloriesALunite * qté ;
      }
    }
     
    class AlimentPesé
    {
      int calculerCalories(int qté)
      {
        return caloriesAu100G * qté / 100; // pas oublier la conversion
      }
    }

  17. #57
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 534
    Points : 6 723
    Points
    6 723
    Par défaut
    Constituer n'a pas à savoir à qui il s'adresse, tu donnes toujours un paramètre qui est soi la masse soit le nombre d'unité, chaque sous classe de IRepas/Constituant () sachant qui elle est fera le bon calcul

    je rappelle que ce n'est pas Constituer qui fait le 'vrai' calcul mais les sous classes de IRepas/Constituant, seules les sous classes savent si elles ont des calories au 100gr ou à l'unité

    note que ce qui est valable pour un aliment l'est aussi pour un plat, tu peux avoir des plats avec nombre de calories à l'unité et non au 100gr, d'ailleurs un pain au chocolat est un plat !

    par contre il faudrait pour l'IHM que tu indiques s'il faut saisir une masse ou un nombre d'unité. il faut donc ajouter une opération booléenne sur IRepas/Constituant définie dans les sous classes

  18. #58
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 534
    Points : 6 723
    Points
    6 723
    Par défaut
    hed62, nos réponses se sont télescopées ... et disent la même chose

  19. #59
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    d'ailleurs un pain au chocolat est un plat !
    hum tu te contente de peu

    et disent la même chose
    Tant mieux

    Mais tant qu'on y est, petite question : comment faire si d'un coté on veut passer un poids en gramme, de l'autre une quantité, mais que demain on veuille que le paramètre soit tout autre, genre une Date. (un peu étrange, mais c'est juste "histoire de") : comment ferait on simplement ?

  20. #60
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Ouiii

    J'allais oublier la conversion avant que je me rende compte qu'on pouvait avoir des pains au chocolat *__*

    Et un seul pain au chocolat pour un repas... C'est pas génial >.>

    pour l'histoire d'une date en paramètre...
    on pourrait dire qu'on passe un objet en paramètre...
    sinon réecrire la méthode --"

    Pour l'histoire du plat... je ne pensais pas à un sauté de veau...
    mais à une succession d'aliment :/
    pas glop...
    J'avais plutôt occulté cet aspect... hum.
    plat = pain au choco + jus d'orange par exemple...
    et dans le cas du sauté de veau...

    hum.......
    Un plat en fait était une entrée ou un dessert...
    une boite à aliments... pour ca que je n'avais pas de propriété dans mon diagramme ^^
    Et pour moi un aliment pouvait être le sauté de veau... je n'avais pas de terme pour le qualifier (le correspond à aliment ou "votre" plat)

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 4 PremièrePremière 1234 DernièreDernière

Discussions similaires

  1. Réponses: 17
    Dernier message: 03/05/2011, 12h35
  2. Validation de mon diagramme de classe
    Par ne2sbeal dans le forum Diagrammes de Classes
    Réponses: 4
    Dernier message: 23/02/2010, 00h28
  3. probleme pour créer mon diagramme de classe
    Par karamokooo dans le forum Diagrammes de Classes
    Réponses: 0
    Dernier message: 22/02/2010, 12h34
  4. Validité de mon Diagramme de Classe
    Par Deallyra dans le forum Diagrammes de Classes
    Réponses: 3
    Dernier message: 14/01/2009, 14h03
  5. aide sur mon diagramme de Class
    Par Maria1505 dans le forum Diagrammes de Classes
    Réponses: 9
    Dernier message: 30/07/2007, 12h00

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