|
|
|
|
non, tu ne mets pas tes instances dans ton diagramme, sauf si elles font partie de ton programme en tant que variable membre dans une classe x ou y apparaissant elle-même dans ton diagramme. mais ça me semble peu probable. |
Merci de ta réponse.
L'instance coka cola par exemple est une instance de la classe boisson. Je pourrais pas la considérer comme variable membre de la classe boisson ? Pourrais-je prévoir une classe boisson-prix qui permet de créer des couples boisson-prix ou bien ça ne vaut pas la peine ? Bonne après-midi :) |
les différentes boissons, à priori, peuvent ou ne peuvent pas exister.
prenant en compte cette indétermination, tu ne peux pas les intégrer dans ton diagramme de classe. de plus, Coca étant une boisson, créer une instance de coca dans boisson reviendrait à créer une instance boisson dans une instance boisson, qui créérait à son tour une instance boisson qui... etc... tu peux gérer ça par des pointeurs, mais c'est plutôt au système de gestion de la machine de gérer les différentes boissons, pas à la classe boisson elle-même. la classe boissons est là pour permettre l'existence des boissons, rien de plus. Par ailleurs, si tu déclare une instance coca de ta classe boisson en tant que variable membre de l'une des classes de ton programme, qu'advient-il de cette instance le jour ou il n'y a plus de coca dans le distributeur? le jour ou la société à qui appartient le distributeur décide de ne plus gérer de stocks de coca? etc... le fait qu'il y ait une instance "coca" t'oblige à toujours avoir du coca dans ta machine. pour coca, qui est un produit très prisé, ça ne pose pas de problème, mais pour les autres produits, moins prisés?.. il te faut une classe qui gère les stocks de boisson, qui a des listes de boissons, remplies avec des instances de la classe boisson. ainsi, tu peux avoir des listes vides et tu peux rajouter toutes les boissons que tu veux, tu peux ne pas y mettre certaines, etc... il te faut aussi une classe contenant les différentes fonctions gérant le comportement de ta machine (avec un main qui va être le fondement du fonctionnement de ta machine), et qui va bontenir ta liste de boissons, ta liste de pièces, etc... n'oublie pas de gérer les erreurs et les exceptions... (pièce coincée, canette coincée, plus de monnaie pour le rendu de monnaie, demande d'une boisson qui n'est plus en stock, etc...) avec ça, tu as moyen de faire un beau petit soft. |
Re,
Merci de ton ample explication :) J'ai bien compris le fait de ne pas devoir créer des classes instances (Coca Cola, ice-tea...). il te faut une classe qui gère les stocks de boisson, qui a des listes de boissons, remplies avec des instances de la classe boisson. ainsi, tu peux avoir des listes vides et tu peux rajouter toutes les boissons que tu veux, tu peux ne pas y mettre certaines, etc... --> Je vais prévoir une classe tiroir qui va classer les boissons. il te faut aussi une classe contenant les différentes fonctions gérant le comportement de ta machine (avec un main qui va être le fondement du fonctionnement de ta machine), et qui va bontenir ta liste de boissons, ta liste de pièces, etc... --> Je vais créer une classe appelée main ou unité centrale , cette classe aurait les méthodes suivantes : get liste_prix() : pour obtenir la liste des couples boisson/prix. cancel() : en cas où l'utilisateur renonce à l'opération d'achat et voudrait restituer son argent. distribuer_boisson(), ajouter_boisson(), et ajouter_tiroir(). :) |
c'est peut-être pas une bonne idée de créer une classe tiroir, à moins que le tiroir ne soit un élément du distributeur.
les classes "fourre-tout" sont une très mauvaise idée, en général. créé-toi plutôt une variable membre dans la classe qui va bien qui sera une liste ou un vecteur qui contiendra les différentes boissons que tu as en stock ou que tu es sensé avoir si les stocks sont vides, et navigues dans ces listes en fonction de tes besoins. ça sera beaucoup plus rigoureux. |
Bonsoir,
D'après ce que j'ai compris, il faut que j'ajoute un attribut de type liste ou vecteur dans la classe boisson, qui servira à parcourir les différentes boissons en stock. Cet attribut remplacera l'idée de créer une classe tiroir ; c'est bien ça ? Autre question s'il te plait : la classe prix_boisson dont je t'ai parlé ne peut pas être envisageable ? A la fin, j'aurai 6 classes à savoir : piece_de_monnaie, boisson, utilisateur, manutentionnaire, unite_centrale et boisson_prix. Merci de ton aide. Bonne soirée :) |
l'asssociation prix/boisson est à faire plus dans une table de base de données ou à stocker dans une liste comme structure plutôt que classe. mais je ne vois pas pourquoi, avec la boisson, tu ne mets pas un attribu prix... une boisson n'a qu'un seul prix, et elle a toujours un prix, à priori.
petites questions techniques : pour toi, c'est quoi une liste ou un vecteur? qu'est-ce que tu connais à l'allocation dynamique de mémoire? |
Dans la classe boisson, j'ai bien mis un attribut qui s'appelle prix :)
D'après mes humbles connaissances, la liste est une sorte de tableau prédéfini et qui comporte d'avance des méthodes (remplir, initialiser...). Avant, on était obligés de déclarer un tableau ainsi : int* tab; //créer le pointeur tab = new int[10]; // allocation de l'espace mémoire Mais avec la classe liste, qui comporte toutes les méthodes usuelles des tableaux, ça facilite les choses. Nous aurons juste besoin d'appeler une méthode sous cette forme : objet.methode(); Pour boisson_prix, je vais l'ajouter en tant que liste dans la classe boisson, cela me parait logique. Bonne journée. |
je reviens vers ma remarque à propos des ptix et des boissons : si tu mets ta liste d'association prix/boisson dans ta classe boisson, tu sera obligé de passer par une instance de ta classe boisson pour obtenir un prix
par ailleurs, tu auras une liste créée par instance de boisson, et tu auras donc autant de listes créées que ce qu'il existe de boissons dans ton distributeur, ajouté à celà que chacune de ces listes peut être remplie de façon différente des autres... alors au final, on se réfère à laquelle? Donc, cette liste, il t'en faut une et une seule, contenant l'association de tout les prix avec toutes les boissons donc ça n'est pas la bonne solution le plus compliqué n'est pas forcément ce qui marche le mieux... au contraire ;o) |
Je vais essayer de préparer un bon plat pendant le week end avec tout ça, quelques "épices" et ça sera bien cuit...
Cordialement :) MERCI INFINIMENT |
Re,
Je joins le diagramme de classe dessiné à l'aide de Objecteering : http://cjoint.com/?dCmdrD14Dh Si tu trouves encore des "gaucheries", les signaler me sera d'une grande utilité. Merci bien. |
ça m'a l'air pas mal...
tu gères les erreurs? somme incomplète, rendu monnaie, plus de monnaie pour le rendu, demande d'une boisson pas en stock, boisson coincée (tout le monde connait :-/ ), etc...
|
effectivement, c'est généralement ce qui se fait.
tu peux faire plusieurs classes par fichier, mais c'est déconseillé, on s'y perd vite. pour les méthodes de gestion d'erreur, il faut qu'elles soient implémentées dans la classe qui reçoit l'erreur... le reste est une question de logique. |
| 15/04 22h02 | Activer un onglet précis dans un classeur en contenant beaucoup | Excel |
| 16/05 10h13 | VBA : Tout connaitre sur le fichier du classeur | Bureautique |
| 11/04 13h32 | Equivalent de Microsoft Project (gratuit) | Equivalents gratuits |
| 27/12 01h17 | [KDE] Les applications KDE | KDE |
| 16/04 17h47 | Xubuntu: Linux avec seulement 64 Mo de RAM | Ubuntu |
| 20/02 12h13 | [UML] Diagramme de classes | 15 |
| 05/04 11h15 | UML diagramme de Classe | 1 |
| 18/02 22h30 | UML---Diagramme de classe ----Exemple | 11 |
| 11/11 17h45 | UML diagramme de classes | 2 |
| 14/07 14h31 | UML diagramme de classe d'implémentation | 2 |
![]() | Media Player Classic - Media Player Classic est un lecteur vidéo reprenant l'apparence des premières version de Windows Media Player. Son apparence... | Catégorie: Lecteurs vidéo Licence: Open Source |
![]() | AVISplit Classic - AVISplit permet de découper et d'assembler des morceaux d'une vidéo au format AVI dans l'ordre souhaité, comme tout bon... | Catégorie: Edition vidéo Licence: Freeware/gratuit |
![]() | Windows Media Player - Le Lecteur Windows Media 11 (WMP) est l'une des fonctionnalités incluses dans Windows Vista et offre des outils pour... | Catégorie: Lecteurs vidéo Licence: Freeware/gratuit |
![]() | GANTT Project - GanttProject est un outil de gestion de projet libre, permettant de réaliser des diagrammes de GANTT afin de planifier un... | Catégorie: Gestion de projet Licence: Open Source |
![]() | Verbatim Secure Digital High | Catégorie: Carte Mémoire / Clé USB | 27.99 € Matrixx-media FR |
![]() | Toshiba Bluetooth Class2 (PA3235U-5BTM) | Catégorie: Carte Réseau | 107.64 € Compufirst |
![]() | Verbatim Secure Digital High | Catégorie: Carte Mémoire / Clé USB | 14.23 € Compufirst |
![]() | Extrememory Performance SecureDigital HC | Catégorie: Carte Mémoire / Clé USB | 11.99 € Matrixx-media FR |