【设计模式_单线选择】面向对象设计原则--单选题

一. 单选题(共20题,100分)

  1. (单选题, 5分)关于单一职责原则,以下叙述错误的是( )。
    A. 一个类只负责一个功能领域中的相应职责
    B. 就一个类而言,应该有且仅有一个引起它变化的原因
    C. 一个类承担的职责越多,越容易复用,被复用的可能性越大
    D. 一个类承担的职责过多时,需要将职责进行分离,将不同的职责封装在不同的类中
    我的答案: C:一个类承担的职责越多,越容易复用,被复用的可能性越大;正确答案: C:一个类承担的职责越多,越容易复用,被复用的可能性越大;
    5分
    答案解析:单一职责特点
  2. (单选题, 5分)实现开闭原则的关键在于( )。
    A. 分离类的职责
    B. 对系统进行抽象化
    C. 一个类尽可能地与其他类发生相互作用
    D. 多用关联关系,少用继承关系
    我的答案: B:对系统进行抽象化;正确答案: B:对系统进行抽象化;
    5分
    答案解析:开闭原则的特点
  3. (单选题, 5分)某系统通过使用配置文件,可以在不修改源代码的情况下更换数据库驱动程序,该系统满足( )。
    A. 里氏代换原则
    B. 接口隔离原则
    C. 单一职责原则
    D. 开闭原则
    我的答案: D:开闭原则;正确答案: D:开闭原则;
    5分
    答案解析:开闭原则的应用场景
  4. (单选题, 5分)已知ClassA是ClassB的父类,在ClassC中定义了ClassA类型的对象obj,且提供了方法setClassA(ClassA obj)用于给obj对象赋值,以下叙述有误的是( )。
    A. 可以在setClassA中传递一个ClassB类型的对象
    B. 如果在setClassA中定义了方法method1(),在类ClassB中覆盖了该方法,当setClassA()方法参数传递的是ClassB类型的对象时,在ClassC中调用obj的method1()方法时将执行ClassB的method1()方法
    C. 可以在ClassC中定义一个新方法setClassA(ClassB obj),它与原有方法setClassA(ClassA obj)构成一组重载方法
    D. 如果在ClassB中定义了ClassA没有的新方法method2(),当setClassA()方法参数传递的是ClassB类型的对象时,在ClassC中可以调用obj对象的的method2()方法
    我的答案: D:如果在ClassB中定义了ClassA没有的新方法method2(),当setClassA()方法参数传递的是ClassB类型的对象时,在ClassC中可以调用obj对象的的method2()方法;正确答案: D:如果在ClassB中定义了ClassA没有的新方法method2(),当setClassA()方法参数传递的是ClassB类型的对象时,在ClassC中可以调用obj对象的的method2()方法;
    5分
    答案解析:面向对象编程继承、重载、覆盖、重写、参数传递、方法调用
  5. (单选题, 5分)下面关于面向对象设计的描述正确的是( )。
    A. 针对接口编程,而不是针对实现编程
    B. 针对实现编程,而不是针对接口编程
    C. 接口与实现不可分割
    D. 优先使用继承而非组合
    我的答案: A:针对接口编程,而不是针对实现编程;正确答案: A:针对接口编程,而不是针对实现编程;
    5分
    答案解析:面向对象设计原则的核心思想
  6. (单选题, 5分)面向对象分析与设计中的( )是指一个模块在扩展性方面应该是开放的,而在更改性方面应该是封闭的。
    A. 开闭原则
    B. 里氏代换原则
    C. 依赖倒转原则
    D. 单一职责原则
    我的答案: A:开闭原则;正确答案: A:开闭原则;
    5分
    答案解析:开闭原则的核心思想
  7. (单选题, 5分)以下关于面向对象设计的叙述中,错误的是( )。
    A. 高层模块不应该依赖于底层模块
    B. 抽象不应该依赖于细节
    C. 细节可以依赖于抽象
    D. 高层模块无法不依赖于底层模块
    我的答案: D:高层模块无法不依赖于底层模块;正确答案: D:高层模块无法不依赖于底层模块;
    5分
    答案解析:开闭原则定义
  8. (单选题, 5分)开闭原则是面向对象的可复用设计的基石。开闭原则是指一个软件实体应当对( )开放。
    A. 修改
    B. 扩展
    C. 分析
    D. 设计
    我的答案: B:扩展;正确答案: B:扩展;
    5分
    答案解析:开闭原则定义
  9. (单选题, 5分)关于继承复用和合成复用,以下叙述错误的是( )。
    A. 继承复用实现简单,子类可以继承父类的部分方法和属性,并且可以选择性覆盖父类的方法
    B. 继承复用会破坏系统的封装性,会将基类的实现细节暴露给子类
    C. 合成复用将已有对象纳入新对象中,使之成为新对象的一部分,新对象可以调用已有对象的方法,从而实现行为的复用
    D. 合成复用又称为“白箱”复用,与继承复用相比,其耦合度更高,成员对象的变化对容器对象影响较大,而且合成复用不能在程序运行时动态实现
    我的答案: D:合成复用又称为“白箱”复用,与继承复用相比,其耦合度更高,成员对象的变化对容器对象影响较大,而且合成复用不能在程序运行时动态实现;正确答案: D:合成复用又称为“白箱”复用,与继承复用相比,其耦合度更高,成员对象的变化对容器对象影响较大,而且合成复用不能在程序运行时动态实现;
    5分
    答案解析:合成复用的特点
  10. (单选题, 5分)如果一个方法能够接受一个基类对象作为其参数,必然可以接受一个子类对象。该陈述是( )的定义。
    A. 依赖倒转原则
    B. 里氏代换原则
    C. 合成复用原则
    D. 接口隔离原则
    我的答案: B:里氏代换原则;正确答案: B:里氏代换原则;
    5分
    答案解析:里氏代换原则定义
  11. (单选题, 5分)在某MIS系统设计中,提供了一个专门用于连接数据库的类DBConnection,该类包含了用于连接数据库的方法,系统提供了DAO(数据访问对象)类负责对数据库进行增删改查等操作,在操作数据库之前需要先连接数据库,因此需要重用DBConnection中的连接方法。为了确保系统具有良好的可扩展性和可维护性,类DBConnection和DAO之间的关系以( )最为合适。
    A. 关联关系
    B. 依赖关系
    C. 继承关系
    D. 实现关系
    我的答案: A:关联关系;正确答案: A:关联关系;
    5分
    答案解析:UML类间关系的应用
  12. (单选题, 5分)关于接口隔离原则,以下叙述有误的是©。
    A. 在系统设计时,客户端不应该依赖那些它不需要的接口
    B. 当一个接口太大时,需要将它分割成一些更细小的接口,使用该接口的客户端类仅需知道与之相关的方法即可
    C. 接口应该尽量细化,同时接口中的方法应该尽可能少,理想情况是在每个接口中只定义一个方法,该接口使用起来最为方便
    D. 一个接口只代表一个角色,每个角色都有它特定的一个接口
    我的答案: C:接口应该尽量细化,同时接口中的方法应该尽可能少,理想情况是在每个接口中只定义一个方法,该接口使用起来最为方便;正确答案: C:接口应该尽量细化,同时接口中的方法应该尽可能少,理想情况是在每个接口中只定义一个方法,该接口使用起来最为方便;
    5分
    答案解析:接口隔离原则的目的
  13. (单选题, 5分)在系统设计中应用迪米特法则,以下叙述有误的是( )。
    A. 在类的划分上,应该尽量创建松耦合的类,类的耦合度越低,复用越容易
    B. 如果两个类之间不必彼此直接通信,那么这两个类就不应当发生直接的相互作用
    C. 在对其他类的引用上,一个对象对其他对象的引用应当降到最低
    D. 在类的设计上,只要有可能,一个类型应该尽量设计成抽象类或接口,且成员变量和成员函数的访问权限最好设置为公开的(public)
    我的答案: C:在对其他类的引用上,一个对象对其他对象的引用应当降到最低;正确答案: D:在类的设计上,只要有可能,一个类型应该尽量设计成抽象类或接口,且成员变量和成员函数的访问权限最好设置为公开的(public);
    0分
    答案解析:迪米特法则的结构特点
  14. (单选题, 5分)一个软件实体应当尽可能少地与其他软件实体发生相互作用,这样,当一个模块修改时,就会尽量少地影响其他模块,扩展会相对容易。这是( )的定义。
    A. 迪米特法则
    B. 接口隔离原则
    C. 里氏代换原则
    D. 合成复用原则
    我的答案: A:迪米特法则;正确答案: A:迪米特法则;
    5分
    答案解析:迪米特法则的定义
  15. (单选题, 5分)( )不是迪米特法则的重构方案实例。
    A. 为了防止界面组件之间产生复杂的引用关系,提供一个中央控制器来负责控制界面组件间的相互引用
    B. 由于不能直接访问一个远程对象,在本地创建一个远程对象的代理,通过代理对象来间接访问远程对象
    C. 为了降低多层系统的耦合度,提高类的可扩展性和复用性,在界面表示层和业务逻辑层之间增加控制层,由控制层来转发表示层对业务逻辑的调用
    D. 为了提高可扩展性,在系统中增加抽象业务逻辑层,客户类针对抽象业务逻辑层编程,而将具体业务逻辑类类名存储在配置文件中
    我的答案: D:为了提高可扩展性,在系统中增加抽象业务逻辑层,客户类针对抽象业务逻辑层编程,而将具体业务逻辑类类名存储在配置文件中;正确答案: D:为了提高可扩展性,在系统中增加抽象业务逻辑层,客户类针对抽象业务逻辑层编程,而将具体业务逻辑类类名存储在配置文件中;
    5分
    答案解析:迪米特法则的特点
  16. (单选题, 5分)面向对象分析与设计中的( )是指子类应当可以替换父类并出现在父类能够出现的任何地方。
    A. 开闭原则
    B. 里氏代换原则
    C. 依赖倒转原则
    D. 单一职责原则
    我的答案: B:里氏代换原则;正确答案: B:里氏代换原则;
    5分
    答案解析:里氏代换概念
  17. (单选题, 5分)开闭原则是面向对象的可复用设计的基石。开闭原则对( )关闭。
    A. 修改
    B. 扩展
    C. 分析
    D. 设计
    我的答案: A:修改;正确答案: A:修改;
    5分
    答案解析:开闭原则概念
  18. (单选题, 5分)里氏代换原则是指任何( )可以出现的地方,( )一定可以出现。
    A. 变量,常量
    B. 常量,变量
    C. 基类对象,子类对象
    D. 子类对象,基类对象
    我的答案: C:基类对象,子类对象;正确答案: C:基类对象,子类对象;
    5分
    答案解析:里氏代换概念
  19. (单选题, 5分)依赖倒转原则就是要依赖于( ),而不要依赖于( ),或者说要针对接口编程,不要针对实现编程。
    A. 程序设计语言,建模语言
    B. 建模语言,程序设计语言
    C. 实现,抽象
    D. 抽象,实现
    我的答案: D:抽象,实现;正确答案: D:抽象,实现;
    5分
    答案解析:依赖倒转概念
  20. (单选题, 5分)
    依赖倒转原则就是要依赖于( ),而不要依赖于( ),或者说要针对接口编程,不要针对实现编程。

A. 程序设计语言,建模语言

B. 建模语言,程序设计语言

C. 实现,抽象

D.
抽象,实现

我的答案: D:抽象,实现;正确答案: D:抽象,实现;

你可能感兴趣的:({00}设计模式,设计模式,java,数据库)