第1章 面向对象概述

第一章单元测试

1、UML中接口可用于( )。
    A、提供构造型(stereotype)名称为《interface》的具体类
    B、Java和C++程序设计中,而C#程序设计中不支持
    C、定义可以在多个类中重用的可执行逻辑
    D、声明对象类所需要的服务

2、在面向对象方法中,两个及以上的类作为一个类的父类时,称为( )。
    A、多重继承
    B、多态
    C、封装
    D、层次继承

3、以下关于封装在软件复用中所充当的角色的叙述,正确的是 ( )。
    A、封装使得其他开发人员不需要知道一个软件组件内部如何工作
    B、封装使得软件组件更有效地工作
    C、封装使得软件开发人员不需要编制开发文档
    D、封装使得软件组件开发更加容易

4、一个类是( ) ,在定义类时其属性可以声明为private、protected、public。
    A、一组对象的封装
    B、表示一组对象的层次关系
    C、一组对象的实例
    D、—组对象的抽象定义

5、在定义类一个类时,将其属性声明为private的目的是( )。
    A、实现数据隐藏,以免意外更改
    B、操作符重载
    C、实现属性值不可更改
    D、实现属性值对类的所有对象共享

6、以下关于面向对象继承的叙述中,错误的是( )。
    A、继承是父类和子类之间共享数据和方法的机制
    B、继承定义了一种类与类之间的关系
    C、继承关系中的子类将拥有父类的全部属性和方法
    D、继承仅仅允许单重继承,即不允许一个子类有多个父类

7、面向对象的四个基本特征是( )。
    A、继承、封装、多态、抽象
    B、继承、封装、多态、结构
    C、封装、多态、结构、模块化
    D、抽象、封装、模块、数据

8、首次提出“面向对象”概念的计算机科学家是()。
    A、比尔.盖茨
    B、艾伦.灵图
    C、艾伦.凯
    D、史蒂夫.乔布斯

9、在面向对象方法中,将逻辑上相关的数据及行为绑定在一起,使信息对使用者隐藏称为 ( )
    A、抽象
    B、继承
    C、封装
    D、多态

第一章 单元作业

1、结合本门课的教材《Head First设计模式》中的前言和第一章的内容,跟随书中的经典案例做任务。作业在交流群中给出

第2章 面向对象分析(一)

第2章 单元测试

1、以下方法中适用于寻找概念类的方法是 ( )。
    A、寻找动词法
    B、寻找动名词法
    C、寻找形容词法
    D、寻找名词法

2、要求计算机201803班的同学今天下午打扫卫生。这是属于( )类别的职责。
    A、对象需要知道自己的一些数据
    B、对象需要知道自己的一些状态
    C、对象创建了一个新的实例
    D、对象需要自己完成一些事情

3、采用面向对象方法开发软件的过程中,抽取和整理用户需求并建立问题域精确模型的过程叫( )。
    A、面向对象测试
    B、面向对象实现
    C、面向对象设计
    D、面向对象分析

4、面向对象分析与设计是面向对象软件开发过程中的两个重要阶段,下列活动中,_____ 不属于面向对象分析阶段。
    A、构建分析模型
    B、识别分析类
    C、用例动态建模
    D、评估分析模型

5、以下关于统一过程UP的叙述中,不正确的是 ( ) 。
    A、UP是以用例和风险为驱动,以架构为中心,迭代并且增量的开发过程
    B、UP定义了四个阶段,即起始、精化、构建和确认阶段
    C、每次迭代都包含计划、分析、设计、构造、集成、测试以及内部和外部发布
    D、每个迭代有五个核心工作流

6、面向对象分析的目的是为了获得对应用问题的理解,其主要活动不包括( )。
    A、认定并组织对象
    B、描述对象间的相互作用
    C、面向对象程序设计
    D、确定基于对象的操作

7、在面向对象设计中,用于描述目标软件与外部环境之间交互的类被称为边界类。它可以( )。
    A、表示目标软件系统中具有持久意义的信息项及其操作
    B、协调、控制其他类完成用例规定的功能或行为
    C、实现目标软件系统与外部系统或外部设备之间的信息交流和互操作
    D、分解任务并把子任务分派给适当的辅助类

8、以下( )不是面向对象分析与设计时的关键问题。
    A、应该如何为对象类分配职责(responsibility)
    B、某些针对设计问题的、经过反复验证的解决方案是如何设计出来的
    C、什么样的类应该做什么样的事情
    D、对象之间应该如何协作

9、面向对象分析设计领域,良好的对象设计是构建高质量软件系统的基本要求,如架构性的内聚、可重用性、以及( )等。
    A、商业价值
    B、可维护性
    C、国家政策
    D、企业资产

第2章 单元作业

