[UML] Diagramme de classes
Résolu/Fermé
A voir également:
- [UML] Diagramme de classes
- Diagramme excel - Guide
- Diagramme word - Guide
- Diagramme camembert excel - Guide
- Logiciel de classement de photos gratuit - Guide
- Logiciel de classement de documents gratuit - Télécharger - Bureautique
13 réponses
SebManfred
Messages postés
484
Date d'inscription
mardi 28 août 2007
Statut
Membre
Dernière intervention
20 mai 2011
128
20 févr. 2008 à 12:45
20 févr. 2008 à 12:45
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.
Utilisateur anonyme
20 févr. 2008 à 12:57
20 févr. 2008 à 12:57
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 :)
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 :)
SebManfred
Messages postés
484
Date d'inscription
mardi 28 août 2007
Statut
Membre
Dernière intervention
20 mai 2011
128
20 févr. 2008 à 13:09
20 févr. 2008 à 13:09
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.
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.
Utilisateur anonyme
20 févr. 2008 à 13:58
20 févr. 2008 à 13:58
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().
:)
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().
:)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
SebManfred
Messages postés
484
Date d'inscription
mardi 28 août 2007
Statut
Membre
Dernière intervention
20 mai 2011
128
20 févr. 2008 à 14:22
20 févr. 2008 à 14:22
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.
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.
Utilisateur anonyme
20 févr. 2008 à 20:02
20 févr. 2008 à 20:02
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 :)
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 :)
SebManfred
Messages postés
484
Date d'inscription
mardi 28 août 2007
Statut
Membre
Dernière intervention
20 mai 2011
128
21 févr. 2008 à 09:37
21 févr. 2008 à 09:37
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?
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?
Utilisateur anonyme
21 févr. 2008 à 10:18
21 févr. 2008 à 10:18
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 :
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 :
Pour boisson_prix, je vais l'ajouter en tant que liste dans la classe boisson, cela me parait logique.
Bonne journée.
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.
SebManfred
Messages postés
484
Date d'inscription
mardi 28 août 2007
Statut
Membre
Dernière intervention
20 mai 2011
128
21 févr. 2008 à 11:15
21 févr. 2008 à 11:15
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)
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)
Utilisateur anonyme
23 févr. 2008 à 09:47
23 févr. 2008 à 09:47
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
Cordialement :)
MERCI INFINIMENT
Utilisateur anonyme
28 mars 2008 à 12:03
28 mars 2008 à 12:03
Re,
Je joins le diagramme de classe dessiné à l'aide de Objecteering :
https://www.cjoint.com/?dCmdrD14Dh
Si tu trouves encore des "gaucheries", les signaler me sera d'une grande utilité.
Merci bien.
Je joins le diagramme de classe dessiné à l'aide de Objecteering :
https://www.cjoint.com/?dCmdrD14Dh
Si tu trouves encore des "gaucheries", les signaler me sera d'une grande utilité.
Merci bien.
SebManfred
Messages postés
484
Date d'inscription
mardi 28 août 2007
Statut
Membre
Dernière intervention
20 mai 2011
128
28 mars 2008 à 12:23
28 mars 2008 à 12:23
ç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...
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...
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...
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...
SebManfred
Messages postés
484
Date d'inscription
mardi 28 août 2007
Statut
Membre
Dernière intervention
20 mai 2011
128
28 mars 2008 à 13:20
28 mars 2008 à 13:20
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.
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.