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 :

Un objet constitué d'autres objets


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Décembre 2011
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 52
    Par défaut Un objet constitué d'autres objets
    Bonjour,

    Dans le cadre d'un projet java qui consiste en la gestion d'un fast-food, il me faut établir les produits disponibles à la vente. Le problème c'est que certains produits sont à l'unité (sauce, desserts), d'autres en volume (frites, boissons) et parmi ceux vendus à l'unité, il y a des produits composés (hamburgers,...) qui se composent d'ingrédients.

    Voici donc le diagramme de classe sans méthodes ni variables:



    Pour les produits, pas de soucis particulier, j'ai utilisé l'héritage mais je ne vois pas comment "dire" que l'objet Produit_compose se compose d'objet Ingrédient...

    Sachant que j'appelle ingrédient ce qui entre dans la constitution d'un produit composé (la frite n'est pas un ingrédient, le coca non plus, mais les cornichons, tomates, steaks oui

    Pour l'instant on a vu les bases, l'héritage, polymorphisme, interface, méthode abstraite, exception et quelques listes (LinkedList et ArrayList).

    Si quelqu'un peut m'aider à résoudre mon problème ou a des conseils pour l'architecture de mon programme je suis preneur.

    Merci

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Décembre 2011
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 52
    Par défaut
    En gros, est-ce qu'il est possible de créer des objets (ici Produit_compose) qui sont constitués d'autres objets (ici Ingrédient) préalablement crées?
    Le truc c'est qu'en plus, 2 objets Produit_compose ne sont pas nécessairement constitués du même nombre d'objets Ingrédient...

    Par exemple, mon constructeur Produit_compose:

    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
    class Produit_compose extends Produit_unite {
     
    protected Ingredient Ing1 = new Ingredient();
    protected Ingredient Ing2 = new Ingredient();
    protected Ingredient Ing3 = new Ingredient();
     
      public Produit_compose(String nom_produit, int prix, Ingredient Ing1, Ingredient Ing2, Ingredient Ing3){
    super();
    this.Ing1= Ing1;
    this.Ing2= Ing2;
    this.Ing3= Ing3;
     
     
      }
    }
    Mon constructeur Ingredient:


    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 Produit_compose extends Produit_unite {
     
    protected String nom_ingred ;
    protected int prix_ingred;
    protected int qte_ingred; // quantité de l'ingrédient en stock
     
      public Produit_compose(String nom_ingred, int prix_ingred, int qte_ingred){
    this.nom_ingred= nom_ingred;
    this.prix_ingred= prix_ingred;
    this.qte_ingred= qte_ingred;
     
     
      }
    }
    Est-ce possible d'appeler un objet Ingredient comme variable d'instance et dans mon constructeur de la classe Produit_compose? Je me demande aussi si la classe Produit_unite sert à quelque chose et si je ne peux pas la supprimer... Et du coup dans ma classe Produit je peux avoir un nom et un prix comme variable d'instance et tout serait plus simple.

    Merci de votre aide/conseil(s)

  3. #3
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    Pour le produit composé de ingrédient : Une Liste fera l'affaire. De cette maniere un produit peut etre composé de 1 ou N ingrédients.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 9
    Par défaut
    Je ne vais pas répondre pour la globalité de ta modélisation mais simplement sur ta question :
    En gros, est-ce qu'il est possible de créer des objets (ici Produit_compose) qui sont constitués d'autres objets (ici Ingredient) préalablement créés ?
    Vu de l'extérieur (en se plaçant en tant qu'utilisateur de la classe ProduitCompose) ce que j'aurais envie d'appeler c'est un constructeur de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ProduitCompose bigMac = new ProduitCompose("Big Mac", 4.5,
      new Ingredient("cornichon", .3, 2),
      new Ingredient("tomate", .5, 1),
      new Ingredient("steack", 1, 1));
    Pour que ton ProduitCompose contienne un nombre indéterminé d'ingrédients je te suggère l'utilisation d'une propriété java.util.List :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class ProduitCompose extends ProduitSimple {
     
      private List<Ingredient> ingredients;
     
      ProduitCompose(String nomProduit, double prix, Ingredient... ingredients) {
        super(nomProduit, prix);
        this.ingredients = new ArrayList<Ingredient>();
        this.ingredients.addAll(ingredients);
      }
     
    }
    Qu'est-ce que tu en penses ? Ça compile (je n'ai pas de JVM pour tester) ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Décembre 2011
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 52
    Par défaut
    Citation Envoyé par b4n0u Voir le message

    Vu de l'extérieur (en se plaçant en tant qu'utilisateur de la classe ProduitCompose) ce que j'aurais envie d'appeler c'est un constructeur de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ProduitCompose bigMac = new ProduitCompose("Big Mac", 4.5,
      new Ingredient("cornichon", .3, 2),
      new Ingredient("tomate", .5, 1),
      new Ingredient("steack", 1, 1));
    Ici quand tu écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new Ingredient("cornichon", .3, 2)
    le "2" c'est la quantité de l'objet "cornichon" dans l'objet bigMac. Or, dans mon constructeur Ingredient cette variable représente la quantité totale de l'ingrédient en stock. Donc comment puis-je faire pour d'un côté avoir la quantité d'ingrédients nécessaire à la confection d'un produit composé et d'autre part la quantité de l'ingrédient en stock.
    Pour résumer, la troisième variable d'instance n'a pas la même signification dans mon constructeur et lors de l'élaboration d'un nouveau produit_compose.

    J'essaye tout çà au plus vite

    Merci pour votre aide!

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    A priori, de manière visible ou pas, tu va devoir créer un objet qui associe un ingrédient à une quantité utilisée.

    exemple:
    new IngredientComposition(ingredient, quantité, ordreDansLaRealisation, autreChoses)

  7. #7
    Membre confirmé
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Décembre 2011
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 52
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    A priori, de manière visible ou pas, tu va devoir créer un objet qui associe un ingrédient à une quantité utilisée.

    exemple:
    new IngredientComposition(ingredient, quantité, ordreDansLaRealisation, autreChoses)
    Du coup j'aurais un objet Ingredient et un autre IngredientComposition?

    Ca m'embrouille là ^^

    edit: Est-ce qu'il est possible de considérer que ma variable quantite_ingredient est bien la quantité en stock, et ainsi, au lieu d'avoir un autre objet IngredientComposition comme tu le suggérais, rajouter l'objet ingrédient autant de fois que nécessaire dans la liste pour Produit_Compose. Vu qu'il n'y a jamais 36 fois le même ingrédient dans un Produit_Compose çà ne serait pas nécessairement plus fastidieux non?

Discussions similaires

  1. Réponses: 5
    Dernier message: 22/04/2008, 10h41
  2. [POO] Gérer des objets associés à d'autres objets
    Par metos00 dans le forum Langage
    Réponses: 1
    Dernier message: 07/10/2007, 22h00
  3. Position d'objet dans un autre objet
    Par Speed41 dans le forum Delphi
    Réponses: 14
    Dernier message: 20/02/2007, 20h51
  4. Réponses: 7
    Dernier message: 10/02/2007, 05h41
  5. Réponses: 6
    Dernier message: 08/09/2004, 12h35

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