1、1.如书中第9页所述,我们将使用第一个设计原则。分开变化和不会变化的部分。 2.根据上面的代码,整合鸭子的行为 具体任务,发布在交流群中

第3章 面向对象分析 (二)

第3章单元测试

1、辨析一个概念类是属性还是类,一般可以参考以下准则 ( ),判定这个概念是属性。
    A、它不做具体的事情,它不能改变状态
    B、它能完成具体的事情,它不能改变状态
    C、它不做具体的事情,它能改变状态
    D、它做具体的事情,也能改变状态

2、在面向对象分析设计过程中,CRC是一种寻找概念类的方法。CRC是指( )。
    A、Class Relation Clearly
    B、Class Responsibility Collaboration
    C、Cyclic Redundancy Check
    D、Card Reduced Count

3、CRC分析过程的输入信息是 ( )。
    A、面向对象程序源码
    B、设计模型
    C、用例模型
    D、绘图工具

4、关于在适当的细节层面定义概念类,下面描述不正确的是 ( )。
    A、当发现一个类非常复杂时,要考虑拆分成多个小一点的类
    B、不能有太多的类
    C、与所要解决的问题领域有关系
    D、在实现时由程序员决定每个定义多少个方法

5、头脑风暴是执行CRC法寻找概念类的手段之一,其原则是 ( )。
    A、不是所有的概念都可以提出来,没有依据的概念不应该提
    B、不要批评其他人,所有的概念都可以提
    C、由小组长指定下一位发言者
    D、在整个会议期间一定要严肃,不苟言笑

6、面向对象分析师需要把多种不同的寻找概念类的方法融合,实际工作中不再区分用了何种方法。对或错?( )

7、需求文档中的一个名词,究竟作为一个类,还是一个类的属性,需要具体情况具体分析。对或错?()

8、在分析设计的早期,需要为每个概念类定义方法method,对或错?()

9、CRC 方法寻找概念类的过程是很正式的行为,得出的结论也是正规的,不需要再修改了。对或错?()

第3章单元作业

1、1. 根据书中第22页内容,思考整体类图。将你的理解写在下面。 2. 恭喜你,学会了第一个设计模式-策略模式,将你对策略模式的理解结合你写的代码,加以阐述。(不少于500字)

第4章 从分析到设计

第4章单元测试

1、如果两个顾客在世界的不同地方,要购买音乐会的最后一张票,如何分配这张票?( )
    A、引入一个额外的业务规则,把可用票的查询和临时预定合并起来
    B、使顾客参与软件“竞争”,以买到票
    C、不允许卖出最后一张票,因为这对其中的一位顾客是不公平的
    D、由两个顾客自己商量决定

2、用例描述有三种详细程度,以下叙述中,( )不是有关用例描述的详细程度。
    A、简短的 Brief
    B、口头的 oral
    C、正式的 fully
    D、随意的 casual

3、以下关于断言(assertion)的叙述,不正确的是( )。
    A、在类的代码中,加入一些断言,不是定义契约,仅仅是测试
    B、断言仅仅是一些逻辑表达式
    C、断言不影响程序的执行
    D、断言可以被评估,或者忽略

4、关于程序正确性的定义: {P} A {Q} ,其中( )的叙述是不正确的。
    A、P是前置条件
    B、Q是运行结果
    C、Q是后置条件
    D、A是执行功能

5、若类A仅在其方法Method1中定义并使用了类B的一个对象,类A其他部分的代码都不涉及类B,那么类A与类B的关系应为( )。
    A、关联
    B、依赖
    C、聚合
    D、组合

6、判断一个用例是否是一个合适的用例,以下 ( )不是一个好的方法。
    A、用例是否描述了应该做什么,而不是如何做
    B、用例的描述是否采取了参与者的视点
    C、用例的描述是否采取了设计者的视点
    D、用例是否对参与者有价值

7、契约式设计(Design by Contract)的核心思想,不包括以下 ( )。
    A、软件可靠性需要服务的提供方与客户方都有精确的规格说明
    B、契约式设计DbC使用断言作为供/需双方之间的契约
    C、类不变量是类实例都有一个自己的固定不变的值
    D、断言包括前置条件、后置条件、不变量等

8、针对重要的系统事件定义操作契约,以下 ( )不是操作契约要求的内容。
    A、操作契约的名称
    B、系统操作的运行时间
    C、系统操作的前置条件
    D、系统操作的后置条件

9、需求与领域分析阶段的主要工作,不包括 ( )。
    A、做正确的事情 “Do the right thing”
    B、理解领域问题 Understand the domain
    C、澄清并记录约束和需求 Clarify and record the constraints and requirements
    D、正确地做事情 Do the thing rihght

第4章单元作业

1、根据课程群中发布的作业,完成简单工厂模式的作业

第5章 设计原则GRASP(一)

