问题 问答题


阅读下列说明和图,回答问题1至问题3。
【说明】
某图书管理系统的主要功能如下:
1.图书管理系统的资源目录中记录着所有可供读者借阅的资源,每项资源都有一个唯一的索引号。系统需登记每项资源的名称、出版时间和资源状态(可借阅或已借出)。
2.资源可以分为两类:图书和唱片。对于图书,系统还需登记作者和页数;对于唱片,还需登记演唱者和介质类型(CD或者磁带)。
3.读者信息保存在图书管理系统的读者信息数据库中,记录的信息包括:读者的识别码和读者姓名。系统为每个读者创建了一个借书记录文件,用来保存读者所借资源的相关信息。
现采用面向对象方法开发该图书管理系统。识别类是面向对象分析的第一步。比较常用的识别类的方法是寻找问题描述中的名词,再根据相关规则从这些名词中删除不可能成为类的名词,最终得到构成该系统的类。表10-4给出了[说明]中出现的所有名词。
                           表10-4

图书管理系统资源目录读者资源
索引号系统名称出版时间
资源状态图书唱片作者
页数演唱者介质类型CD
磁带读者信息读者信息数据库识别码
姓名借书记录文件信息
  通过对表10-4中的名词进行分析,最终得到了图10-4所示的UML类图(类的说明如表10-5所示)。
                           表10-5
类名说明
 LibrarySystem 图书管理系统
 BorrowerDB 保存读者信息的数据库
 CatalogItem 资源目录中保存的每项资源
 Borrower 读者
 BorrowerItems 为每个读者创建的借书记录文件

【问题3】
识别关联的多重度是面向对象建模过程中的一个重要步骤。根据[说明]中给出的描述,完成图10-4中的(1)~(6)。

答案

参考答案:

解析:(1)1 (2)0..* (3)1 (4)0..* (5)1 (6)1或者0..1

[分析]: 本题主要考查面向对象分析中类图的设计,涉及到类的识别、属性的识别以及多重度的计算。 [问题1]要求的是将所有的类找出来。由于[说明]中给出了识别类的规则,并给出了所有的候选类和一张不完整的类图,从而为我们提供了大量的提示信息。从类图可以看出,这里有一个继承结构,确实这两个类恰好是这个继承结构的子类。根据[说明]中提供信息,我们发现只有“资源”、“图书”和“唱片”这三者之间存在着继承结构所描述的“一般—特殊”关系。因为“图书”和“唱片”都是图书管理系统中的资源,因此具有共性 (索引号、名称、出版时间、资源状态);而这两者又是两种完全不同的事物,所以有着各自特有的性质。同时,这三者又都在候选类集合中。所以可以断定(b)、(c)处要填的类就是“唱片”和“图书”。这里连这三个类的属性也可以完全确定了。类CatalogItem描述的是共性,所以它的属性是索引号、名称、出版时间、资源状态。由[说明]中第2条可以确定,“图书”的属性是作者和页数;“唱片”的属性是演唱者和介质类型。 下面需要确定(a)处的类到底是什么从[说明]中的第1条和表10-5可以看出, CatalogItem表示的是“资源目录保存的每项资源”,这是集合(资源目录)与其中的元素的概念。所以(a)处的类应该是“资源目录”一既然明确这里是集合的概念,(1)和 (2)处的多重度也可以确定了。CatalogItem表示的是部分,所以(1)处应填1,(2)处应填1..*(0..*也可以)。 类似的,BorrowerDB与Borrower之间也具有相似的关系。因为数据库中可以保存多个读者的信息。因此(3)处填1,(4)处填1..*(0..*也可以)。系统为每个读者都创建了借书记录文件,所以(5)处填1,(6)填1(0..1也可以)。

填空题
单项选择题