面向数据编程 Data-Oriented Programming [7]

1.2.4 解释类图的每一部分

戴夫:“谢谢你给我上这个简短的UML课程。现在我明白你图中每种箭头的意思了。”

你:“我的荣幸。”

戴夫:我应该先看什么类?

你:我想你应该从Library开始。

图书馆类

Library是这个系统的根类

图1.6 Library类

 
  就代码而言,Library对象本身不做任何事情,它将一切委托给它拥有的对象。
  就数据而言,Library象拥有:

  1. 多个Member对象
  2. 多个Librarian对象
  3. 一个Catalog对象

Librarian, Member和 User 类

图书馆员和会员,他们都来自于用户。

图1.7 图书馆理员和会员来自于用户

 
User 代表图书馆的一个用户。

  1. 在数据成员方面,它坚持最低限度的要求:它有一个ID、电子邮件和 密码(目前没有安全和加密功能)。
  2. 在代码方面,它可以通过login()登录。

Member类代表图书馆中的一个成员

  1. 它继承于用户

  2. 在数据成员方面,它除了用户之外,没有别的。

  3. 在代码方面,它可以:
    a. 通过checkout()检查一本书
    b. 通过returnBook()返回一本书
    c. 通过block()阻止自己
    d. 通过unblock()解除自己的封锁
    e. 如果它通过isBlocked()被阻止,则回答。

  4. 它拥有多个BookLending对象

  5. 它使用BookItem来实现checkout()。

Librarian类代表一个图书馆员。

  1. 它继承于用户
  2. 在数据成员方面,它除了用户之外,没有别的。
  3. 在代码方面,它可以:
    a. 封锁和解封一个成员
    b. 通过getBookLendings()列出一个成员的图书借阅情况。
    c. 通过addBookItem()将书籍项目添加到库中。
  4. 它使用Member来实现blockMember()、unblockMember()和
    getBookLendings()。
  5. 它使用BookItem来实现checkout()。
  6. 它使用BookLending,以实现getBookLendings()。

Catalog类
  目录类负责管理书籍

图1.8 Catalog类

 
在代码方面,一个Catalog对象可以。

  1. 通过search()搜索书籍
  2. 通过addBookItem()向图书馆添加图书项目
    a. 它使用Librarian来实现addBookItem。

在数据方面,一个目录拥有:

  1. 多个Book对象

Book类

图1.9 Book类

 
在代码方面,一个Book对象可以:

  1. 在数据成员方面,我们坚持最低限度:它有一个id,和一个标题。
  2. 它与多个作者对象相关联(一本书可能有多个作者)。
  3. 它拥有多个BookItem对象,每个副本都有一个。

BookItem类
  BookItem类代表一本书的副本。一本书可以有很多副本。

  在数据方面,一个BookItem对象:

  1. 在数据成员方面,我们坚持最低限度的要求:它有一个id,和一个rackId(表示它在库中的物理位置)。
  2. 它拥有多个BookLending对象,每次借出图书都有一个。

在代码方面:

  1. 它可以通过checkout()检查出来。
1.2.5 实施阶段

  在对你的图表进行了这一详细调查后,戴夫称赞了你。

戴夫:“哇!这太神奇了。”

你:“谢谢。”

戴夫:“我不知道在编码之前,人们真的会花时间把他们的设计写得如此详细。”

你:“我总是这么做。这为我在编码阶段节省了大量时间”

戴夫:“你什么时候开始编程?”

你:“等我喝完咖啡。”

  你看着你的咖啡杯,它是满的(而且是冷的)。你向戴夫展示你的类图时太兴奋了,以至于忘了喝咖啡。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值