2017-2018-2 OOD试卷AB

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yqj2065/article/details/80820151
一、 编程论述题:框架设计者
1. 以SortTest和IntSort为例,说明什么是 控制反转IoC(7分)
2.什么是抽象依赖原则,它与应用程序、框架的关系(5分)
3. 有一个接口如下
 package util;
@FunctionalInterface  public interface  DoubleOP { 
    double op(double m,double n) ;
}
编写应用程序App,以DoubleOP 的实现类、匿名类和λ表达式提供 回调函数,分别完成m-n、m*n*n和求m与n大值功能。(8分)
二、 论述题:Parnas原则
1. 什么是Parnas原则,它在软件设计中的地位(6分)
2. 什么是针对接口编程,什么是类的接口,Java中如何限定类的接口(8分)
3. 为什么说 动态类型语言无法遵循Parnas原则(6分)
三、 编程论述题:装饰模式
1.以类图介绍装饰模式,介绍其意图、角色。(5分)
2.用Java代码介绍结点和自然数模型(7分)
3. 按照Num模型,讨论职业/ IProfession类层次。IProfession定义了方法say(String),其实现类教师/ Teacher、医生、律师……按照其职业习惯给出say(String)的实现,这些实现类相当于Num模型中的Zero。而才艺/Talent类层次(相当于NextOne),可以装饰基本对象,say(String)实现中,在必要的时候会说english、在必要的时候会唱几句……(8分)
四、 论述题:抽象依赖原则的使能工具
1. 为什么说 注入器是抽象依赖原则的使能工具(7分)
2. 说明God使用中出现空指针异常的若干原因(7分)
3. 说明God的不足,并介绍Spring(6分)
五、 编程论述题:模板方法模式
1. 以类图介绍模板方法模式,介绍其意图、角色。(5分)
2.下面的抽象类Sum封装了求和函数getSum,(8分)
package templateMethod;
public abstract class Sum{
    public final double getSum(int a,int b){
        double sum=0;
        for(int i =a;i<=b; i=next(i)){
            sum+=item(i);
        }
        return sum;        
    }
    public int next(int i){return i++;}
    public abstract double item(int x);
}
为什么需要设计IItem、INext分别封装一个抽象方法?并设计4参数的模板方法
    public final double getSum(int a,int b,INext iNext,IItem iItem){
      //添加代码
}

3.说明对“模板方法是一种代码复用的基本技术。它们在类库中尤为重要,它们提取了类库中的公共行为”的理解。(7分)

B卷

一、 编程论述题:行为参数化
1. 什么是行为参数化,为什么需要行为参数化(5分)
2. 为什么需要为Condition接口定义defaule方法and,or.并给出代码(8分)
3.什么是闭包,说明C语言在此的缺陷(7分)
二、 编程论述题:桥接模式
1.以类图介绍桥接模式,介绍其意图、角色。(5分)
2. 使用下面的接口F和G,构造复合函数(x+2)*(x+2)+1(8分)
public interface F {
   public int f(int x) ;   
}
public interface G {
   public F g(F y);
}
3. 什么是高阶函数,其意义是什么(7分)

三、 论述题:面向对象与复用性
1.为什么以父类的代码复用为目的的继承,是错误的思考方式。(5分)
2.解释“作为复用机制,委派优先于继承”。(7分)
3.用Java代码举例说明子类复用父类代码的5种形式。(8分)
 
四、 论述题:控制反转
1.什么是好莱坞原则,什么是控制反转IoC?(6分)
2. 框架向上层传递数据时,可以采用通知或轮询,比较两者的优缺点。(6分)
3. 介绍C、Scheme和Java中设计框架的技术(8分)

五、 编程论述题:适配器模式.
1. 以类图介绍适配器模式,介绍其意图、角色。(5分)
2.假定接口Animal(生命) 有抽象方法eat()、move (),它的实现类有猫/Cat、狗/Dog等等;而第三方提供的(已经存在的)鸟/Bird类,有接口如eat()和fly();编写BirdWrapper,使得Client可以如下统一处理Animal。
package delegate.adapter;
public class Client{
    public static void main(String args[]) {
Animal a= new BirdWrapper();
a.eat();
a.move();
}
}(7分)
3.包装类BirdWrapper与遗留类Bird,既可以是Is-A的继承关系,也可以Has-A的组合关系。编写上面一小题的另外版本的BirdWrapper,并比较两者的优缺点。(8分)

猜你喜欢

转载自blog.csdn.net/yqj2065/article/details/80820151