列表

详情


某商校拟开发一套图书馆管理系统,在系统分析阶段,系统分析师整理的核心业务流程与需求如下:
系统为每个读者建立一个账户,并给读者发放读者证(包含读者证号、读者姓名),账户中存储读者的个人信息、借阅信息以及预订信息等,挂有读者证可以借阅图书、返还图书、查询图书信息、预订图书、取消预订等。
在借阅图书时,需要输入读者所借阅的图书名、ISBN号,然后输入读者的读者证号,完成后提交系统,以进行读者验证,如果读者有效,借阅请求被接受,系统查询读者所借阅的图书是否存在,若存在,则读者可借出图书,系统记录借阅记录;如果读者所借的图书已被借出,读者还可预订该图书。读者如期还书后,系统清除借阅记录,否则需缴纳罚金,读者还可以选择续借图书。同时,以上部分操作还需要系统管理员和图书管理员参与。

【问题1】(6分)
采用面向对象方法进行软件系统分析与设计时,一项重要的工作是进行类的分析与设计。请用200字以内的文字说明分析类图与设计类图的差异。
【问题2】(11分)
设计类图的首要工作是进行类的识别与分类,该工作可分为两个阶段“”首先,采用识别与筛选法,对需求分析文档进行分析,保留系统的重要概念与属性,删除不正确或冗余的内容;其次,将识别出来的类按照边界类、实体类和控制类等三种类型进行分类。
请用200字以内的文字对边界类,实体类和控制类的作用进行简要解释,并对下面给出的候选项进行识别与筛选,将合适的候选项编号填入表2-1中的(1)~(3)空白处, 完成类的识别与分类工作。
表2-1图书管理系统类识别与分类表格
 
候选项:

a)系统管理员
b)图书管理员
c)读者
d)读者证
e)账户
f)图书
g)借阅
h)归还
i)预订
j)罚金
K)续借
I)借阅记录

【问题3】(8分)
根据类之间的相关性特点,可以将类之间的关系分为组合(composition),继承(inheritance),关联 (association),聚合(aggregation)和依赖 (dependency)等5种, 请用300字以内的文字分别对这5种关系的内涵进行叙述,并从封装性、动态组合和创建对象的方便性三个方面对组合和继承关系的优缺点进行比较。

参考答案:

【问题1】(6分)
分析阶段的类图主要是从业务领域获取信息的,在描述上更多使用了业务领域的语言和词汇。
设计阶段的类图是从编程实现角度来设计类图的,更多的是考虑类编码的实现。
【问题2】(11分)
(1) d)读者证
(2)a)系统管理员 b)图书管理员 c)读者
    e)账户 f)图书
j)罚金 I)借阅记录
(3)g)借阅 h)归还 i)预订 k)续借

【问题3】(8分)
封装性:
组合:不破坏封装性,整体类与局部类之间松耦合,相对独立。
继承:破坏封装性,子类与父类紧耦合,子类缺独立性。
动态组合:
组合:支持动态组合。
继承:不支持动态组合。
创建对象:
组合:创建整体类时,需要创建所有局部类的对象。
继承:创建子类对象时,不需要创建父类对象。

(1)关联关系。关联提供了不同类的对象之间的结构关系,它在一段时间内将多个类的实例连接在一起。
(2)依赖关系。两个类A和B,如果B的变化可能会引起A的变化,则称类A依赖于类B。依赖可以由各种原因引起。
(3)继承关系。本质上就是泛化关系。继承是在某个类的层次关联中不同的类共享属性和方法的一种机制。父类与子类的关系是一般与特殊的关系,一个父类可以有多个子类,这些子类都是父类的特例。
(4)聚合关系。表示类之间的整体与部分的关系,其含义是“部分”可能同时属于多个“整体”,“部分”与“整体”的生命周期可以不相同。
(5)组合关系。表示类之间的整体与部分的关系。其中的“部分”只能属于一个“整体”,“部分”与“整体”的生命周期相同,“部分”随着“整体”的创建而创建,也随着“整体”的消亡而消亡。

详细解析:

常见的类关系包括:
(1)关联关系。关联提供了不同类的对象之间的结构关系,它在一段时间内将多个类的实例连接在一起。关联体现的是对象实例之间的关系,而不表示两个类之间的关系。其余的关系涉及类元自身的描述,而不是它们的实例。
(2)依赖关系。两个类A和B,如果B的变化可能会引起A的变化,则称类A依赖于类B。依赖可以由各种原因引起,例如,一个类向另一个类发送消息、一个类是另一个类的数据成员、一个类是另一个类的某个操作参数等。
(3)泛化关系。泛化关系描述了一般事物与该事物中的特殊种类之间的关系,也就是父类与子类之间的关系。继承关系是泛化关系的反关系,也就是说,子类继承了父类,而父类则是子类的泛化。
(4)继承关系。本质上就是泛化关系。继承是在某个类的层次关联中不同的类共享属性和方法的一种机制。父类与子类的关系是一般与特殊的关系,一个父类可以有多个子类,这些子类都是父类的特例。
(5)聚合关系。表示类之间的整体与部分的关系,其含义是“部分”可能同时属于多个“整体”,“部分”与“整体”的生命周期可以不相同。例如,汽车和车轮就是聚合关系,车子坏了,车轮还可以用;车轮坏了,可以再换一个。
(6)组合关系。表示类之间的整体与部分的关系。与聚合关系的区别在于,组合关系中的“部分”只能属于一个“整体”,“部分”与“整体”的生命周期相同,“部分”随着“整体”的创建而创建,也随着“整体”的消亡而消亡。例如,一个公司包含多个部门,它们之间的关系就是组合关系。公司一旦倒闭,也就无所谓部门了。
(7)实现关系。实现关系将说明和实现联系起来。接口是对行为而非实现的说明,而类中则包含了实现的结构。一个或多个类可以实现一个接口,而每个类分别实现接口中的操作。

上一题