【设计模式_单线选择】面向对象设计原则--单选题_理想情况下,每个接口应该只定义一个函数-程序员宅基地

技术标签: java  {00}设计模式  数据库  设计模式  

一. 单选题(共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:抽象,实现;

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_52372189/article/details/134115561

智能推荐

十六进制颜色值和ARGB颜色值的转换_十六进制argb-程序员宅基地

文章浏览阅读2.9k次。#include typedef struct ARGB{int alpha;int red;int green;int blue;}color, *pcolor;//将十六进制转化为ARGBcolor hex_to_argb( int colo_十六进制argb

vs2017 Nuget无法连接到远程服务器_.net core nuget无法连接到远程服务器-程序员宅基地

文章浏览阅读1.4k次。Nuget无法连接到远程服务器解决办法:找到ie浏览器选择internet选项还原高级设置最后重启一下电脑就解决问题了_.net core nuget无法连接到远程服务器

vscode上配置Arduino遇到Select the main sketch file问题_为什么arduino保存的`.ino`文件必须位于相同名称的文件夹中才能打开?-程序员宅基地

文章浏览阅读899次。在arduino上保存一个ino文件,必须将它放在一个同名文件夹中,就算你不放,下次用arduino打开还是会生成一个这样的文件夹。在vscode中,每次upload,都让我选一个sketch,而且选项只有ino文件,也不懂是什么意思。而且,选了一个之后就不能再运行其他的ino文件了。最终,我在https://github.com/czgtest/vscode-arduino中,发现:也就是说,vscode下运行每个ino的文件都要一个在一个专有的文件夹下,带着专有的arduino.json文件运行。_为什么arduino保存的`.ino`文件必须位于相同名称的文件夹中才能打开?

开源短剧播放小程序,带完整搭建教程_短剧小程序 开源-程序员宅基地

文章浏览阅读728次。大家好啊,罗峰又老给大家分享好用的小程序了。大家都喜欢看短剧吧,相比传统网剧冗长的剧情,微短剧最大的看点,是时长短、高浓缩,顺应了当下用户娱乐时间碎片化趋势。其故事题材多为赘婿、霸道总裁、穿越、重生等看似夸张、无厘头,但却非常“上头”的虚构内容。_短剧小程序 开源

如何让健康成为生活的重要组成部分?这份指南教你享受健康生活!_健康应用程序如何成为现代人生活的重要组成部分-程序员宅基地

文章浏览阅读177次。如何有效果地保持终生健康:全网最全面实用易懂的健康指南,内含具体贴心细节不容错过_健康应用程序如何成为现代人生活的重要组成部分

LA 2038 Strategic game 树形DP ._la 2038战略游戏-程序员宅基地

文章浏览阅读243次。题目地址:http://vjudge.net/problem/UVALive-2038 以前做过类似的题 就是,无根转有根 然后普通的DP d[u][i] 表示u节点的父亲有没有被选中,i==1表示被选中,反之没有 为什么弄u的父节点呢,因为 如果弄u的节点信息,那么当u没被选中,子结点至少有一个要被选中,那么只能枚举被选中的那个,无法递推,有后效性#include

随便推点

大型转码连续剧之——辣条自学Python勇闯数据科学(一)前期准备与理解编程-程序员宅基地

文章浏览阅读747次,点赞23次,收藏12次。各位大佬好,欢迎收看大型转码连续剧之——的第一集。首先做个自我介绍,辣条是一个刚从经济学转码来的菜鸟,也刚开始在CSDN平台上发帖。这不今年9月准备去读个硕,去年刚本科毕业的辣条得提前学点儿数据科学相关的知识。和ChatGPT聊了聊,这哥们儿建议辣条学个以提升专业技能,那咱就好好学一下。这Gap Year也算是给自己找了个事儿干,学点干货,笔记记在这儿。

慕课哈工大C语言程序设计精髓(第5周练兵区)_判断一个整型数据有几位v2.0 从键盘输入一个整型数据(int型),用switch语句和循环-程序员宅基地

文章浏览阅读2.3k次,点赞2次,收藏8次。1判断一个整型数据有几位v2.0(4分)从键盘输入一个整型数据(int型),编写程序判断该整数共有几位,并输出包含各个数字的个数。例如,从键盘输入整数16644,该整数共有5位,其中有1个1,2个6,2个4。程序运行结果示例1:Please enter the number:1222612226: 5 bits1: 12: 36: 1程序运行结果示例2:Please ent..._判断一个整型数据有几位v2.0 从键盘输入一个整型数据(int型),用switch语句和循环

Scrapy 安装介绍以及基本操作_怎么安装scrapy无pip-程序员宅基地

文章浏览阅读6.2w次,点赞38次,收藏179次。在写之前我们先来了解一下什么是Scrapy?Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便Scrapy 使用了 Twisted['twɪstɪd](其主要对手是Tornado)异步网络框架来处理网络通讯,可以加快我们的下载速度,不..._怎么安装scrapy无pip

Linux下九个实用脚本_linux脚本-程序员宅基地

文章浏览阅读1.9k次,点赞3次,收藏6次。root@ansible ~]# watch -n 1 sh sd.sh 加上watch -n 1 来判断网卡实时流量。if [ "$RT" -gt 250 ] 限定次数250 超过就屏蔽。echo "网站$URL坏掉,请及时处理"echo "网站高危$URL"echo "磁盘已经沾满不能存储数据!echo "$name 创建成功"echo "$name 创建成功"echo "等待磁盘IO响应使用率: $LL"不过要退出 watch 才会使IP屏蔽。_linux脚本

【Bug解决】ImportError: C extension: No module named ‘pandas._libs.tslibs.base‘ not built._importerror: c extension: none not built. if you w-程序员宅基地

文章浏览阅读4.3k次,点赞6次,收藏11次。问题描述笔者用Pyinstaller打包成exe文件,在其他电脑端运行时出现如下问题ImportError: C extension: No module named 'pandas._libs.tslibs.base' not built. If you want to import pandas from the source directory, you may need to run 'python setup.py build_ext --force' to build the C exten_importerror: c extension: none not built. if you want to import pandas from

tf.tile,tf.gather,t f.concat,t f .expand_dims,tf.add_n, tf.stack,tf.sparse_to_dense_tf add_n concat-程序员宅基地

文章浏览阅读345次。temp = tf.range(0,10)*10 + tf.constant(1,shape=[10])temp2 = tf.gather(temp,[1,5,9])with tf.Session() as sess: print (sess.run(temp)) print (sess.run(temp2))输出结果[ 1 11 21 31 41 51 61 ..._tf add_n concat