1第第77章面向对象分析与设计范章面向对象分析与设计范例例7.1系统需求获取7.1.1案例背景介绍某学校的图书馆目前仍然在使用传统卡片管理着所有的图书和读者信息,但随着图书和读者数量的不断增加,图书馆工作人员的工作量也越来越大,而且还经常出现管理混乱的情况,比如书明明就放在馆中,但是却查找不到等等问题。为了提高工作效率和管理水平,学校的领导经研究决定,在采用开架借阅的基础上利用现代技术手段对图书馆进行管理。为此,学校委托软件学院组织计算机教师开发一套图书馆信息管理系统。27.1.2需求获取1.用户访谈2.初始需求文档的形成37.27.2分析问题领域分析问题领域7.2.1高层用例识别1.识别参与者借阅者,图书管理员2.识别用例借书,还书,预定书刊,取消预定,维护借阅者信息,维护书刊信息维护物理书刊信息,登录,3.识别角色及用例间的关系433.识别角色及用例间的关系.识别角色及用例间的关系533.识别角色及用例间的关系.识别角色及用例间的关系67.2.27.2.2用例分析用例分析一般先使用专门的文档页对用例进行说明;1.需求理解2.事件描述3.活动框图77.37.3静态建模静态建模7.3.1确定对象(1)借阅者(Borrower)(2)书刊(Title)(3)物理书刊(Book)(4)借阅记录(Loan)(5)预定记录(Reservaion)另外,还可以抽象出代表持久性的父类:类OID和类Persistent。它们实现了与数据库有关的表示和操作。(6)类Persistent(7)类OID87.3.2描述对象的属性7.3.3描述对象之间的关联(1)Title类与BorrowerInformation类的关联(2)Title类与Book类的关联(3)Title类与BookTitle、MagazineTitle类的关联(4)Book类与BorrowerInformation类的关联9(1)Title(1)Title类与类与BorrowerInformatioBorrowerInformationn类的关联类的关联10(2)Title(2)Title类与类与BookBook类的关联类的关联标题和书目的关联是一种特殊的关联形式:聚合关系。两者是包容的关系,是一种强关联。11(3)Title(3)Title类与类与BookTitleBookTitle、、MagMagazineTitleazineTitle类的关联类的关联图书和杂志都只是标题的一种,它们现在唯一的区别只是对出借时间的限制不同。显而易见,Title类与BookTitle、MagazineTitle类之间的关联也是一种特殊的关联形式:继承关系。12(4)Book(4)Book类与类与BorrowerInformBorrowerInformationation类的关联类的关联每个借书者可以借阅多个书目,每个书目同时只能被一个借书者借阅。Book类与BorrowerInformation类的关联是一般性关联137.2.27.2.2用例分析用例分析建立初始用例模型,只是完成了系统需求分析的一部分。要实际建立系统,针对每个系统用例还需要更具体的细节,即用例的详细流程。每个用例是一组场景(Scenario)的集合,而每个场景又是一个步骤序列。这些步骤在用例模型中并没有表现出来。如下图14如使用注释来说明这些用例,会如使用注释来说明这些用例,会影响图的简洁和清晰。影响图的简洁和清晰。15解决办法:1文本框图:一般使用专门的文档页对用例进行说明,在文档中主要描述下列内容:●发起用例的参与者;●用例的前置条件;●场景中的详细步骤;●场景完成后的后置条件;●用例的参与者。还可以列出场景的假设条件和简短的场景描述2活动框图3举例说明:如“读者借书”用例的两种描述167.2.27.2.2用例分析用例分析--11.需求理解.需求理解第二次会议议题:导出和分析每个用例。与会人员:包括系统分析员、一名图书馆管理员和一名读者。目的:详细了解系统每一个功能的操作流程和步骤图书馆管理员:已注册的用户。根据用户名和要借的书名查找图书。如果找不到,则没有这本书;或者我查看一下该书的借阅记录,看其所有书目是否全部借出,如果没有全部借出,则取一本给借书者。如果书全部借出,这时候应该询问借书者是否预订该书在书借出后,要对图书和借书者分别进行登记。另外,如果预定者借了这本书,还要取消预订。177.2.27.2.2用例分析用例分析--22.事件描述.事件描述根据上述会谈记录,我们描述“借书”用例如下。用例叙述:管理员将图书借给借书者并进行登记。1)假设条件:借书者信息已经...