1.单选题(共5题)
1.在方法的public、protected、package、private 4个不同级别可见性表示中,用于表示protected的是( )4分
A.+
B.~
C.#
D.-
正确答案:C
2.某些程序设计语言中,在运行过程中当一个对象发送消息请求服务时,根据接收对象的具体情况将请求的操作与实现的方法进行连接,称为 ( )4分
A.静态绑定
B.通用绑定
C.动态绑定
D.过载绑定
正确答案:C
3.继承是父类和子类之间共享数据和方法的机制。关于图中doIt()方法的叙述中,正确的是( )
A.doIt()必须由Thing3实现,同时可能由Thing4实现。
B.doIt()必须由Thing5实现
C.doIt()必须由Thing2、Thing3、Thing4、Thing5实现
D.doIt()已经由Thing1实现,因为无需其它类实
正确答案: A
得分: 4
题目解析: 继承是父类和子类之间共享数据和方法的机制。这是类之间的一种关系,在定义和实现一个类(子类)的时候,可以在一个已经存在的类(父类)的基础上进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。一个父类可以有多个子类,这些子类都是父类的特例,父类描述了这些子类的共有属性和操作。一个子类可以继承它的父类(或祖先类)中的属性和操作,这些属性和操作在子类中不必定义,子类中还可以定义自己的属性和操作。所以D选项错误。
题中的Thingl为接口,那么dolt()为接口中的抽象方法,必须由实现它的类去实现该方法。因此在Thing3中必须实现,而Thing4也是Thing1的子类,但不是直接子类,所以可能由Thlng4实现。
4.在面向对象的系统中,对象是运行时实体,其组成部分不包括(1);一个类定义了一组大体相似的对象,这些对象共享(2)。
A.1 消息 2 属性和行为
B.1 行为(操作) 2 属性和状态
C.1 对象名 2 对象名和状态
D.1 状态 2 行为和多重
正确答案: A
5.一个类是(1)在定义类时,将属性声明为private的目的是()。
A.1 一组对象的封装 2 实现属性值对类的所有对象共享
B.1 表示一组对象的层次关系 2 操作符重载;
C.1 一组对象的实例 2 实现属性值不可更改
D.1 -组对象的抽象定义 2 实现数据隐藏,以免意外更改
正确答案: D
2.判断题(共5题)
1.接口与类不同,它不描述任何结构(因此不包含任何属性),也不描述任何实现。
正确
错误
正确答案: yes
2.在设计类图时,可以不用对类图中的每个关联进行命名,但如果需要命名的话,最好用一个“动词”给关联命名。
正确
错误
正确答案: yes
3.在画类图的时候必须将全部的属性和方法都画出来。
正确
错误
正确答案: no
4.类的名称是不可省略的,其他部分,如属性和方法可以根据类图的使用目的而省略。
正确
错误
正确答案: yes
5.在画类图时,属性或操作如果是public的,可以用“+”表示,protected用“#”表示,private 用“-”表示。
正确
错误
正确答案: yes
3.填空题(共14题)
1.对于场景:一个公司负责多个项目,每个项目(Project)由一个员工(Employee) 团队(Team)来开发。下列UML概念图中,(____) 最适合描述这一场景。
正确答案: [[B] [D]]
2.在UML中,对类进行分组时使用(____) ,它是UML中的主要结构,是一种对模型元素进行成组组织的通用机制。
正确答案: [[包]]
3.(____) 是对一组具有相同属性、操作、关系和语义的对象的描述。
正确答案: [[类]]
4.Liskov替换原则指任何基类出现的地方都应该可以无差别的使用(____) 替换。
正确答案: [[子类]]
题目解析: Liskov替换原则指任何基类出现的地方都应该可以无差别的使用子类替换。
5.利用类图的相关知识,实现动物与环境之间的关系建模,功能要求如下:动物与空气和水之间的关系。动物与鸟之间的继承关系。鸟与翅膀的关系。鸟与大雁、啄木鸟及企鹅之间的关系。雁群与大雁的关系。企鹅与气候之间的关系。下图中(1)是 (____) 关系,(2)是(____) 关系,(3)是(____) 关系,(4)是(____) 关系,(5)是(____) 关系。
正确答案: [[继承], [泛化], [组合], [聚合], [依赖 关联]]
6.接口隔离原则:使用多个专门的接口,而不是使用单一的接口,即客户端不应该依赖哪些它不需要的(____) 。如下图不好的,类B不需要接口中的方法4和5。
正确答案: [[接口]]
7.一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。(____)
正确答案: [[扩展]]
题目解析: 一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。
8.高层模块不应该依赖低层模块,二者都应该依赖其(____) ;抽象不应该依赖细节;细节应该依赖抽象。
正确答案: [[抽象]]
题目解析: 高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。
9.从软件的角度看,程序通常包含的是(____) 的集合以及类所定义的行为,而实际创建信息和管理信息的是遵守类的规则的对象。
正确答案: [[类]]
10.构建面向对象模型的基础是类、(____) 以及它们之间的关系。
正确答案: [[对象]]
11.方法的参数列表中如果没有参数,则参数列表可以省略,但(____) 还需要保留。
正确答案: [[空括号]]:
题目解析: 方法的参数列表中如果没有参数,则参数列表可以省略,但空括号还需要保留。
12.客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在(____) 的接口上。
正确答案: [[最小]]
题目解析: 客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。
13.对象是(____) 的实例,对象图也可看作是类图的实例
正确答案: [[类]]
14.抽象化是开闭原则的关键。在Java、C#等编程语言中,可以为系统定义一个相对稳定的(____) ,而将不同的实现行为移至具体的实现层中完成。
正确答案: [[抽象层]]
题目解析: 抽象化是开闭原则的关键。在Java、C#等编程语言中,可以为系统定义一个相对稳定的抽象层,而将不同的实现行为移至具体的实现层中完成。