【问题标题】:Domain Model for Simple Use case简单用例的领域模型
【发布时间】:2014-09-10 14:11:02
【问题描述】:

我正在尝试学习领域建模,现在让我们考虑一个购物车示例。让用户可以浏览产品目录并将产品添加到购物车,购买这些产品。要购买产品,他将下订单。用户可以跟踪他的订单详细信息。他可以致电客户代表了解他的订单状态。

请全面验证我的域模型。

以下是我设计的领域模型,我在表示订单和订单状态时遇到问题,正确的做法是什么 我将如何链接产品和订单。

【问题讨论】:

  • 您的询问中应该有一个问题。你为什么不确定?您已经考虑过哪些选择?
  • 这个问题有什么问题,我是 UML 的新手。
  • 这是一个怎样的问题?而是“请为我完成我的任务”。

标签: oop uml domain-model


【解决方案1】:

(概念)域模型是对在软件工程项目的分析阶段产生的问题域的独立于解决方案的描述。它可能由信息模型(通常以 UML 类图的形式)、流程模型(通常以 BPMN 图的形式)以及可能的其他类型的模型组成。

域类模型仅包含概念元素,例如 属性(可能没有数据类型)和 关联 .它没有指定属性和方法的可见性,因为可见性是一个特定于平台的概念。

您的模型在许多方面都不完整(例如,它没有描述从购物车中取出的订单行/详细信息),并且它不包含任何关联。显然,一个订单与一个客户和多个项目/产品相关联(通过其订单行)。

OrderStatus 应该建模为 enumeration,这是一个用 构造型的 UML 数据类型,Order 应该有一个 status 属性以这个枚举作为它的范围。

下面的模型可能比您想象的更通用,因为它允许从多个仓库中采购一个订单商品,并且还区分了私人客户和企业客户。

【讨论】:

  • 我对 orderstatus 作为枚举感到很困惑,我觉得 orderStatus 可以有状态枚举,而 order 可以有 orderStatus 作为参考。也许我们说的是同一件事。另一件事我已经指定了订单的详细信息如果我创建另一个带有订单详细信息的类会更好。
  • 正如我在回复中添加的那样,枚举是一种简单的数据类型,因此不需要引用/关联。您应该将类​​OrderLine 多对一关联添加到Order。购物车一经确认,购物车中的商品即成为订单行。
  • 当您有一个以 OrderStatus 作为其范围的属性/属性时,您不需要与 OrderStatus 关联。另请注意,我们不在域模型中的关联线上使用可导航箭头(可导航性是一个实现问题)。然而,我们通常用多重性来注释两个关联的结尾。请参阅我更新的答案,其中现在包含一个模型。
  • 新更新的领域模型是否有意义,我已经介绍了另一个名为 PQuantity 的实体,它将保存产品及其数量。
  • 不,这没有意义。数量不是一个实体,而是SalesOrderLine 的一个属性(参见我的答案中的图表)。它从 ShoppingCart 对象的相应属性接收其值,新的 SalesOrder 对象是从该对象创建的。
【解决方案2】:

您可以将“订单详情”作为订单和产品之间关系的关联类。看例子:

IBM example of an associative class

请注意,您的实际上是一个类图。域图显示了不同问题域的依赖关系,例如

  1. 订单履行
  2. 数据库
  3. 远程通信
  4. 系统维护

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-20
  • 1970-01-01
  • 2014-01-05
  • 1970-01-01
  • 1970-01-01
  • 2012-09-04
相关资源
最近更新 更多