案例:“图书管理系统”面向对象分析与设计例如,“图书管理系统”面向对象分析与设计大致过程如下:1.需求调查分析需求调查分析的结果一般用文字描述,必要时也可用业务流程图辅助描述。“图书管理系统”需求陈述如下:在图书管理系统中,管理员要为每个读者建立借阅账户,并給读者发放不同类别的借阅卡(借阅卡可提供卡号、读者姓名),账户内存储读者的个人信息和借阅记录信息。持有借阅卡的读者可以通过管理员(作为读者的代理人与系统交互)借阅、归还图书,不同类别的读者可借阅图书的范围、数量和期限不同,可通过互联网或图书馆内查询终端查询图书信息和个人借阅情况,以及续借图书(系统审核符合续借条件)。借阅图书时,先输入读者的借阅卡号,系统验证借阅卡的有效性和读者是否可继续借阅图书,无效则提示其原因,有效则显示读者的基本信息(包括照片),供管理员人工核对。然后输入要借阅的书号,系统查阅图书信息数据库,显示图书的基本信息,供管理员人工核对。最后提交借阅请求,若被系统接受则存储借阅纪录,并修改可借阅图书的数量。归还图书时,输入读者借阅卡号和图书号(或丢失标记号),系统验证是否有此借阅纪录以及是否超期借阅,无则提示,有则显示读者和图书的基本信息供管理员人工审核。如果有超期借阅或丢失情况,先转入过期罚款或图书丢失处理。然后提交还书请求,系统接受后删除借阅纪录,并登记并修改可借阅图书的数量。图书管理员定期或不定期对图书信息进行入库、修改、删除等图书信息管理以及注销(不外借),包括图书类别和出版社管理。2.用况健模(1)确定执行者通过对系统需求陈述的分析,可以确定系统有两个执行者:管理员和读者。简要描述如下:1)管理员:管理员按系统授权维护和使用系统不同功能,可以创建、修改、删除读者信息和图书信息即读者管理和图书管理,借阅、归还图书以及罚款等即借阅管理。2)读者:通过互联网或图书馆查询终端,查询图书信息和个人借阅信息,还可以在符合续借的条件下自己办理续借图书。(2)确定用况在确定执行者之后,结合图书管理的领域知识,进一步分析系统的需求,可以确定系统的用况有:•借阅管理:包含借书、还书(可扩展过期和丢失罚款)、续借、借阅情况查询;•读者管理:包含读者信息和读者类别管理;•图书管理:包含图书信息管理、图书类别管理、出版社管理、图书注销和图书信息查询。下面是借阅情况查询、读者信息管理、读者类别管理、图书类别管理、出版社管理和图书信息查询等用况的简要描述:1)借阅情况查询:读者通过互联网或图书查询终端登录系统后,查阅个人的所有借阅纪录。2)读者信息管理:管理员登录后,对读者详细信息进行增、删、改等维护管理。3)读者类别管理:管理员登录后,对读者类别进行增、删、改等维护管理。4)图书类别管理:管理员登录后,对图书类别进行增、删、改等维护管理。5)出版社信息管理:管理员登录后,对出版社详细信息进行增、删、改等维护管理。6)图书信息查询:读者或管理员通过互联网或图书查询终端登录后,查询所需要的图书信息。下面是借书、还书、续借、图书信息管理、图书注销等用况的详细描述:1)借书用况名称:借书参与的执行者:管理员前置条件:一个合法的管理员已经登录到这个系统事件流:A.输入读者编号;提示超期未还的借阅记录;B.输入图书编号;If选择“确定”thenIf读者状态无效或改书“已”注销或已借书数=可借书数Then给出相应提示;Else添加一条借书记录;“图书信息表”中“现有库存量”-1;“读者信息表”中“已借书数量”+1;提示执行情况;Endif清空读者、图书编号等输入数据;EndifIf选择“重新输入”then清空读者、图书编号等输入数据;EndifIf选择“退出”then返回上一级界面;Endif返回A.等待输入下一条;后置条件:如果是有效借书,在系统中保存借阅纪录,并修改图书库存量和读者借书数量。2)还书用况名称:还书参与的执行者:管理员前置条件:一个合法的管理员已经登录到这个系统事件流:A.输入读者编号;提示超期未还的借阅记录;If有超期then提示,调用“计算超期罚款金额”;EndifIf丢失then选择该书借阅记录;调用“计算丢失罚款金额”+调用“计算超期罚款金额”;EndifIf选择“确定”还书then//要先交罚款后才能还B.输入图书编号;If读者状态无效或该图书标号不在借书记录中then提示该读者借书证无效或该图书不是该读者借阅的;Else添加一条还书记录;删除该借书记录;“图书信息表”中“现有库存量”+1;“读者信息表”中“已借书数量”-1;提示执行情况;Endif清空读者、图书编号等输入数据;EndifIf选择“重新输入”then清空读者、图书编号等输入数据;EndifIf选择“退出”then返回上一级界面;Endif返回A.等待输入下一条;后置条件:如果是有效还书,在系统中删除借阅纪录,并修改图书库存量和读者借书数量。3)续借用况名称:续借参与的执行者:管理员、读者前置条件:一个合法的管理员或读者已经登录到这个系统事件流:A.输入读者编号;提示超期未还的借阅记录;If有超期then提示,调用“计算超期罚款金额”;Endif选择该书借阅记录;EndifIf选择“确定”续借thenIf该图书已超期或该图书续借次数=可续借次数then提示该读者该图书已超期或该图书续借次数可续借次数,不能续借;Else修改该书借阅记录中的“应归还日期”;图书续借次数+1;提示执行情况;Endif清空读者、图书编号等输入数据;EndifIf选择“重新输入”then清空读者书编号等输入数据;EndifIf选择“退出”then返回上一级界面;Endif返回A.等待输入下一条;后置条件:如果是有效续借,在系统中修改借阅纪录。4)图书信息管理用况名称:图书信息管理参与的执行者:管理员前置条件:一个合法的管理员已经登录到这个系统事件流:(参见附录D“图书管理系统软件设计规格说明书”中“书籍信息管理”模块详细设计,这里略)后置条件:如果是有效操纵,在系统中增加、修改、删除图书信息纪录。5)图书注销用况名称:图书注销参与的执行者:管理员前置条件:一个合法的管理员已经登录到这个系统事件流:A.查询要注销的图书信息;B.选择要注销的图书信息记录;If选择“确定”注销thenIf该书有借阅记录then提示该书有人已借阅,不能注销;Else添加一条注销记录;“图书信息表”中设定该书“已”注销;提示执行情况;EndifEndifIf选择“退出”then返回上一级界面;Endif返回A.等待选择下一条或重新查询;后置条件:如果是有效注销,在系统中保存注销纪录,并对图书信息做标记。(3)确定用况之间的关系确定执行者和用况之后,进一步确定用况之间的关系,如图7-35所示。3.静态建模首先使用本章介绍的CRC或OMT技术,通过寻找系统需求陈述中的名词,结合图书管理的领域知识,首先给出候选的对象类,经过筛选、审查,可确定“图书管理系统”的类有:读者、图书、借阅记录、图书注销记录、读者类别、图书类别、出版社等。然后,经过标识责任、标识协作者和复审,定义类的属性、操作和类之间的关系。这里仅以“读者”类为例列出该类的属性和操作,其它类的属性可参阅附录D“图书管理系统软件设计规格说明书”中4.2“数据表结构”,操作与“读者”类的类似。图7-35“图书管理系统“用况图图书管理系统图书信息管理续续借书还书借阅情况查询《包含》《包含》《包含》《包含》丢失罚款读者管理借阅管理图书类别管理管理员过期罚款款《扩展》《扩展》读者出版社信息管理图书信息查询读者信息管理《包含》《包含》读者类别管理图书管理《包含》《包含》《包含》《包含》“读者”类•私有属性读者编号(借书证号码和用户名与此同):文本读者姓名:文本读者类别编号:文本读者性别:文本出生日期:时间/日期读者状态:文本办证日期:时间/日期已借图书数量:数值证件名称:文本证件号码:文本读者单位:文本联系地址:文本联系电话:文本EMAIL:文本用户密码:文本办证操作员:文本备注:文本•公共操作永久写入读者信息永久读取读者信息新增读者删除读者修改读者信息获取读者信息查找读者信息返回借阅数量类之间的关系如图7-36所示。借阅记录图书图书类别图书注销记录读者类别读者图7-36“图书管理系统”类图出版社10..*0..10..1**0..*1..*4.系统设计“图书管理系统”系统设计用包图描述,如图7-37所示。5.对象设计对象设计主要有两个任务:一是对类的属性和操作的实现细节进行设计。如上面“读者”类的属性“联系电话”有多个时,决定用一个链表或数组来存放,也可能需要增加属性和操作,如“读者”类中增加属性“相片”,操作增加“打印与发生过期通知书”,而后设计每一个操作的算法。二是分别从人机交互、数据管理、任务管理和问题域方面考虑,以实现的角度添加一些类,或优化类的结构。如从数据管理方面,需要添加一个“永久数据”类作为需要永久保存数据类的父类,承担读写数据库的责任;从人机交互方面,需要添加一个“对话框”类(其父类是“窗口”类)来实现人机交互的功能,则图7-36可改进为图7-38。图书管理系统图7-37“图书管理系统”包图查询与续借子系统借阅管理子系统信息管理子系统图书信息查询图书类别管理图书注销续借图书信息管理借书还书读者信息管理读者类别管理出版社信息管理借阅情况查询借阅记录图书图书类别图书注销记录读者类别读者图7-38“图书管理系统”设计后类图出版社10..*0..10..1**0..*1..*对话框永久数据窗口6.动态建模必要时,可针对系统的某一功能画出完成此功能的对象之间交互消息的顺序图,如“借书”功能的消息交互顺序如图7-39所示。必要时,可针对系统的某一类对象画出表示该对象在系统中的状态变化过程,如“图书”对象的状态变化如图7-40所示。归还借阅丢失或严重损坏增加一次借阅计数已外借Out=1Out=0可外借图7-40“图书”对象状态图图7-39“借书”顺序图读者借阅记录图书1:获取读者信息7:获取图书信息对话框2:显示读者信息8:显示图书信息4:显示借阅记录3:查找某个读者借阅记录5:判定某个读者能否继续借阅6:提示能否继续借阅9:添加借阅记录10:显示借阅记录注销激活(取消注销)不外借7.物理建模“图书管理系统”物理结点分布如图7-41所示。借阅管理子系统信息管理子系统局域网服务器数据服务器互联网图7-41“图书管理系统”部署图查询与续借子系统互联网服务器LANLAN图书馆PC终端读者PC终端LANLAN