使用Service类绘制UML类图

时间:2018-05-10 06:03:02

标签: oop uml behavior ooad

这是一个大系统的小场景。 我想在类图中对此场景进行建模,然后在代码

中实现它

这是书店的一个场景。有顾客和书籍 顾客可以购买书籍,按名称搜索书籍,阅读书籍

以下列方式实施的类图

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

客户可以购买,搜索,阅读1本或以上的书籍,因此关联标记为图像所示。

我在引用INTERNET

时发现很多类图以这种方式绘制

enter image description here

2。 将所有操作放在与上述相同的客户类中。 并用三条单独的行分别标记每个协会

协会

  • 顾客可以购买一本或多本书
  • 客户可以搜索一本或多本书
  • 客户可以阅读一本或多本书

enter image description here

3.此处将所有操作都放到服务类中,因为这些方法不负责改变客户,书类的状态

然后标记关联。

enter image description here   - 哪一个是正确的类图?   - 在uml类图中绘制服务类是否可以接受?

1 个答案:

答案 0 :(得分:3)

在我看来,第一个或最后一个图表可以工作(一旦更正),但我倾向于第一个实现。第二个是完全错误的。

我会使用第一个,因为“客户”意味着一个人在系统中的专属目的是与您的Book类交互,特别是考虑到您的多重性值表明客户必须与至少一个相关联书课。如果客户做了更多的事情而不是与书籍互动,那么将客户对书籍所做的事情抽象为服务可能是有用的,但我不认为这是必要的。

现在,您的类图语法已关闭。箭头应该是开放的(如>)而不是实心。另外,Book类的多重性值似乎是错误的:如果还没有购买,那么一个书籍实例可能会有零个与之关联的客户,如果有,则会有一个与之关联的客户。如果是这样,那么您在书籍末尾的多重性值应为0..1

最后,你的第二张图是错误的,因为关联是按类而不是按操作;你没有为每个操作建立一个关联,而是每个类别一个。