2016-06-03 2 views
0

Je suis nouveau dans les modèles de conception orientés objet. J'ai une idée de base du modèle de domaine. Cependant, je suis bloqué au problème suivant. Le problème est que j'ai un système qui contient des événements et des clients (les deux 1 .... *). En outre, les événements contiennent des packages. L'utilisateur est autorisé à réserver des événements. Cependant, il doit le faire en réservant un paquet contenu dans un événement. Quel devrait être le bon modèle de domaine de la situation donnée? J'ai fait beaucoup de recherches sur des questions similaires, mais je n'ai pas trouvé de réponse appropriée.Quel est le bon modèle de domaine?

Mes suppositions: 1)

Dans cette image, les clients peuvent réserver des événements, mais je ne suis pas sûr à ce sujet parce que les clients sont contenus à l'intérieur des paquets réservent des événements. Devrais-je sélectionner ce modèle de domaine pour le système donné? C'est intuitif car cela permet aux clients de réserver des événements.

2) enter image description here

Dans cette image, le modèle de domaine signifie la structure du système. Cependant, les clients doivent accéder aux packages uniquement via des événements. Par conséquent, je ne suis pas sûr de ce modèle de domaine. Comment un client peut-il réserver un paquet lorsqu'il est contenu dans un événement?

Veuillez indiquer quel modèle de domaine est correct. Je suis un débutant donc s'il vous plaît fournir une bonne explication. Merci de m'avoir aidé!

+0

Veuillez fournir une réponse à cette question. Je ne peux pas continuer sans une réponse à cette question. Merci! –

+0

quelques remarques au sujet de votre modèle 1. Ne mettez pas les noms d'association dans le rectangle comme il ne se conforme pas la spécification UML et est source de confusion 2. Les noms de classe doivent être au singulier pluriel plutôt que Notez également que c'est un page d'exécution communautaire. Vous pourriez recevoir une réponse dans 5 minutes ou dans 5 semaines et c'est tout simplement génial de recevoir ici une réponse. S'il vous plaît éviter d'être arrogant. – Ister

Répondre

2

Tout d'abord, il n'y a pas de réponse définitive. Habituellement, vous pouvez créer de plusieurs façons différentes et avoir de bons résultats.

Deuxième - les deux contiennent des relations devraient être des agrégations à mon avis. Events to System est (probablement) une agrégation composite alors que Package to Event peut être soit composite (si un Package particulier est spécifique à un seul événement), soit partagé (si le même Package est disponible via divers Events).

Maintenant à la question principale. Si la relation entre Event et Package est une composition (agrégation composite), vous pouvez modéliser la relation de livre en tant qu'association entre Customer et Package. Ensuite, l'événement est reconnaissable uniquement. Vous pouvez également étendre votre modèle en ajoutant une relation à l'événement dérivé (du livre).

Voici un exemple (notez le/signe représentant ceci est une association dérivée): derived association

Autre option qui est valable pour l'agrégation composite et partagée entre l'événement et le paquet est de modèle de relation livre entre le client et Événement mais modélisez-le en tant que classe d'association. Ensuite, vous avez une classe (Book) décrivant l'association et cette classe peut avoir une relation selectedPackage to Package. Dans ce cas, votre modèle ressemblera à ceci: association class

Je peux parier que vous pouvez également trouver également d'autres méthodes de modélisation de votre problème qui sont toujours valables et montrer toutes les informations que vous avez fournies jusqu'à présent.

+0

Vous pouvez améliorer le diagramme en ajoutant une direction de lecture pour les étiquettes de connecteur. Dans EA, cliquez avec le bouton droit sur le nom (par exemple "va à") et sélectionnez Direction/To (le cas échéant). –

+0

@ThomasKilian Je le sais mais je ne l'ai pas fait exprès. La vérité est que je ne connais pas la navigabilité exacte des relations dans le diagramme. BTW Je sais comment définir des choses comme l'association dérivée. Croyez-moi, je sais aussi comment modéliser la navigabilité dans EA ;-) Cependant, si vous avez une idée de comment mieux positionner la ligne pointillée menant de l'association à sa classe d'association, ce qui serait très utile ;-) – Ister

+0

La ligne pointillée joint au prochain segment de l'association connectée. Vous ne pouvez pas le manipuler par n'importe quel moyen. Vous ne me direz pas que c'est «Client va à l'événement» et non vice versa? –