使用服务 classes 绘制 UML class 图

draw UML class diagram with Service classes

这是大系统的小场景。 我想在 class 图表中对这个场景进行建模,然后在代码中实现它

这是书里的场景store.there是客户和书 客户可以买书,按名字搜索书,阅读书

class 图以下列方式实现

1.put 对客户的所有操作 class 因为客户是执行这些操作的人 但是 buyBooks(),searchBook(),readBooks() 方法不负责改变客户的状态 class (这些方法不适用于客户 class 内部的数据)因为它违反了基本的 oop 原则封装。

客户可以购买、搜索、阅读 1 本书或多本书,因此关联标记如图所示。

我在网上找了很多class图都是这样画的

2。 把所有的操作都交给客户class 同上。 并用三行单独标记每个关联

协会

3.in 此处将所有操作放在服务 class 因为这些方法不负责更改两个客户的状态,book class

然后标记关联。

- 在这些论文中,哪一个是正确的 class 图?
- 在 uml class 图表中绘制服务 classes 是否可以接受?

我认为第一个或最后一个图表都可以工作(已更正),但我倾向于第一个实现。第二个完全错误。

我会使用第一个,因为 "Customer" 暗示一个人在系统中的唯一目的是与您的书互动 class,特别是考虑到您的多重性值表明客户必须与至少一本书 class 相关联。如果客户做的事情比与书籍互动更多,那么将客户对书籍所做的事情抽象为服务可能会很有用,但我认为这里没有必要。

现在,您的 class 图表语法已关闭。箭头应该是开放的(如 >)而不是实心的。此外,您在 Book class 上的多重值似乎是错误的:如果尚未购买一本书实例,则可能有零个与之关联的客户,如果已经购买,则可能有一个与之关联的客户。如果是这样,您在书末的多重值应该是 0..1.

最后,你的第二张图是错误的,因为关联是通过class而不是通过操作;您不会为每个操作设置一个关联,而是每个 class.