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

avec Java Discussion :

Exercice Java


Sujet :

avec Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Mars 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2011
    Messages : 28
    Points : 4
    Points
    4
    Par défaut Exercice Java
    Bonjour,

    Je viens vers vous car j'ai besoin d'aide en Java.

    Je poursuis actuellement une Unité d'Enseignement au CNAM concernant le JAVA. Mais je suis Admin réseaux et le développement est vraiment difficile pour moi. Je suis au rattrapage en septembre et je potasse les anciens annales. mais franchement il y a un exercice ou je ne vois même pas par où commencer.

    Cela m'aiderai beaucoup si vous pouviez me donner un indice ou un petit exemple de ce qui est demandé.

    Merci beaucoup par avance pour votre aide.

    Voici l'exercice en question :

    Il s’agit d’écrire du code java pour modéliser des recettes de cuisine.
    Dans notre cuisine, nous disposons des éléments suivants : Sucre, Sel, Poire, Pomme, Framboise, Veau,
    Boeuf, Chocolat, Carotte, Haricot _vert.
    Ces éléments sont modélisés à l’aide de classes dérivées de la classe abstraite Met. La classe Met possède
    les méthodes suivantes estSale(), estSucre(), estSucreSale(), nombreDeCalories() et estDietetique().
    Un Met est sucré-salé s’il est sucré et salé.
    Un Met est diététique si le nombre de kcalories est inférieur à 200.

    Question 1 :
    Ecrivez les classes Met, Pomme, Veau. Faites attention de bien préciser quelles sont les méthodes
    abstraites.

    Question 2 :
    Un Plat est composé de Met et est lui-même un Met.
    On peut par exemple faire un plat de veau aux pommes.
    Illustrez cette phrase par un diagramme UML comportant les classes Met, Plat, Pomme, Veau et
    VeauAuxPommes.
    Ecrivez la classe Plat en utilisant un ArrayList pour contenir les mets.
    Quel est le pattern mis en oeuvre dans cette question ?

    Question 3 :
    On désire maintenant créer une nouvelle sorte de Mets dits "allégés" (ils sont tous diététiques). On ne veut
    pas changer les classes existantes (mais en rajouter de nouvelles), de manière à avoir par exemple du
    Boeuf allégé, du Chocolat Allégé, etc...
    Quel pattern peut-on mettre en oeuvre pour cette modélisation ?
    Illustrez par un diagramme de classe.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour,

    Cet exercice ne me semble pas bien compliqué. Te donner une piste reviendrait à te donner directement les réponses ce qui n'est pas le but recherché.

    Qu'as tu déjà fait ?
    A quel niveau bloques-tu ?
    Concernant les patterns, il y a de très forte chance que ceux demandés se trouvent ici ou .

  3. #3
    Candidat au Club
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Mars 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2011
    Messages : 28
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Merci pour ton message en effet de plus avoir la réponse sans comprendre ne m'aidera pas non plus pour l'examen.

    Si je prends la question 1 :

    Pour moi il faut écrire la Classe Met, puis pommes et veau.

    Mais je mets quoi dedans ? Moi j'aurais fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    abstract class Met {
      abstract void estSucre(); //un des points communs possibles pour les classes Pommes, veau, etc...
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class Test{
       public static void main(String args[]){
          Met pommes = new Pommes();
          pommes.estSucre();
       }
    }
    J'ai acheté le livre du zéro et je pense pourvoir trouver pour la question 1 & 2.

    Pour les patterns je vais regarder tes liens.

    Merci encore pour ton aide.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    abstract class Met {
      abstract void estSucre(); //un des points communs possibles pour les classes Pommes, veau, etc...
    }
    Attention :
    - Mettre public devant abstract class, et une classe par fichier.
    - En général les méthodes isXXX (ou estXXX en fançais) renvoient un boolean, pour savoir si ton Met est OUI, ou NON succré, salé....

    Sur le plan conception, faire une sous-classe par ingrédient est discutable. Mais ton exercice l'impose.

    N'hésite pas à poster l'avancement de ton travail (Bouton # pour poster du code, c'est plus pratique)

    Concernant un des patterns il y a 1 très gros indice dans l’énoncé :
    - Un Plat est composé de Met et est lui-même un Met.

    Le deuxième lien est mieux foutu.

    Pour t'aider à trouver parmi la liste, demande toi s'il s'agit d'un pattern destiné à créer/instancier des objets, à structurer tes objets les uns par rapport aux autres, ou à modifier leur comportement.

  5. #5
    Candidat au Club
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Mars 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2011
    Messages : 28
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup.

    Je vais travailler la dessus et venir mettre le résultat.

    Pour le code je savais pas j'utiliserais le bouton la prochaine fois.

  6. #6
    Candidat au Club
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Mars 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2011
    Messages : 28
    Points : 4
    Points
    4
    Par défaut
    Désolé pour cette réponse tardive.

    Pour la question 1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public abstract class Met {
      abstract void estSucre(); //un des points communs possibles pour les classes Pommes, veau, etc...
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public class Test{
       public static void main(String args[]){
          Met pommes = new Pommes();
          pommes.estSucre();
       }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public class Test{
       public static void main(String args[]){
          Met veau = new veau();
          pommes.estSale();
       }
    }
    Pour la question 2 :

    Le diagramme que j'ai fait :



    La classe Plat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    import java.util.Arraylist;
     
    public class Plat {
     
        public static void main(String[] args) {
     
              Arraylist al = new Arraylist();
              al.add(Veau);
              al.add(Pomme);
              al.add(VeauAuxPommes);
         }
    ]
    Pour le pattern utilisé je dirais que c'est le pattern créationnel.

    Je suis en train de travailler la question 3.

    Merci par avance encore pour votre aide.

  7. #7
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Pour le pattern utilisé je dirais que c'est le pattern créationnel.
    Créationnel n'est pas UN pattern mais un GROUPE de pattern.
    Par ailleurs dans ton diagramme UML il manque la notion la plus importante que j'avais soulignée dans mon message précédent :
    - Un Plat est composé de Met et est lui-même un Met.
    Qui du coup correspond à la mise en oeuvre du pattern que tu n'as pas encore trouvé. Allez, courage .

  8. #8
    Candidat au Club
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Mars 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2011
    Messages : 28
    Points : 4
    Points
    4
    Par défaut
    Ok donc retour à la question 2

  9. #9
    Candidat au Club
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Mars 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2011
    Messages : 28
    Points : 4
    Points
    4
    Par défaut
    Si j'ai bien compris avant de pouvoir faire le diagramme correctement il faut déjà que je trouve le bon pattern ?

    Serait-ce le abstract factory ? suis je au moins dans le bon groupe de patterns ?

  10. #10
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Je ne donnerai pas d'indication précise .

    Si tu ne connais/maitrise pas les design pattern, essaye de modéliser le problème de manière correcte, et ensuite regarde à quel pattern ça correspond.
    Pour te faciliter la tache, demande-toi par quelle notion tu peux traduire les indications importantes.

    - Un Plat est composé de Met ==> ??
    - Un Plat est un Met ==> ??

    Du coup en regardant mieux, je viens de m’apercevoir que ton schéma UML n'est pas correct, en plus d'être incomplet.

  11. #11
    Candidat au Club
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Mars 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2011
    Messages : 28
    Points : 4
    Points
    4
    Par défaut
    Est-ce que c'est mieux ? :


  12. #12
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Bof...non



    Que sont tes membres compose dans Met et Plat ? Ils n'ont pas de type.
    Quel sens à selon toi la flèche en pointillée ?
    A quoi servent tes méthodes get, find, update, create ? Elles n'ont pas de type de retour non plus. Et ton énoncé n'en parle pas.

    Pareille pour tes paramètres des méthodes, ils n'ont pas de type.
    Quel logiciel UML utilises-tu ?

    Ce qui est correct :
    Ton héritage Met, Pomme, Veau.

    Edit: n'oublie pas les méthodes de l'énoncé
    estSale(), estSucre(), estSucreSale(), nombreDeCalories() et estDietetique()

  13. #13
    Candidat au Club
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Mars 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2011
    Messages : 28
    Points : 4
    Points
    4
    Par défaut
    J'utilise le logiciel StarUML.

    J'avais pas compris qu'il fallait que je renseigne aussi les blocs

    Pour moi la ligne en pointillé veut dire "est créé à partir de"

    En fait je me demande s il faut que je supprime la classe plat car c'est un Met au final.

    Cela devrait être plus juste je pense :


  14. #14
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Bon alors une petite indication.
    Tu fais fausse route avec le "est créé à partir de".
    Quand tu vois marqué A est composé de B ça veut dire qu'un objet A peut contenir des B (1 ou plusieurs).

    Cours UML approprié

    De plus, tu a très bien réalisé les notions :
    Veau est un Met
    Pomme est un Met
    Donc tu devrais très bien comprendre et modéliser Plat est un Met.

  15. #15
    Candidat au Club
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Mars 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2011
    Messages : 28
    Points : 4
    Points
    4
    Par défaut
    Je me sens nul du coup là ^^'

    Je vais d'ailleurs de ce pas m'immoler par le feu...


  16. #16
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Courage, tu avances

    - VeauAuxPommes ne sert à rien :en réalité, ton VeauAuxPommes sera un Plat composé de Veau et de Pomme et dont le nom sera "Veau aux pommes".

    - Les méthodes que tu penses êtres abstraites doivent êtres marquées en tant que telle (En général abstrait => Italique, mais je ne connais pas StarUML).

    - Ajoute les types de retour à tes méthodes.

    - Je pense pas que ce soit la peine de remettre nom dans chaque sous-classe (Héritage). Par contre mets le private, et ajoute un getter / setter. De plus un constructeur qui prend en paramètre un nom pourrait être pratique.

    - Tu as très bien réalisé Plat est un Met

    - Il te manque Plat contient des Met (Ou est composé de Met). CF le lien de mon post précédent.

  17. #17
    Candidat au Club
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Mars 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2011
    Messages : 28
    Points : 4
    Points
    4
    Par défaut
    Ok compris,

    - J'ai supprimer VeauAuxPommes
    - C'est bien en italique dans StarUML pour moi c'est la classe Met
    - j'ai ajouté le type pour les méthodes
    - Pour le private j'ai rien de graphique qui apparaît pour me signalé que c'est ok...
    - Pour plat contient des mets Est-il possible d'avoir deux flèches ?

    Cela donne ça pour le moment :


  18. #18
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Encore râté mais ça progresse.

    - Comme tu l'as modélisé, c'est la classe Met qui contient des Plat. Or tu souhaite l'inverse. De plus, il faut que dans ta classe, la notion de "contient" se modélise par un champ.


    - Pourquoi as-tu enlever l'héritage Plat --> Met ? Rien ne t'empêche d'avoir plusieurs lien entre 2 classes.

    - Le private se matérialise par un "-" à la place du "+" devant les méthodes et les champs.

    - Il faut que tu précise pour chaque méthode, laquelle est abstraite ou non.

    - Tes méthodes n'ont toujours pas de type de retour

  19. #19
    Candidat au Club
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Mars 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2011
    Messages : 28
    Points : 4
    Points
    4
    Par défaut
    Un autre essai Désolé de te faire travailler comme ça ^^'

    - J'ai mis les méthodes en private (celles dont je pense qu'elles ne doivent pas être modifiés par une autre classe).
    - J'ai mis en Italique celle dont je pensais qu'elles étaient abstraites
    - Pour le type de retour c'est pas ce que j'ai mis entre parenthèses ? String, int, etc...


  20. #20
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    - J'ai mis les méthodes en private (celles dont je pense qu'elles ne doivent pas être modifiés par une autre classe).
    - Si tu les mets privées, comment voudras-tu qu'un utilisateur sache si ton plat est salé / sucré / sucré-salé ? Qui plus est je pense que tu t'es trompé. Pour savoir si une méthode est abstraite, demande toi si sont fonctionnement dépend du type de sous classe, ou si c'est commun. Private ne sert pas à rendre non-modifiable, mais non visible.

    - Ton +contient(string) dans Plat ne veut strictement rien dire. Que faut il à un objet A pour qu'il puisse contenir d'autres objets B ?

    - Relis ce que j'ai mis concernant le champ private + getter/sette + constructeur dans les post précédents.

    - Tes relations semblent bonne, il faudrait juste que tu précise les multiplicités sur ta composition (1...1 ? 0...1 ? 1... n ? 0...n ?).

    - Pour le type de retour c'est pas ce que j'ai mis entre parenthèses ? String, int, etc...
    Non, entre parenthèse c'est les paramètres. Et de plus, aucune de tes méthodes ne retourne de String.
    Syntexte habituelle :
    <modificateurVisiblité> nomMethode(<parametres) : <TypeRetour>

    Je pense que tu as de grosses lacunes en programmations objets / uml.
    Tu as eu des cours avant qu'on te donne cet exercice ?

    Peux être devrait tu parcourir les différents cours java / POO avant de reprendre ton exercice. Il doit y avoir ce qu'il faut sur développez.com.

Discussions similaires

  1. Petite question sur exercice Java
    Par romain1 dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 01/09/2008, 11h37
  2. Exercices Java Objet
    Par ginos dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 30/04/2008, 00h41
  3. Aide exercices Java débutant
    Par dalil777 dans le forum Général Java
    Réponses: 9
    Dernier message: 08/02/2008, 22h19

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