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