rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut :

[UML] Diagramme de classes

Posté par khaoula.85, le mercredi 20 février 2008 à 12:13:53
Bonjour,

Je souhaite préparer un diagramme de classes d'une machine de distribution des boissons, je n'ai aucun texte sur lequel je pourrais m'appuyer. Je me suis lancée et j'ai fourni deux classes qui sont :

pièce de monnaie ayant les attributs : valeur et quantité en stock,
et boisson ayant les attributs code, nom, quantité en stock et prix,

Est-ce que les instances de la classe boisson (coka cola, capuccino, ice tea...) devront figurer dans le diagramme de classes en tant que classes ? Le type de relation leur reliant à la classe boisson serait de type généralisation (le petit triangle blanc) ? Leur présentation sera ainsi : coka cola : boisson ? Sera-t-il le même cas pour les pièces de monnaie (millimes, dinars) ?

Normalement un opérateur (manutentionnaire qui est l'administrateur aussi) devrait intervenir pour recharger la machine à boissons ainsi qu'un utilisateur de cette machine, seront-ils considérés comme des classes ?

Je suis un peu confuse :(

Merci de votre aide :)
Répondre à khaoula.85  Signaler ce message aux modérateurs Aller au dernier message

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
SebManfred, le mercredi 20 février 2008 à 12:45:17
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.
Répondre à SebManfred

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
khaoula.85, le mercredi 20 février 2008 à 12:57:34
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 :)
Répondre à khaoula.85

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
SebManfred, le mercredi 20 février 2008 à 13:09:36
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.
Répondre à SebManfred

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
khaoula.85, le mercredi 20 février 2008 à 13:58:59
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().

:)
Répondre à khaoula.85

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
SebManfred, le mercredi 20 février 2008 à 14:22:15
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.
Répondre à SebManfred

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
khaoula.85, le mercredi 20 février 2008 à 20:02:54
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 :)
Répondre à khaoula.85

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
SebManfred, le jeudi 21 février 2008 à 09:37:53
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?
Répondre à SebManfred

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
khaoula.85, le jeudi 21 février 2008 à 10:18:00
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.
Répondre à khaoula.85

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
SebManfred, le jeudi 21 février 2008 à 11:15:37
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)
Répondre à SebManfred

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
khaoula.85, le samedi 23 février 2008 à 09:47:01
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
Répondre à khaoula.85

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
khaoula.85, le vendredi 28 mars 2008 à 12:03:46
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.
Répondre à khaoula.85


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
SebManfred, le vendredi 28 mars 2008 à 12:23:35
ç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...
Répondre à SebManfred

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
khaoula.85, le vendredi 28 mars 2008 à 13:01:54
Non, je n'ai pas encore géré les erreurs :(

Il faut qu'elles soient des méthodes au sein des classes ? :S

J'ai une question s'il te plait : Quand je commence à coder mon programme, toute classe dans le diagramme de classes sera convertie en une classe en C++ (je coderai en C++) ? J'aurai plein de fichier dans ce cas : achat.h, achat.cpp, boisson.h, boisson.cpp...
Répondre à khaoula.85

15


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 Xboss, le vendredi 2 mai 2008 à 03:43:40
Salut j arrive plus a acceder au iagramme de classe si vous pouviez le remettre c est assez urgent merci
Répondre à Xboss

14


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
SebManfred, le vendredi 28 mars 2008 à 13:20:34
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.
Répondre à SebManfred
Logiciels pertinents trouvés dans les téléchargements
Télécharger Media Player Classic 6.4.9.0Media 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
Télécharger AVISplit Classic 1.43AVISplit 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
Télécharger Windows Media Player 11Windows 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
Télécharger GANTT Project 2.0.7GANTT 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
Plus de logiciels gratuits sur « [UML] comment faire un diagramme de classe ? »