1.2.4 解释类图的每一部分
戴夫:“谢谢你给我上这个简短的UML课程。现在我明白你图中每种箭头的意思了。”
你:“我的荣幸。”
戴夫:我应该先看什么类?
你:我想你应该从Library开始。
图书馆类
Library是这个系统的根类
就代码而言,Library对象本身不做任何事情,它将一切委托给它拥有的对象。
就数据而言,Library象拥有:
- 多个Member对象
- 多个Librarian对象
- 一个Catalog对象
Librarian, Member和 User 类
图书馆员和会员,他们都来自于用户。
User 代表图书馆的一个用户。
- 在数据成员方面,它坚持最低限度的要求:它有一个ID、电子邮件和 密码(目前没有安全和加密功能)。
- 在代码方面,它可以通过login()登录。
Member类代表图书馆中的一个成员
-
它继承于用户
-
在数据成员方面,它除了用户之外,没有别的。
-
在代码方面,它可以:
a. 通过checkout()检查一本书
b. 通过returnBook()返回一本书
c. 通过block()阻止自己
d. 通过unblock()解除自己的封锁
e. 如果它通过isBlocked()被阻止,则回答。 -
它拥有多个BookLending对象
-
它使用BookItem来实现checkout()。
Librarian类代表一个图书馆员。
- 它继承于用户
- 在数据成员方面,它除了用户之外,没有别的。
- 在代码方面,它可以:
a. 封锁和解封一个成员
b. 通过getBookLendings()列出一个成员的图书借阅情况。
c. 通过addBookItem()将书籍项目添加到库中。 - 它使用Member来实现blockMember()、unblockMember()和
getBookLendings()。 - 它使用BookItem来实现checkout()。
- 它使用BookLending,以实现getBookLendings()。
Catalog类
目录类负责管理书籍
在代码方面,一个Catalog对象可以。
- 通过search()搜索书籍
- 通过addBookItem()向图书馆添加图书项目
a. 它使用Librarian来实现addBookItem。
在数据方面,一个目录拥有:
- 多个Book对象
Book类
在代码方面,一个Book对象可以:
- 在数据成员方面,我们坚持最低限度:它有一个id,和一个标题。
- 它与多个作者对象相关联(一本书可能有多个作者)。
- 它拥有多个BookItem对象,每个副本都有一个。
BookItem类
BookItem类代表一本书的副本。一本书可以有很多副本。
在数据方面,一个BookItem对象:
- 在数据成员方面,我们坚持最低限度的要求:它有一个id,和一个rackId(表示它在库中的物理位置)。
- 它拥有多个BookLending对象,每次借出图书都有一个。
在代码方面:
- 它可以通过checkout()检查出来。
1.2.5 实施阶段
在对你的图表进行了这一详细调查后,戴夫称赞了你。
戴夫:“哇!这太神奇了。”
你:“谢谢。”
戴夫:“我不知道在编码之前,人们真的会花时间把他们的设计写得如此详细。”
你:“我总是这么做。这为我在编码阶段节省了大量时间”
戴夫:“你什么时候开始编程?”
你:“等我喝完咖啡。”
你看着你的咖啡杯,它是满的(而且是冷的)。你向戴夫展示你的类图时太兴奋了,以至于忘了喝咖啡。