Bonjour,
« pour le plaisir », j'ai lancé le développement d'un petit logiciel de gestion de bar personnel. L'idée est de gérer les stocks d'ingrédients (bouteilles, fruits, épices...) et de proposer les recettes pour lesquelles tous les ingrédients sont présents.
Si je me fais une bonne idée « en français » de la chose, je bloque un peu sur sa formalisation (et je me suis promis de ne pas commencer à coder tant que je n'aurai pas une conception propre et solide).
Un ingrédient est caractérisé par :
- son nom ;
- une description ;
- une unité de mesure (un volume, une masse, une pincée...).
Un cocktail est ensuite (outre son nom et sa description) une liste d'ingrédients quantifiés (il faut N mL de tel ingrédient, etc).
Le bar, lui, compte également des ingrédients quantifiés... mais pas les mêmes. Pour gérer les stocks, je pensais à quelque chose comme ceci :
- ingrédient ;
- quantité disponible ;
- quantité initiale ;
- ingrédient générique (par exemple, Zubrowka aura pour ingrédient générique Vodka).
L'idée de quantité initiale permet de gérer les stocks plus finement (au lieu de dire j'ai 2,5L de jus d'orange, je peux dire j'ai 3 bouteilles de jus d'orange, deux pleines et une ne contenant plus que 0,5L). C'est la solution que j'ai trouvé suite à ma question précédente.
Reste à modéliser tout ça proprement (c'est donc mon problème). Faut-il créer une classe Ingredient puis l'instancier dans CocktailIngredient (qui sera instanciée elle-même dans Cocktail) ?
Faut-il au contraire créer une classe Cocktail qui ne contient que sa description, utiliser la classe Ingredient telle que définie juste au-dessus (nom, description, unité de mesure) puis définir une classe d'association CocktailIngredient qui contient un objet Cocktail, un objet Ingredient et un entier (ou un flottant) qui représenterait la quantité ?
Les mêmes questions se posent pour le stock.
Avec ça, ma plus grosse question sera résolue... et je trouverai peut-être moi-même la solution à mes autres problèmes (questions existentielles ?).
Merci d'avance donc !
Alban
Partager