Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 正确的域模型是什么?_Oop_Design Patterns_Uml_Domain Model - Fatal编程技术网

Oop 正确的域模型是什么?

Oop 正确的域模型是什么?,oop,design-patterns,uml,domain-model,Oop,Design Patterns,Uml,Domain Model,我是面向对象设计模式的新手。我对域模型有一个基本概念。然而,我陷入了以下问题。问题是我有一个包含事件和客户的系统(都是1…*)。此外,事件还包含包。允许用户预订事件。然而,他必须通过预订包含在活动中的套餐来实现这一点。给定情况的正确域模型应该是什么。我对类似的问题做了很多研究,但没有找到合适的答案 我猜: (一) 在这张图片中,客户可以预订活动,但我对此不确定,因为客户正在预订活动中包含的套餐。我应该为给定系统选择此域模型吗?这是直观的,因为它允许客户预订活动 (二) 在此图像中,域模型表示系统

我是面向对象设计模式的新手。我对域模型有一个基本概念。然而,我陷入了以下问题。问题是我有一个包含事件和客户的系统(都是1…*)。此外,事件还包含包。允许用户预订事件。然而,他必须通过预订包含在活动中的套餐来实现这一点。给定情况的正确域模型应该是什么。我对类似的问题做了很多研究,但没有找到合适的答案

我猜: (一)

在这张图片中,客户可以预订活动,但我对此不确定,因为客户正在预订活动中包含的套餐。我应该为给定系统选择此域模型吗?这是直观的,因为它允许客户预订活动

(二)

在此图像中,域模型表示系统的结构。但是,客户应仅通过活动接触软件包。因此,我不确定这个领域模型。当包裹包含在活动中时,客户如何预订包裹


请建议哪个域模型是正确的。我是一个初学者,所以请提供一个很好的解释。谢谢你帮助我

首先,没有明确的答案。通常,您可以用几种不同的方式进行创建,并获得良好的效果

第二,在我看来,两者都包含关系应该是聚合。事件到系统(可能)是一个复合聚合,而包到事件可以是复合的(如果特定的包只针对一个事件),也可以是共享的(如果相同的包通过各种事件可用)

现在进入主要问题。如果事件和包之间的关系是一种组合(复合聚合),那么您可以将图书关系建模为客户和包之间的关联。那么这个事件是唯一可识别的。您还可以扩展模型,向事件添加一个派生关系(来自书本)

以下是一个示例(请注意,描述这是一个派生关联的/符号):

另一个对事件和包之间的复合聚合和共享聚合都有效的选项是对客户和事件之间的Book关系建模,但将其建模为关联类。然后你有一个类(书)来描述这个关联,这个类可以有一个从包到包的关系。 在这种情况下,您的模型将如下所示:


我敢打赌,你还可以找到其他方法来模拟你的问题,这些方法仍然有效,并且显示了你迄今为止提供的所有信息。

首先,没有明确的答案。通常,您可以用几种不同的方式进行创建,并获得良好的效果

第二,在我看来,两者都包含关系应该是聚合。事件到系统(可能)是一个复合聚合,而包到事件可以是复合的(如果特定的包只针对一个事件),也可以是共享的(如果相同的包通过各种事件可用)

现在进入主要问题。如果事件和包之间的关系是一种组合(复合聚合),那么您可以将图书关系建模为客户和包之间的关联。那么这个事件是唯一可识别的。您还可以扩展模型,向事件添加一个派生关系(来自书本)

以下是一个示例(请注意,描述这是一个派生关联的/符号):

另一个对事件和包之间的复合聚合和共享聚合都有效的选项是对客户和事件之间的Book关系建模,但将其建模为关联类。然后你有一个类(书)来描述这个关联,这个类可以有一个从包到包的关系。 在这种情况下,您的模型将如下所示:


我敢打赌,您还可以找到其他仍然有效的问题建模方法,并显示您迄今为止提供的所有信息。

请提供此问题的答案。我不能不回答这个问题就继续下去。谢谢关于你的模型1,我想说几句。不要将关联名称放在矩形中,因为它不符合UML规范,并且容易混淆。类名应该是单数形式,而不是复数形式。请注意,这是一个社区运行页面。你可能会在5分钟或5周内收到一个答案,在这里收到一个答案仍然很好。请避免急于求成。请回答这个问题。我不能不回答这个问题就继续下去。谢谢关于你的模型1,我想说几句。不要将关联名称放在矩形中,因为它不符合UML规范,并且容易混淆。类名应该是单数形式,而不是复数形式。请注意,这是一个社区运行页面。你可能会在5分钟或5周内收到一个答案,在这里收到一个答案仍然很好。请避免急于求成。您可以通过添加连接器标签的阅读方向来改进图表。在EA中,右键单击名称(例如“转到”),然后选择方向/到(如果合适)。@ThomasKilian我知道,但我不是故意这样做的。事实上,我不知道图表中关系的精确可导航性。顺便说一句,我知道如何设置派生关联之类的东西。相信我,我也知道如何在EA中建模导航能力;-)但是,如果您知道如何更好地定位从关联到其关联类的虚线,这将非常有帮助;-)虚线将连接到所连接关联的下一段。你无论如何也不能操纵它。你不会告诉我这是“客户参加活动”,反之亦然?对不起,我错了。当你谈论阅读方向时,我想到了适航性。你当然是对的。然而,我遵循霍华德·波德斯瓦的建议,只有在不清楚的情况下才使用阅读指导