第5章 单元测试

1、由谁(某个类)来负责创建另一个类的新实例(对象)?可以根据如下( )的GRASP原则来处理。
    A、控制器
    B、高内聚
    C、创建者
    D、设计师

2、通用职责分配软件原则GRASP,不包含以下( )所列的原则。
    A、多态 polymorphism
    B、控制器 Controller
    C、间接性 Indirection
    D、可靠性 Reliability

3、GRASP原则是面向对象设计中可以应用的原则,GoF设计模式是一些解决特定软件问题的最佳实践。这两者之间的关系是 ( )。
    A、GRASP 是比 GOF设计模式更一般的原理
    B、GOF设计模式是比GRASP更抽象的原理
    C、GOF设计模式与GRASP是各种独立的两套原则
    D、GOF设计模式与GRASP是同一层面的概念

4、如图所示的领域模型,由( )类来创建Square对象会比较合适。
    A、MonopolyGame
    B、Piece
    C、Board
    D、Player

5、在下列( )情况下,可以不考虑采用创建者模式。
    A、设计师有自己的经验
    B、程序员有自己的经验
    C、需要使用GOF的工厂模式
    D、需要使用控制器模式

6、在GRASP原则中,为一个对象分配职责的一般原则是( )。
    A、多态
    B、隔离变化
    C、信息专家
    D、高内聚

7、如何保证设计方案支持低的依赖性、低的变化影响度、增加可重用性?在GRASP原则中,( )原则可以支持。
    A、创建者
    B、低耦合
    C、高内聚
    D、信息专家

8、如图1、图2所示是创建Payment的两种不同的方案。根据GRASP原则,图2所示方案比较好。主要因为( )。 图1 图2
    A、符合创建者模式
    B、符合信息专家模式
    C、符合低耦合
    D、符合高内聚

9、GRASP原则之低耦合的精神,以下( )是正确的描述。
    A、模块之间没有耦合时最佳
    B、模块之间很强耦合使得系统的可靠性很强
    C、模块之间保持适度的耦合时合适的
    D、模块与开发框架如J2EE等,也不应该有很多的耦合

第5章 单元作业

1、根据课程群中发布的第五章作业,完成比萨工程模式的代码开发

第6章 设计原则GRASP(二)

第6章单元测试

1、在面向对象方法中,多态指的是( )。
    A、客户类无需知道所调用方法的特定子类的实现
    B、对象动态地修改类
    C、一个对象对应多张数据库表
    D、子类只能够覆盖父类中非抽象的方法

2、软件设计时需要遵循抽象、模块化、信息隐蔽和模块独立原则。在划分软件系统模块时,应尽量做到( )。
    A、高内聚高耦合
    B、高内聚低耦合
    C、低内聚高耦合
    D、低内聚低耦合

3、在面向对象方法中,支持多态的是 ( )。
    A、静态分配
    B、动态分配
    C、静态类型
    D、动态绑定

4、开-闭原则(Open-Closed Principle,OCP)是面向对象的可复用设计的基石。开-闭原则是指一个软件实体应当对( )开放,对修改关闭。
    A、修改
    B、扩展
    C、分析
    D、设计

5、类的设计应遵循三条基本原则。对于一个设计并实现好的类,如果需要功能上的扩充,一般来说应该通过添加新类实现,而不是修改原类的代码。这种原则叫 ( )。
    A、封装原则
    B、开放/封闭原则
    C、最小惊讶原则
    D、单一功能原则

6、依赖倒置原则(Dependence Inversion Principle, DIP)就是要依赖于( ),或者说要针对接口编程,不要针对实现编程。
    A、程序设计语言
    B、建模语言
    C、实现
    D、抽象

7、如图所示的解决方案中,Client可以灵活地选用不同的外部税费计算器。这是应用了GRASP 的 ( )原则 。
    A、抽象机制
    B、继承
    C、多态
    D、模块化

8、如果依据信息专家原则获得的解决方案不合适,既不想违反低耦合、高内聚,也不想违反其他的原则,该如何把职责分配给对象?以下( )是可以选择的GRASP原则。
    A、隔离变化
    B、间接
    C、依赖倒置
    D、开闭原则

9、以下场景 ( )不适合应用纯虚构原则进行职责分配。
    A、一个银行应用有账户、客户、交易等信息需要保存到数据库中
    B、仿真游戏中需要扔色子获得面值
    C、POS系统每笔销售需要记录不同的商品及其数量
    D、POS系统中需要把每笔销售Sales保存到数据库

第6章单元作业

1、请叙述对象依赖和依赖倒置原则的理解 根据OO设计的依赖倒置原则,重做比萨,完成代码实现抽象工厂模式 比较工厂方法和抽象工厂的区别,请详述

