山东大学软件学院2017-2018学年面向对象开发技术期末考试试题(回忆版)
(尽力用题目原话复述,但记忆的错误与偏差在所难免,见谅,欢迎指正)
一、什么是重载(overload )?什么是重写(override)?之间的区别是什么,请用面向对象的语言举例说明。
二、什么是静态绑定?什么是动态绑定?各有什么优缺点?
三、动物类Animal,其子类Cat;植物类Plant,其子类Tree,动物类和植物类有共同父类Object,各有对象aAnimal,aCat,aPlant,aTree,aObject,在某java片段中有如下几个方法:
void over(Object aObject,Plant aPlant);//方法一
void over(Animal aAnimal,Object aObject);//方法二
void over(Animal aAnimal,Plant aPlant);//方法三
void over(Cat aCat,Tree aTree);//方法四
请问以下几个方法调用会调用上述哪个方法,并写出分析过程:
over(aObject,aPlant);
over(aCat,aObject);
over(aObject,aObject);
over(aAnimal,aPlant);
over(aCat,aTree);
四、什么是单继承?什么是多重继承?各有什么优缺点?如果让你选择设计一种程序语言,你会选择哪种继承方式?为什么?
五、有一个List类,代码如下:
class List{
public void method1(){}
public void method2(){}
public int method3(int element){}
public void method4(int element){}
public int method5(){}
}
(1)List有一个集合子类Set,有三个方法method2,method3,method5.请分别用继承和组合的方法写出Set的代码
(2)如果让你来选择,你会选择哪种方法来创建Set类,为什么?
六、商品在通过海关时,针对不同国家的有不同的税费收费标准,如果按照普通的设计思路,不符合开闭原则,请选择一种设计模式,并画出UML类图,并结合开闭原则谈谈这样设计有什么好处?
七、在公司中,员工报销需要上报领导审批,不同级别的领导审批权限不同,超过一定的金额就需要上报上级领导审批。在公司中有:主任,权限范围内审批金额<2000元(不包含2000);副董事,审批金额2000-10000(不包含10000);董事,审批金额10000-20000(不包含20000),当金额大于20000时,需要开会商议。请用责任链设计模式解决这个问题,画出类图,并写出主要代码框架。
八、浙江服装厂出售衣服,衣服包含衬衫,T恤,裤子;每件衣服的面料有纯棉,莱卡,亚麻;支付方式有银联支付,京东白条,货到付款。为了尽量减少类的数量,请选择一种设计模式,画出类图,并写出每个变化点一个子类的代码框架。