首页 > 解决方案 > 关于库的UML类图的问题

问题描述

这是一个关于我的 UML 课程作业的简单问题,我不确定我做了什么。你能帮我纠正一下吗,我将非常感谢你的建议:

练习是为图书馆系统设计一个类结构。它应该满足这些要求:

  1. 有两种类型的用户 - 未成年人和成年人。
  2. 使用他们的全名和学生证来识别未成年用户。
  3. 成人用户通过使用他们的全名和身份证来识别。
  4. 图书馆包含书籍。
  5. 每本书都有基本信息(书名、作者等)。
  6. 用户最多可以同时借4本书。
  7. 每个用户都有以前借过的书的历史记录(以及所有日期)

这是我制作的 UML 图:

在此处输入图像描述

标签: javaumlclass-diagram

解决方案


乍一看,该图与叙述相对应,并带有一些注释:

  • 该类Borrow可以称为BorrowedHistory;出于不同目的在同一张图上放置两个borrow是混淆的根源
  • 这个类需要所有的日期:借用的开始和借用的回报。
  • 该协会borrow显示,在给定的时刻最多可以借 4 本书。但最小值应为 0(没有图书馆用户必须始终拥有一本书)。相反,并非所有书籍都在某个时刻被借阅:所以它是 0..1

现在这张图提出了一些问题:

  • 当前借阅的书是否已经出现在历史记录中,归还日期为空?
  • 如果没有,我们如何跟踪借款开始日期。

我没有按照你的课程,所以我不知道老师的期望。但这是我建模的方式:

  • borrow我使用了与关联类的多对多关联
  • 历史信息将在关联类中
  • 借用最多四本书的限制将带有约束条件。

叙述中还包含另一个问题:未成年用户何时成年?您的实现关系意味着同一个人将存在两个不同的用户(新成人会丢失历史记录)。

出于这个原因,我建议使用组合而不是继承:创建user一个完整的类,用一个组合Identification,然后创建两个具体的类adultIdentificationunderageIdentificztion. 因此,当未成年用户成年时,您可以保留用户历史记录并仅更改识别方式:-)


推荐阅读