第七章 GOF设计模式(一)

第七章单元测试

1、一组对象以定义良好但是复杂的方式进行通信,产生的相互依赖关系结构混乱且难以理解。采用( )模式,可使各对象不需要显式地相互引用,使其耦合松散。而且可以独立地改变它们之间的交互,分布通信。
    A、解释器(Interpreter)
    B、策略(Strategy)
    C、中介者(Mediator)
    D、观察者(Observer)

2、如图所示,一个气象站的数据处理解决方案,采用了( )设计模式。
    A、策略
    B、观察者
    C、接口实现
    D、继承机制

3、以下关于Singleton(单例)设计模式的叙述中,不正确的是( )。
    A、单例模式是创建型模式
    B、单例模式保证一个类仅有一个实例
    C、单例类提供一个访问唯一实例的全局访问点
    D、单例类提供一个创建一系列相关或相互依赖对象的接口

4、下图所示为( ) 设计模式。
    A、适配器(Adapter)
    B、责任链(Chain of Responsibility)
    C、外观( Facade)
    D、桥接(Bridge)

5、适配器(Adapter)设计模式可以用于( ).
    A、将已有类的接口转换成和目标接口兼容
    B、改进系统性能
    C、将客户端代码数据转换成目标接口期望的合适的格式
    D、使所有接口不兼容可以一起工作

6、( ) 将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
    A、Adapter (适配器)模式
    B、Command (命令)模式
    C、Singleton (单例)模式
    D、Strategy (策略)模式

7、下列UML类图表示的是( )设计模式。
    A、备忘录(Memento)
    B、适配器(Adapter)
    C、状态(State)
    D、观察者(Observer)

8、根据Christopher Alexander对模式的定义,模式有四个本质的构成。下列( )不是其中之一。
    A、模式的名字
    B、模式解决的问题
    C、模式编程的语言
    D、模式提出的解决方案

9、下图所示为观察者(Obserrver)模式的抽象示意图,其中( )知道其观察者,可以有任何多个观察者观察同一个目标;提供注册和删除观察者对象的接口。
    A、Subject
    B、Observer
    C、ConcreteSubject
    D、ConcreteObserver

第七章单元作业

1、结合本门课的教材《Head First设计模式》中的第二章的内容,跟随书中的经典案例做任务,具体任务发布在百度网盘当中

第八章 GOF设计模式(二)

第八章单元测试

1、( )设计模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。
    A、工厂方法(Factory Method)
    B、享元(Flyweight)
    C、观察者( Observer)
    D、中介者(Mediator)

2、( )设计模式实现了算法的提供方与算法的使用者隔离,使得算法的变化独立于算法的使用。
    A、命令(Command)
    B、责任链(Chain of Responsibility)
    C、观察者(Observer)
    D、策略(Strategy)

3、( )设计模式为股票信息的发布与对股票感兴趣的股民之间的耦合,减少到最小程度,股民可以自由地决定何时需要得到股票信息或者取消得到通知。
    A、命令(Command)
    B、责任链(Chain of Responsibility)
    C、观察者(Observer)
    D、策略(Strategy)

4、在面向对象软件开发过程中,采用设计模式( ),
    A、允许在非面向对象程序设计语言中使用面向对象的概念
    B、以保证程序的运行速度达到最优值
    C、以减少设计过程创建的类的个数
    D、以复用成功的设计

5、下列UML类图表示的是( )设计模式。
    A、工厂方法
    B、策略
    C、抽象工厂
    D、观察者

6、关于工厂设计模式的叙述中,错误的是 ( )。
    A、提供创建一系列相关或相互依赖的对象的接口,而无需指定这些对象所属的具体类
    B、可应用于一个系统要由多个产品系列中的一个来配置的时候
    C、可应用于强调一系列相关产品对象的设计以便进行联合使用的时候
    D、可应用于希望使用已经存在的类,但其接口不符合需求的时候

7、在POS系统中,有时需要实行价格优惠, 如,对普通客户或新客户报全价;对老客户统一折扣5%;对大客户统一折扣10%;该如何处理?( )
    A、采用适配器模式
    B、采用观察者模式
    C、采用策略模式
    D、使用Switch()语句,而不是if语句

8、如图所示的设计方案, 采用了 ( )的设计模式。
    A、策略模式
    B、观察者模式
    C、工厂模式
    D、外观模式

9、如图所示的设计方案中,contextInterface(){ }里面核心的语句应该是( )。
    A、strategyBehavior:Strategy( );
    B、strategyBehavior:concreteStrategyA( );
    C、strategyBehavior.AlgorithmInterface( );
    D、strategyBehavior();

第八章单元作业

1、结合本门课的教材《Head First设计模式》中的第五章的内容,跟随书中的经典案例做任务,具体任务在百度网盘当中