这是一个大系统的小场景。 我想在类图中对此场景进行建模,然后在代码
中实现它这是书店的一个场景。有顾客和书籍 顾客可以购买书籍,按名称搜索书籍,阅读书籍
以下列方式实施的类图
1.将所有操作输出到客户类,因为客户是执行这些操作的客户
但buyBooks(),searchBook(),readBooks()
方法不负责更改客户类的状态
(这些方法不适用于客户类内部的数据)因为它违反了基本的oop原则封装。
客户可以购买,搜索,阅读1本或以上的书籍,因此关联标记为图像所示。
我在引用INTERNET
时发现很多类图以这种方式绘制2。 将所有操作放在与上述相同的客户类中。 并用三条单独的行分别标记每个协会
协会
3.此处将所有操作都放到服务类中,因为这些方法不负责改变客户,书类的状态
然后标记关联。
答案 0 :(得分:3)
在我看来,第一个或最后一个图表可以工作(一旦更正),但我倾向于第一个实现。第二个是完全错误的。
我会使用第一个,因为“客户”意味着一个人在系统中的专属目的是与您的Book类交互,特别是考虑到您的多重性值表明客户必须与至少一个相关联书课。如果客户做了更多的事情而不是与书籍互动,那么将客户对书籍所做的事情抽象为服务可能是有用的,但我不认为这是必要的。
现在,您的类图语法已关闭。箭头应该是开放的(如>
)而不是实心。另外,Book类的多重性值似乎是错误的:如果还没有购买,那么一个书籍实例可能会有零个与之关联的客户,如果有,则会有一个与之关联的客户。如果是这样,那么您在书籍末尾的多重性值应为0..1
。
最后,你的第二张图是错误的,因为关联是按类而不是按操作;你没有为每个操作建立一个关联,而是每个类别一个。