1、软件水平考试(中级)软件设计师上午(基础知识)试题章节练习试卷 9及答案与解析 1 在 C+语言中,若类 C中定义了一个方法 int (int a, int b),那么方法 (1)不能与该方法同时存在于类 C中。 ( A) int f(int x, int y) ( B) int f(float a, int b) ( C) float f( int x, float y) ( D) int f(int x, float y) 2 下列关于一个类的静态成员的描述中,不正确的是 (5)。 ( A)该类的对象共享其静态成员变量的值 ( B)静态成员变量可被该类的所有方法访问 ( C)该类的静态方法
2、只能访问该类的静态成员变量 ( D)该类的静态数据成员变量的值不可修改 3 若对象 A可以给对象 B发送消息,那么 (6)。 ( A)对象 B可以看见对象 A ( B)对象 A可看见对象 B ( C)对象 A, B相互不可见 ( D)对象 A, B相互可见 4 类描述了一组对象共同的特性,下列叙述中正确的是 (7)。 ( A)类本身不能具有变量 ( B)对象具有类定义的所有变量的一份拷贝 ( C)对象间不能共享类定义的变量 ( D)可通过类名访问静态变量 (类变 量 ) 5 (12)表示了对象间 “is a”的关系。 ( A)组合 ( B)引用 ( C)聚合 ( D)继承 6 面向对象的测试可
3、分为四个层次,按照由低到高的顺序,这四个层次是 (13)。 ( A)类层 模板层 系统层 算法层 ( B)算法层 类层 模板层 系统层 ( C)算法层 模板层 类层 系统层 ( D)类层 系统层 模板层 算法层 7 下面关于面向对象方法中消息的叙述,不正确的是 (14)。 ( A)键盘、鼠标、通信端口、网络等设备一有变化,就会产生消息 ( B)操作系 统不断向应用程序发送消息,但应用程序不能向操作系统发送消息 ( C)应用程序之间可以相互发送消息 ( D)发送与接收消息的通信机制与传统的子程序调用机制不同 8 面向对象技术中,对象是类的实例。对象有三种成分: (15)、属性和方法 (或操作 )
4、。 ( A)标识 ( B)规则 ( C)封装 ( D)消息 9 下列叙述中正确的是 (19)。 ( A)面向对象程序设计语言都不支持过程化的程序设计 ( B)面向对象系统只可采用面向对象程序设计语言实现 ( C)某些过程化程序设计语言也可实现面向对象系统 ( D)面 向对象程序设计语言不支持对成员变量的直接访问 10 在关于类的实例化的描述中,正确的是 (20)。 ( A)同一个类的对象具有不同的静态数据成员值 ( B)不同的类的对象具有相同的静态数据成员值 ( C)同一个类的对象具有不同的对象自身引用 (this)值 ( D)不同的类的对象具有不同的对象自身引用 (this)值 11 类的实
5、例化过程是一种实例的合成过程,而不仅仅是根据单个类型进行的空间分配、初始化和绑定。指导编译程序进行这种合成的是 (23)。 ( A)类层次结构 ( B)实例的个数 ( C)多态的种 类 ( D)每个实例的初始状态 12 重置的基本思想是通过 (24)机制的支持,使得子类在继承父类界面定义的前提下,用适合于自己要求的实现去置换父类中的相应实现。 ( A)静态绑定 ( B)对象引用 ( C)类型匹配 ( D)动态绑定 13 对于如图 10-2所示的 UML类图,正确的描述是 (28)。 ( A)类 B的实例中包含了对类 C的实例的引用 ( B)类 A的实例中包含了对类 B的实例的引用 ( C)类
6、A的实例中包含了对类 C的实例的引用 ( D)类 B的实例中包含了对类 A的实例的引用 14 UML中关联 的多重度是指 (29)。 ( A)一个类有多少个方法被另一个类调用 ( B)一个类的实例能够与另一个类的多少个实例相关联 ( C)一个类的某个方法被另一个类调用的次数 ( D)两个类所具有的相同的方法和属性 15 已知 3个类 A, B和 C,其中类 A由类 B的一个实例和类 C的 1个或多个实例构成。能够正确表示类 A, B和 C之间关系的 UML类图是 (30)。 ( A) ( B) ( C) ( D) 16 在面向对象软件开发过程中,采用设计模式 (44)。 ( A)允许在非面向对
7、象程序设计语言中使用面向对象的概念 ( B)以复用成功的设计和体系结构 ( C)以减少设计过程创建的类的个数 ( D)以保证程序的运行速度达到最优值 17 以下关于单身模式 (Singleton)的描述中,正确的是 (45)。 ( A)它描述了只有一个方法的类的集合 ( B)它能够保证一个类只产生一个惟一的实例 ( C)它描述了只有一个属性的类的集合 ( D)它能够保证一个类的方法只能被一个惟一的类调用 18 在 MVC(模型 /视图腔制器 )模式中,视图部分描述的是 (46)。 ( A)将应用问题域中包含的抽象领域知识呈现给用户的方式 ( B)应用问题域中所包含的抽象类 ( C)用户界面对用
8、户输入的响应方式 ( D)应用问题域中包含的抽象领域知识 19 简单无向图的邻接矩阵是对称的,可以对其进行压缩存储。若无向图 G有 n个节点,其邻接矩阵为 A1n, 1n,且压缩存储在 B1k中,则 k的值至少为(30)。若按行压缩存储对称矩阵的上三角元素,则当 n等于 10时,边 (V6, V3)的信息存储在 B(31)中。 ( A) n(n+1)/2 ( B) n2/2 ( C) (n-1)(n+1)/2 ( D) n(n-1)/2 ( A) 18 ( B) 19 ( C) 20 ( D) 21 21 为在状态空间树中 (34),可以利用 LC-检索 (Least Cost Search)
9、快速找到一个答案节点。在进行 LC-检索时,为避免算法过分偏向于作纵深检查,应该 (35)。 ( A)找出任一个答案节点 ( B)找出所有的答案节点 ( C)找出最优的答案节点 ( D)进行遍历 ( A)使用精确的成本函数 c(.)来作 LC-检索 ( B)使用广度优先检索 ( C)使用深度优先检索 ( D)进行遍历 23 己知 AOE网中顶点 v1 v7分别表示 7个事件,弧 a1 a10分别 表示 10个活动,弧上的数值表示每个活动花费的时间,如图 8-9所示。那么,该网的关键路径的长度为 (40),活动 a6的松弛时间 (活动的最迟开始时间 活动的最早开始时间 )为 (41)。 ( A)
10、 7 ( B) 9 ( C) 10 ( D) 11 ( A) 3 ( B) 2 ( C) 1 ( D) 0 25 类比二分搜索算法,设计 k分搜索算法 (k为大于 2的整数 )如下:首先检查 n/k处 (n为被搜索集合的元素个数 )的元素是否等于要搜索的值,然后检查 2n/k处的元素 这样,或者找到要搜索的元素,或者把集合缩小到原来的 1/k;如果 未找到要搜索的元素,则继续在得到的集合上进行 k分搜索;如此进行,直到找到要搜索的元素或搜索失败。此 k分搜索算法在最坏情况下搜索成功的时间复杂度为 (53),在最好情况下搜索失败的时间复杂度为 (54)。 ( A) O(logn) ( B) O(
11、nlogn) ( C) O(logkn) ( D) O(nlogkn) ( A) O(logn) ( B) O(nlogn) ( C) O(logkn) ( D) O(nlogkn) 一、主观题 27 阅读下列说明及 UML类图,回答问题 1、问题 2和问题 3。 【说明】 某客户信息管理系 统中保存着两类客户的信息: (1)个人客户。对于这类客户,系统保存了其客户标识 (由系统生成 )和基本信息 (包括姓名、住宅电话和 E-mail)。 (2)集团客户。集团客户可以创建和管理自己的若干名联系人。对于这类客户,系统除了保存其客户标识 (由系统生成 )之外,也保存了其联系人的信息。联系人的信息包
12、括姓名、住宅电话、 E-mail、办公电话及职位。 该系统除了可以保存客户信息之外,还具有以下功能: 向系统中添加客户 (addCustomer)。 根据给定的客户标识,在系统中查找该客户 (getCustomer)。 根据给定的客户标识,从系统中删除该客户(removeCustomer)。 创建新的联系人 (addContact)。 在系统中查找指定的联系人 (getComact)。 从系统中删除指定的联系人 (removeContact)。 该系统采用面向对象方法进行开发。在面向对象分析阶段,根据上述描述,得到如表 3-1所示的类。描述该客户信息管理系统的 UML类图如图 3-1所示。27
13、 请使用说明中的术语,给出图 3-1中类 Customer和类 Person的属性。 28 识别关联的多重度是面向对象建模过程中 的一个重要步骤。根据说明中给出的描述,完成图中的 (1) (6)。 29 根据说明中的叙述,抽象出如表 3-2所示的方法,请指出图 3-1中的类 CustomerInformafionSystem和 InstitutionalCustomer应分别具有其中的哪些方法。30 阅读下列说明和图,回答问题 1至问题 3。 【说明】 某公司的主要业务是出租图书和唱碟。由于业务需求,该公司委托软件开发公司 A开发一套信息管理系统。该系统将记录所有的图书信息、唱碟信息、用户信息
14、、用户租借信息等。 A公司决定采用面向对象的分析 和设计方法开发此系统。如图 3-2所示为某类图书或唱碟被借阅时应记录的信息,如图 3-3所示描述了系统定义的两个类 Book和 CD,分别表示图书和唱碟的信息。30 经过进一步分析,设计人员决定定义一个类 Items_on_loan,以表示类 Book和ED的共有属性和方法。请采用图 3-3中属性和方法的名称给出类 Items_on_loan应该具有的属性和方法 (注意:不同名称的属性和方法表示不同的含义,如 CD中的composer与 Book中的 author无任何关系 )。 31 为了记录每种图书或唱碟的历史记录, 引入类 Circula
15、tionHistory,类中存储的信息是如图 3-2所示的内容。请采用 UML表示法将下列 4个类间的关系表示出来。32 现需了解十大最畅销 (借出次数最多 )图书或唱碟。为此引入 TenPopulate类以存储所有十大畅销图书或唱碟的名称及其被借出的次数。下列顺序图描述了某类图书或唱碟被借出后成为十大畅销图书或唱碟时对象间的消息交互。系统在一次运行过程中,应有 (1)个 TenPopulate实例对象最合适,一个 TenPopulate类实例对象最多需要和 (2)个 Items_on_loan实例对 象交互。33 阅读下列说明和数据流图,回答问题 1和问题 3。 【说明】 某指纹门禁系统结构
16、如图 3-5所示,其主要部件有:主机 (MainFrname)、锁控器 (LockController)、指纹采集器 (FingerReader)和电控锁 (Lock)。 (1)系统中的每个电控锁都有一个唯一的编号。锁的状态有两种: “已锁住 ”和 “未锁住 ”。 (2)在主机上可以设置每把锁的安全级别及用户的开锁权限。只有当用户的开锁权限大于或等于锁的安全级别并且锁处于 “已锁住 ”状态时,才能将锁打开。 (3)用户的指纹信息、开 锁权限及锁的安全级别都保存在主机上的数据库中。 (4)用户开锁时,只需按一下指纹采集器。指纹采集器将发送一个中断事件给锁控器,锁控器从指纹采集器读取用户的指纹并将
17、指纹信息发送到主机,主机根据数据库中存储的信息来判断用户是否具有开锁权限,若有且锁当前处于 “已锁住 ”状态,则将锁打开:否则系统报警。 该系统采用面向对象方法开发,系统中的类及类之间的关系用 UML类图表示,图 3-6是该系统类图的一部分;系统的动态行为采用 UML序列图表示,图 3-7是用户成功开锁的序列图。 33 图 3-6是该系统类图的一部分,依据 上述说明中给出的术语,给出类 Lock的主要属性。 34 依据上述说明中给出的词语,将图 3-7中的 (1) (5)处补充完整。 35 组合 (Composition)和聚集 (Aggregation)是 UML中两种非常重要的关系。请说明
18、组合和聚集分别表示什么含义 ?两者的区别是什么 ? 36 阅读下列说明及图 3-8和图 3-9,回答问题 1、问题 2和问题 3。 【说明】 某电话公司决定开发一个管理所有客户信息的交互式网络系统。系统的功能如下。 (1)浏览客户信息:任何使用 Internet的网络用户都可以浏览电话公司 所有的客户信息(包括姓名、住址、电话号码等 )。 (2)登录:电话公司授予每个客户一个账号。拥有授权账号的客户,可以使用系统提供的页面设置个人密码,并使用该账号和密码向系统注册。 (3)修改个人信息:客户向系统注册后,可以发送电子邮件或者使用系统提供的页面,对个人信息进行修改。 (4)删除客户信息:只有公司
19、的管理人员才能删除不再接受公司服务的客户的信息。 系统采用面向对象方法进行开发,在开发过程中认定出的类如表 3-3所示。36 在需求分析阶段,采用 UML的用例图 (Use Case Diagram)描述 系统功能需求,如图 3-8所示。请指出图中的 A、 B、 C和 D分别是哪个用例 ? 37 在 UML中,重复度 (Multiplicity)定义了某个类的一个实例可以与另一个类的多少个实例相关联。通常把它写成一个表示取值范围的表达式或者一个具体的值。例如图 3-9所示中的类 InternetClient和 CustomerList, InternetClient端的 “0*”表示:一个 C
20、ustomerList的实例可以与 0个或多个 InternetClient的实例相关联;CustomerList端的 “1”表示:一个 InternetClient的实例只能与一个 CustomerList的实例相关。 请指出图 3-9中 (1)到 (4)处的重复度分别为多少 ? 38 类通常不会单独存在,因此当对系统建模时,不仅要识别出类,还必须对类之间的相互关系建模。在面向对象建模中,提供了 4种关系:依赖 (Dependency)、概括 (Generalization)、关联 (Association)和聚集 (Aggregation)。请分别说明这 4种关系的含义,并说明关联和聚集之
21、间的主要区别。 软件水平考试(中级)软件设计师上午(基础知识)试题 章节练习试卷 9答案与解析 1 【正确答案】 A 【试题解析】 A选项中定义的方法与题中所定义的方法实质上是一样的。字母只是作为形参参与计算,用什么字母都无所谓。 已知 3个类 O, P和 Q,类 O中定义了一个私有方法 F1、一个公有方法 F2 和一个受保护的方法 F3,类 P和类 Q是类 O的派生类,其继承方式如下所示: class P: protected O) ; class Q: public O ; 2 【正确答案】 D 【试题解析】 静态成员的提出是为了解决数据共事的问题。实现共享 有许多方法,如设置全局性的变量
22、或对象。但是,全局变量或对象是有局限性的。 在类中,静态成员可以实现多个对象之间的数据共享,并且使用静态数据成员还不会破坏隐藏的原则,即保证了安全性。因此,静态成员是类的所有对象共享的成员,而不是某个对象的成员。 使用静态数据成员可以节省内存,因为它是所有对象所公有的,因此,对多个对象来说,静态数据成员只存储于一处,供所有对象共用。静态数据成员的值对每个对象都是一样的,但它的值是可以更新的。只要对静态数据成员的值更新一次,保证所有对象存取更新后的相同的值,这样可以提 高时间效率。 静态数据成员的使用方法和注意事项如下。 1静态数据成员在定义或说明时前面加关键字 static。 2静态成员初始化
23、与一般数据成员初始化不同。静态数据成员初始化的格式如下: 数据类型类名 :静态数据成员名 =值 3静态数据成员是静态存储的,它是静态生存期,必须对它进行初始化。 4引用静态数据成员时,采用如下格式: 类名 :静态成员名 静态成员函数和静态数据成员一样,它们都属于类的静态成员,它们都不是对象成员。因此,对静态 成员的引用不需要用对象名。 在静态成员函数的实现中不能直接引用类中说明的非静态成员,可以引用类中说明的静态成员。如果静态成员函数中要引用非静态成员,可通过对象来引用。 3 【正确答案】 B 【试题解析】 消息的对象间通信中指一个对象通过向另一对象发送消息来请求其服务。一个消息通常包括接收对
24、象名、调用的操作名和适当的参数 (如有必要 )。消息只告诉接收对象需要完成什么操作,但并不能指示接收者怎样完成操作。消息完全向接收者解释,接收者独立决定采用什么方法来完成所需的操作。因此, A可以看见 B, B不一定能看 见 A。 4 【正确答案】 D 【试题解析】 类是一组具有相同属性和相同操作的对象的集合。一个类中的每个对象都是这个类的一个实例 (Instance)。类是在对象之上的抽象,对象是类的具体化,是类的实例。 5 【正确答案】 D 【试题解析】 为了支持 “抽象 ”,并有效地控制信息组织, OSA引入 3种特殊关系集合。 is a:一个对象类中的每一个对象是另一个对象类的一个对象
25、。 “is a”通常表达继承关系。继承是在某个类的层次关联中不同的类共享属性和操作的一种机制。一个父类可以有多个子类,这些子类都是父类的特例。父类描述了这些子类的公共属性和操作,子类中还可以定义它自己的属性和操作。一个子类只有惟一的一个父类,这种继承称为单一继承。一个子类有多个父类,可以从多个父类中继承特性,这种继承称为多重继承。 is part of:一个对象,称之为聚合,是由一些被称为成分的对象构成的。聚合是分析中常用的一种组合。 is member of:由对象构成的集合,并把这样的集合看成一个对象,属于联合关系。 6 【正确答案】 B 【试题解析】 本题考查的是面向对象方面的基础知识。
26、模块是面向对象语言所提供的一种特殊机制,通过模块可以定义一种特殊的类。在类的定义中可以包含待定的类型参数,在声明类的实例时,系统会自动根据传递的类型生成用户想要生成的类实例。面向对象的测试按照由低到高的顺序可以分成的四个层次,依次如下。 (1)测试与对象关联的单个操作,即算法层。 (2)测试单个对象类,即类层。 (3)测试对象类群,即模板层。 (4)测 试面向对象系统,即系统层。 7 【正确答案】 B 【试题解析】 对象是类的实例。尽管对象的表示在形式上与一般数据类型十分相似,但是它们之间存在一种本质区别,即对象之间通过消息传递方式进行通信。消息传递原是一种与通信有关的概念, OOP使得对象具
27、有交互能力的主要模型就是消息传递模型。对象被看成用传递消息的方式互相联系的通信实体,它们既可以接收,也可以拒绝外界发来的消息。一般情况下,对象接收它能够识别的消息,拒绝它不能识别的消息。对于一个对象而言,任何外部的代码都不能以任何不可预知或实现不允许的方式与这 个对象进行交互。因此;选项 B 是不正确的。因为操作系统是计算机系统中的管理者和控制者,所以通常是由应用程序向操作系统发送消息,操作系统根据接收到的消息进行处理。 8 【正确答案】 A 【试题解析】 对象体现了数据抽象的思想,它是一种数据以及在其上的操作的封装体。对象的三种成分是标识、属性和方法。标识给出对象的外部说明;属性描述了对象的
28、数据表示,它被封装在对象内部,属性的值描述了对象的状态;而方法就是施加于属性之上的操作,使用者必须通过方法来存取和操作对象中的数据。 9 【正确答案】 C 【 试题解析】 从程序设计方法的角度看,面向对象是一种新的程序设计范型(paradigm),其基本思想是使用对象、类、继承、封装、聚合、关联、消息、多态性等基本概念来进行程序设计。面向对象方法是一种运用对象、类、继承、封装、聚合、关联、消息、多态性等概念来构造系统的软件开发方法。面向对象程序语言有 Smalltalk, Eiffel, C+和 Java。面向对象方法与面向对象语言并没有严格的对应,一个面向对象系统也可以用非面向对象的语言,有
29、的面向对象语言也支持面向过程。例如, C+既支持面向过程也支持面向对象。 10 【正确答案】 C 【试题解析】 由同一个类实例化得到的不同对象具有相同的数据成员,但数据成员的值是不同的。静态数据成员用来实现同一个类的不同对象之间的数据共享。同一个类的不同对象共享静态数据成员值,当通过一个对象改变了静态数据成员的值时,通过同类的其他对象可以看到这个修改。因此选项 A, B 关于静态数据成员的描述都是错误的。对象自身引用是面向对象程序设计中特有的且十分重要的机制。每个对象都有属于自己的对象自身引用值。 11 【正确答案】 A 【试题解析】 与一般数据类型的实例化过程相比,类 的实例化过程是一种实例
30、的合成过程,指导编译程序进行这种合成的,就是类层次结构。 12 【正确答案】 D 【试题解析】 重置的基本思想是通过一种动态绑定机制的支持,使得子类在继承父类界面定义的前提下,用适合于自己要求的实现去置换父类中的相应实现。在面向对象程序设计语言中,重置机制有相应的语法供开发人员选择使用。在 C+语言中,通过虚拟函数的定义来进行重置的声明,通过虚拟函数跳转表结构来实现重置方法体的动态绑定。在 Java语言中,通过抽象方法来进行重置的声明,通过方法查找实现重置方法体的动态绑定。 13 【正确答案】 B 【试题解析】 UML 类图一般包含 3个组成部分。第一个是类名,第二个是属性,第三个是该类提供的
31、方法 (类的性质可以放在第四部分;如果类中含有内部类,则会出现第五个组成部分 )。类名部分是不能省略的,其他组成部分可以省略。 类名书写规范:正体字说明类是可被实例化的,斜体字说明类为抽象类。 属性和方法书写规范:修饰符 描述信息 属性、方法名称 参数 :返回类型 |类型 属性和方法之前可附加的可见性修饰符: 加号 (+)表示 public,减号 (-)表示 private, #号表示 protected,省略这些修饰符表示具有 package(包 )级别的可见性。 如果属性或方法具有下画线,则说明它是静态的。 类的性质是由一个属性、一个赋值方法和一个取值方法组成的。书写方式和方法类似。 常见
32、的关系有一般化关系、实现关系、聚合关系、合成关系和依赖关系。请注意不同关系在图中连线表示的不同。 一般化关系表示类与类、接口与接口之间的继承关系。关系中的箭头由子类指向父类。在 Java中,用 extends 关键字来直接表示这种关系。 14 【正确答案】 B 【试题解析】 在 UML 中,重复度定义了某个类的一个实例可以与另一个类的多少个实例相关联。通常把它写成一个表示取值范围的表达式或者一个具体的值。 15 【正确答案】 A 【试题解析】 根据 UML 类图的作图要求,可以解出答案。 16 【正确答案】 B 【试题解析】 采用设计模式可复用面向对象软件的基础来构造可复用的面向对象设计。设计
33、模式确定了所包含的类和实例,它们的角色、协作方式以及职责分配。每一个设计模式都集中于一个特定的面向对象设计问题或设计要点,描述了什么时候使用它,在另一些设计约束条 件下是否还能使用,以及使用的效果和如何取舍。 17 【正确答案】 B 【试题解析】 面向对象的单身模式是指一个类只能产生惟一一个实例。 18 【正确答案】 A 【试题解析】 MVC 模式分离开发角色,它很清楚地划定了程序员与设计者的角色界限。换句话说,从商业逻辑上拆解了数据。这种模式是让设计者集中于设计应用程序的显示部分,而开发者则集中于开发驱动应用程序功能所需的组件。MVC模式有好几种变异,不过它们都是基于相同的基础结构:应用程序
34、的数据模型 (Model),代码显示 (View),以及程序 控制逻辑 (Controller)是存在其中的独立的但能相互间通信的组件。模型组件描述并处理应用程序数据。视图指的是用户接口,它反映的是模型数据并把它递交给用户。控制器是将视图上的行为映射到模型上的操作。模型更新后,视图也被更新,用户就能够完成更多行为。 MVC模式使代码易懂而且使代码更容易重用。另外,在很多工程中视图经常要被更新,MVC模式将模型和控制器与这些所做的更改独立开来。 19 【正确答案】 D 20 【正确答案】 C 【试题解析】 简单无向图的邻接矩阵是对称的,且对角线元素均是 0,故压缩存储只需存储下三角或上三角 (均
35、不包括对角线 )即可。故有 (上三角形式 ): K=(n-1)+(n-2)+1+0=n 2-(1+2+n)= 边 (V6, V3)与边 (V3, V6)是同一条边。第 i行第 j列元素在矩阵 B(上三角形式 )中的下标为: (n-1)+(n-2)+(n -(i-1)+(j-i),故有 (V6, V3)信息在 B 中存储下标为 (10-1)+(10-2) +(6-3)=20。 21 【正确答案】 C 22 【正确答案】 D 【试题解析】 LC-检索使用一个成本估计函数来选取下一个 E-节点, 以加快达到一个答案节点的速度,所以 LC-检索适用于解决在状态空间树中找出任一个答案节点的问题。在状态空
36、间树中,定义 c(.)为节点的成本函数, g(x)为从节点 X到达一个答案节点所需做的附加工作的估计函数, h(x)为从根节点到节点 X的成本,则用成本估计函数 c(X)=f(h(X)+g(x)选择下一个 E节点的检索策略总是选取 c(.)值最小的活节点作为下一个 E-节点,因此这种检索策略称为最小成本检索,简称LC-检索。那么在状态空间树中找出最优的答案节点,就可以利用 LC-检索快速找到一个答案节点。根据定义,在进行 LC-检索的时候,为避免算法过分偏向于作纵深检查,应该在成本估计函数 c(.)中考虑根节点到当前节点的成本 (距离 )。 23 【正确答案】 C 24 【正确答案】 A 【试
37、题解析】 求关键路径的过程如表 8-1所示。ve为最早发生的时间, v1为最迟发生的时间, 1-e=0为关键路径。 我们得知 a1, a2, a4, a8,a9为关键活动, (V1, V4, V5, V7), (V1, V2, V5, V7)为两条关键路径,长度均为 10。 25 【正确答案】 C 26 【正确答案】 C 【试题解析】 与二分查找法类似, k 分查找法可用 k 叉树来描述。 k 分查找法在查找成功时进行比较的关键字个数最多不超过树的深度,而具有 n个节点的 k叉树的深度为 logkn(k+1)+1,所以 k 分查找法在查找成功时和给定值进行比较的关键字个数至多为 logkn)+
38、1,即时间复杂度为 O(logkn)。同时, k 分查找法在查找不成功时,和给定值进行比较的关键字个数也至多为 logkn(k+1)+1,即时间复杂度为 O(logkn)。 一、主观题 27 【正确答案】 Cusomer类属性:客户标识。 Person类属性:姓名、住宅电话、 email。 28 【正确答案】 (1) 1 (2) 0* (3) 1 (4) 1 (5) 1 (6) 1* 29 【正确答案】 CustomerInformationSystem 类方法: getCustomer、addCustomer、 removeCustomer。 InstitutionalCustomer类方法
39、: addContact、 getContact、 removeContact。 【试题解析】 本题考查 UML 类图,包括类的属性和方法的识别及类间关联重复度。 从 UML 类图 (见图 3-1)中可以看出,类 Customer是类 IndividualCustomer 和类 InstitutionalCustomer 的父类,应该包含两者的共有属性。根据题中说明,两者共有属性为 “客户标识 ”。故类 Customer应有属性:客户标识。 同样,类 Person 是类 Contact的父类,因此其属性应包含在 Contact类的属性集中, Contact类的属性有:姓名、住宅电话、 emai
40、l、办公电话及职位;又 Contact与类 IndividualCustomer 有关联,而 Individual 包含属 性:姓名、住宅电话和email,故类 Person 应有属性:姓名、住宅电话和 email。 根据题中说明,可知客户管理相关方法应该属于类CustomerInformationSystem,有:查找客户 getCustomer、添加客户addCustomer和删除客户 removeCustomer;联系人相关方法应该属于类InstitutionalCustomer,有:创建新联系人 addContact、查找联系人 getContact和删除联系人 removeConta
41、ct。 下面分析类间的关联重复度。 客户管理系统自然是管理多个客户信息,即一个 CustomerInformationSystem类对象与多个客户 Customer类实例相关联,故空 (1)应填 1,空 (2)为 0*,或 *。 一个类 IndividualCustomer 实例同时也是一个 Person 实例,即其间是一对一关联,故空 (3)和空 (4)均为 1。 一个集团客户类 InstitutionalCustomer的实例可以包含多名联系人 Contact,且至少有一名,而一个联系人隶属于某个特定的集团。故空 (5)应填 1,空 (6)为 1*。 30 【正确答案】 属性: title
42、 方法: Reference Title 31 【正确答案】 32 【正确答案】 (1) 1 (2) 图书和唱碟种类数 【试题解析】 本题考查 UML 类图,包括类的属性和方法的识别及类间的关系,以及 UML 序列图。 类 Item_on_loan 是用来表示类 Book 和类 CD 的共有属性和方法的。比较类Book 和类 CD的属性和方法,易得类 Item_on_loan 应有属性: title,应有方法:Reference Title。 类 Item_on_loan 是由类 Book 和类 CD的共有属性和共有方法导出的,因此类Item_on_loan 是类 Book 和类 CD的父类,
43、 UML 表示方法是一条指向父元素 (一般元素 )的带空心箭头的实线。 类 CirculationHistory 是多个图书 /唱碟类实例 (Items_on_loan)的集合,因此其间是聚集关系, UML 中用一个指向代表整体的类的带空心菱形的实线表示。 33 【正确答案】 锁的编号,安全级别,锁的当前状态。 34 【正确答案】 (1) 中断事件 (2) 读取用户指纹 (3) 读取用户开锁权限 (4) 读取锁的安全级别 (5) 判断用户是否有权限开锁或用户是否可以开锁 35 【正确答案】 组合和聚集都表示实例之间的整体 /部分关系。组合是聚集的一种形式。 聚集是概念性的,只是区分整体与部分。
44、 组合具有很强的归属关系,而且整体与部分的对象生存周期是一致的。 或者回答:如果没有成分对象,组合对象也不存在;在任何时候,每个给定的成分对象只能是组合对象的组成部分。 【试题解析】 本题考查 UML 类图,包括类的属性和方法的识别,以及 UML 序列图和相关概念。 根据说明 “系统中的每个电 控锁都有一个唯一的编号。锁的状态有两种: 已锁住 和 未锁住 。 ”可知类 Lock 应有属性:锁编号和锁状态。再根据说明 (2), “在主机上可以设置每把锁的安全级别 ” ,类 Lock 还应有属性:安全级别。综上所述,类 Lock 的主要属性有:所编号、安全级别、所状态。 图 3-7是该门禁系统成功
45、开锁流程对应的 UML 序列图。根据题中的说明,成功开锁的流程应该如下,用户按下指纹采集器请求开锁,指纹采集器发送一个中断事件给锁控器,锁控器从指纹采集器读取用户的指纹并将指纹信息发送到主机,主机根据数据库中存储的信息来判断用 户是否具有开锁权限,若有且锁当前处于“已锁住 ”状态,则将锁打开;否则系统报警。据此,易得空 (1)为 “中断事件 ”,空(2)为 “读取用户指纹 ”。开锁很重要的一点就是用户要有开锁权限,即其开锁权限大于或等于锁的安全级别,因此需要向用户信息实例 UserInfo 读取用户的开锁权限和向锁实例 Lock 读取锁的安全级别并进行比较。故空 (3)为 “读取用户开锁权限
46、”,空 (4)为 “读取锁的安全级别 ”,空 (5)为 “判断用户是否有权限开锁 ”。 36 【正确答案】 A:浏览客户信息, B:修改个人信息, C:登录, D:删除客户信息。 37 【正确答案】 (1) 1 (2) 0* (3) 01 (4) 01 38 【正确答案】 (1) 4种关系的含义如下。 . 依赖表示类之间的使用关系。 . 概括 (泛化 )表示一般类和特殊类之间的关系。 . 关联和聚集都表示实例之间的结构关系。 (2) 关联和聚集的区别如下。 . 关联指明一个类的对象与另一个类的对象间的联系:两个类之间的关联表示了两个同等地位类之间的结构关系,这两个类在概念上是同级别的。 . 聚
47、集是一种特殊的关联,它表示整体 /部分 关系。 【试题解析】 本题考查 UML 用例图。 UML 类图中类间的关联重复度,以及UML 相关概念。 用例图用于对系统的静态用例视图进行建模,主要支持系统的行为,即该系统在它的周边环境的语境中所提供的外部可见服务。 根据题中描述,很容易确定用例 A是 “浏览客户信息 ”,用例 D是 “删除客户信息 ”。用例 B与用例 C哪个是登录呢 ?注意到其间存在包含关系: B包含了 C。因此根据语义,用例 C应为 “登录 ”,用例 B 为 “修改个人信息 ”。亦即 “修改个人信息 ”必须首先 “登录 ”。 在 UML 中,重复度 (Multiplicity)定义了某个类的一个实例可以与另一个类的多少个实例相关联。通常把它写成一个表示取值范围的表达式或者一个具体的值。关联重复度详见考点链接 3.1。 根据语义分析,类 CustomerList实例显然是由多个类 Customer 实例组成的,而CustomerList只需一份即可。故空 (1)应填 “1”,空 (2)应填 “0*”; Customer是CompanyCustomer的详细信息,因此空 (3)和空 (4)均为 “01”。