《软件设计架构试卷计算机架构_计算机-软件工程.pdf》由会员分享,可在线阅读,更多相关《软件设计架构试卷计算机架构_计算机-软件工程.pdf(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件设计架构试卷 1/14 一、选择题(每题 2 分,共 24 分)1.以下关于构造函数的说法,其中错误的是(B )A.构造函数的函数名必须与类名相同 B.构造函数可以指定返回类型 C.构造函数可以带有参数 D.构造函数可以重载 2.类的构造函数是在(B )调用的。A.类创建时 B.创建对象时 C.删除对象时 D.不自动调用 3.在以下关于方法重载的说法,其中错误的是(D)A.方法可以通过指定不同的返回值类型实现重载 B.方法可以通过指定不同的参数个数实现重载 C.方法可以通过指定不同的参数类型实现重载 D.方法可以通过指定不同的参数顺序实现重载 4.在定义类时,如果希望类的某个方法能够在派生
2、类中进一步进行改进,以处理不同的派生类的需要,则应该将该方法声明为(D )A.sealed B.public C.virtual D.override 5.(D )表示了对象间的 is-a 的关系。A.组合 B.引用 C.聚合 D.继承 6.关于单一职责原则,以下叙述错误的是(C )。A.一个类只负责一个功能领域中的相应职责 B.就一个类而言,应该有且权有一个引起它变化的原因 软件设计架构试卷 2/14 C.一个类承担的职责越多,越容易复用,被复用的可能性越大 D.一个类承担的职责过多时需要将职责进行分离,将不同的职责封装在不同的类中 7.某系统通过使用配置文件,可以在不修改源代码的情况下更换
3、数据库驱动程序,该系统满足(B )A.里氏代换原则 B.接口隔离原则 C.单一职责原则 D.开闭原则 8.一个软件实体应尽可能少地与其他软件实体发生相互作用,这样,当一个模块修改时,就会尽量少的影响其他模块,扩展会相对容易。这是(A )的定义。A.迪米特法则 B.接口隔离原则 C.里氏代换原则 D.合成复用原则 9.当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用(A)模式。A.创建型 B.结构型 C行为型 D.以上都可以 10.在观察者模式中,表述错误的是(C )A.观察者角色的更新是被动的。B.被观察者可以通知观察者进行更新 C.观察者可以改变被观察者的状态,再由被观察者通知所
4、有观察者依据被观察者的状态进行。D.以上表述全部错误 构造函数可以指定返回类型构造函数可以带有参数构造函数可以重载类的构造函数是在调用的类创建时创建对象时删除对象时不自动调用在以下关于方法重载的说法其中错误的是方法可以通过指定不同的返回值类型实现重载方法可序实现重载在定义类时如果希望类的某个方法能够在派生类中进一步进行改进以处理不同的派生类的需要则应该将该方法声明为表示了对象间的的关系组合引用聚合继承关于单一职责原则以下叙述错误的是一个类只负责一个功能领复用被复用的可能性越大一个类承担的职责过多时需要将职责进行分离将不同的职责封装在不同的类中某系统通过使用配置文件可以在不修改源代码的情况下更换
5、数据库驱动程序该系统满足里氏代换原则接口隔离原则单一职责原则软件设计架构试卷 3/14 11.下面的类图表示的是哪个设计模式?(A )。A.抽象工厂模式 B.观察者模式 C.策略模式 D.桥接模式 12.在采用“4+1”视图模型来描述软件体系结构中,系统工程师侧重于(D )A.实现视图 B.进程视图 C.逻辑视图 D.部署视图 二、填空题(每空 1 分,共 11 分)1.类体内成员有 3 个访问权限,说明它们的关键字分别是 public、private和 protected。2.请从工厂、抽象工厂、原型、单例、外观、适配器、组合、代理、命令、构造函数可以指定返回类型构造函数可以带有参数构造函数
6、可以重载类的构造函数是在调用的类创建时创建对象时删除对象时不自动调用在以下关于方法重载的说法其中错误的是方法可以通过指定不同的返回值类型实现重载方法可序实现重载在定义类时如果希望类的某个方法能够在派生类中进一步进行改进以处理不同的派生类的需要则应该将该方法声明为表示了对象间的的关系组合引用聚合继承关于单一职责原则以下叙述错误的是一个类只负责一个功能领复用被复用的可能性越大一个类承担的职责过多时需要将职责进行分离将不同的职责封装在不同的类中某系统通过使用配置文件可以在不修改源代码的情况下更换数据库驱动程序该系统满足里氏代换原则接口隔离原则单一职责原则软件设计架构试卷 4/14 迭代器、观察者、策
7、略模式中选择合适的模式填入下列的空缺中。1)工厂模式中,父类负责定义创建对象的公共接口,子类决定要创建的具体类是哪一个。2)单例模式确保某一个类仅有一个实例,并自行实例化并向整个系统提供这个实例。3)外观 模式定义了一个高层接口,这个接口使得这一子系统更加容易使用,为子系统中的一组接口提供一个一致的界面,简化了一群类的接口。4)策略模式在对象的集合之中游走,而不暴露集合的实现。5)观察者 模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新,也就是让对象能在状态改变时被通知。3.三层架构中的三层分别是指逻辑层、视图层和模型层。三、问答题(每
8、题 5 分,共 20 分)1.简述“开闭”原则的基本思想。请举出一个使用了软件“开闭”原则的软件设计模式,其中何处体现了“开闭”原则?开闭原则:一个软件实体像类、模块和函数应该对扩展开放,对修改关闭。抽象工厂模式:当添加新的产品族时,符合开闭原则,新增加的产品族,只需要对应增加一个新的具体工厂,对已有代码无须做任何修改。2.抽象类和接口有什么区别?(1)、一个类只能继承一个抽象类,而一个类却可以实现多个接口;构造函数可以指定返回类型构造函数可以带有参数构造函数可以重载类的构造函数是在调用的类创建时创建对象时删除对象时不自动调用在以下关于方法重载的说法其中错误的是方法可以通过指定不同的返回值类型
9、实现重载方法可序实现重载在定义类时如果希望类的某个方法能够在派生类中进一步进行改进以处理不同的派生类的需要则应该将该方法声明为表示了对象间的的关系组合引用聚合继承关于单一职责原则以下叙述错误的是一个类只负责一个功能领复用被复用的可能性越大一个类承担的职责过多时需要将职责进行分离将不同的职责封装在不同的类中某系统通过使用配置文件可以在不修改源代码的情况下更换数据库驱动程序该系统满足里氏代换原则接口隔离原则单一职责原则软件设计架构试卷 5/14(2)、接口中不能含有静态代码块以与静态方法,而抽象类可以有静态代码块和静态方法;(3)、抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 pu
10、blic static final类型的;(4)、接口只能包含方法声明,而抽象类还可以包含方法的定义。3.GOF模式分为几种,每种包含哪些模式?以与这三种模式的作用.创建型模式:简单工厂模式;工厂方法模式;抽象工厂模式(Abstract Factory);创建者模式;原型模式;单例模式。作用:抽象了实例化过程,帮助一个系统独立于如何创建、组合和表示他的那些对象。一个类创建型 模式使用继承改变被实例化的类 结构型模式:外观模式;适配器模式;代理模式;装饰模式;组合模式;桥模式;享元模式 作用:程序的结构上解决模块之间的耦合问题 行为型模式:观察者模式;状态模式;策略模式;命令模式;访问者模式;解
11、释器模式;备忘录模式;职责链模式;访问者模式;模板方法模式;迭代器模式 作用:分配算法和对象间的职责 4、简述框架与架构的区别?框架是软件,架构不是软件 框架:应用的半成品,就是一组组件,供你选用完成你自己的系统 构造函数可以指定返回类型构造函数可以带有参数构造函数可以重载类的构造函数是在调用的类创建时创建对象时删除对象时不自动调用在以下关于方法重载的说法其中错误的是方法可以通过指定不同的返回值类型实现重载方法可序实现重载在定义类时如果希望类的某个方法能够在派生类中进一步进行改进以处理不同的派生类的需要则应该将该方法声明为表示了对象间的的关系组合引用聚合继承关于单一职责原则以下叙述错误的是一个
12、类只负责一个功能领复用被复用的可能性越大一个类承担的职责过多时需要将职责进行分离将不同的职责封装在不同的类中某系统通过使用配置文件可以在不修改源代码的情况下更换数据库驱动程序该系统满足里氏代换原则接口隔离原则单一职责原则软件设计架构试卷 6/14 架构:是关于软件如何设计的重要策略。软件架构决策设计到如何将软件系统分解成不同的部分、各部分之间的静态结构关系和动态交互关系等 四、程序填空(每空 2 分,共 20 分)1.某系统提供一个简单计算器,具有简单的加法和减法功能,系统可以根据用户的选择实例化相应的操作类,现使用简单工厂模式设计该系统。public class Operation priv
13、ate double _numberA=0;private double _numberB=0;public virtual double GetResult()double result=0;return result;/数字 A /public double NumberA get 构造函数可以指定返回类型构造函数可以带有参数构造函数可以重载类的构造函数是在调用的类创建时创建对象时删除对象时不自动调用在以下关于方法重载的说法其中错误的是方法可以通过指定不同的返回值类型实现重载方法可序实现重载在定义类时如果希望类的某个方法能够在派生类中进一步进行改进以处理不同的派生类的需要则应该将该方法声明
14、为表示了对象间的的关系组合引用聚合继承关于单一职责原则以下叙述错误的是一个类只负责一个功能领复用被复用的可能性越大一个类承担的职责过多时需要将职责进行分离将不同的职责封装在不同的类中某系统通过使用配置文件可以在不修改源代码的情况下更换数据库驱动程序该系统满足里氏代换原则接口隔离原则单一职责原则软件设计架构试卷 7/14 return _numberA;set _numberA=value;/数字 B /public double NumberB get return _numberB;set _numberB=value;构造函数可以指定返回类型构造函数可以带有参数构造函数可以重载类的构造函数
15、是在调用的类创建时创建对象时删除对象时不自动调用在以下关于方法重载的说法其中错误的是方法可以通过指定不同的返回值类型实现重载方法可序实现重载在定义类时如果希望类的某个方法能够在派生类中进一步进行改进以处理不同的派生类的需要则应该将该方法声明为表示了对象间的的关系组合引用聚合继承关于单一职责原则以下叙述错误的是一个类只负责一个功能领复用被复用的可能性越大一个类承担的职责过多时需要将职责进行分离将不同的职责封装在不同的类中某系统通过使用配置文件可以在不修改源代码的情况下更换数据库驱动程序该系统满足里氏代换原则接口隔离原则单一职责原则软件设计架构试卷 8/14 class OperationAdd:
16、Operation public override double GetResult()double result=0;result=NumberA+NumberB;return result;/减法类 /class OperationSub:Operation public override double GetResult()double result=0;result=NumberA-NumberB;构造函数可以指定返回类型构造函数可以带有参数构造函数可以重载类的构造函数是在调用的类创建时创建对象时删除对象时不自动调用在以下关于方法重载的说法其中错误的是方法可以通过指定不同的返回值类型实
17、现重载方法可序实现重载在定义类时如果希望类的某个方法能够在派生类中进一步进行改进以处理不同的派生类的需要则应该将该方法声明为表示了对象间的的关系组合引用聚合继承关于单一职责原则以下叙述错误的是一个类只负责一个功能领复用被复用的可能性越大一个类承担的职责过多时需要将职责进行分离将不同的职责封装在不同的类中某系统通过使用配置文件可以在不修改源代码的情况下更换数据库驱动程序该系统满足里氏代换原则接口隔离原则单一职责原则软件设计架构试卷 9/14 return result;class OperationFactory public static createOperate(string operat
18、e)Operation oper=null;switch(operate)case+:oper=new OperationAdd();break;case-:oper=new OperationSub();break;构造函数可以指定返回类型构造函数可以带有参数构造函数可以重载类的构造函数是在调用的类创建时创建对象时删除对象时不自动调用在以下关于方法重载的说法其中错误的是方法可以通过指定不同的返回值类型实现重载方法可序实现重载在定义类时如果希望类的某个方法能够在派生类中进一步进行改进以处理不同的派生类的需要则应该将该方法声明为表示了对象间的的关系组合引用聚合继承关于单一职责原则以下叙述错误的是
19、一个类只负责一个功能领复用被复用的可能性越大一个类承担的职责过多时需要将职责进行分离将不同的职责封装在不同的类中某系统通过使用配置文件可以在不修改源代码的情况下更换数据库驱动程序该系统满足里氏代换原则接口隔离原则单一职责原则软件设计架构试卷 10/14 return oper;class Program static void Main(string args)Operation oper;oper=OperationFactory.createOperate(+);oper.NumberA=3;oper.NumberB=5.5;Console.WriteLine(oper.GetResult
20、();Console.ReadKey();2.某公司开发儿童玩具汽车,该玩具汽车在移动过程中伴随着灯光闪烁和声音提示,在该公司以往的产品中已经实现了控制灯光闪烁和声音提示的程序,为了重用先前的代码并且使得汽车控制软件具有更好的灵活性和扩展性,使用适配器模式设计该系统。在代码中 CarController类是汽车控制器,它包括三个方法用于控制汽车的行为,其中 move()用于控制汽车的移动,play()用于控制汽车的声音,light()用于控制汽车灯光的闪烁,构造函数可以指定返回类型构造函数可以带有参数构造函数可以重载类的构造函数是在调用的类创建时创建对象时删除对象时不自动调用在以下关于方法重载
21、的说法其中错误的是方法可以通过指定不同的返回值类型实现重载方法可序实现重载在定义类时如果希望类的某个方法能够在派生类中进一步进行改进以处理不同的派生类的需要则应该将该方法声明为表示了对象间的的关系组合引用聚合继承关于单一职责原则以下叙述错误的是一个类只负责一个功能领复用被复用的可能性越大一个类承担的职责过多时需要将职责进行分离将不同的职责封装在不同的类中某系统通过使用配置文件可以在不修改源代码的情况下更换数据库驱动程序该系统满足里氏代换原则接口隔离原则单一职责原则软件设计架构试卷 11/14 play()和 light()是抽象方法。interface Sound /抽象声音类 void ph
22、onate();class ConcreteSound:Sound /具体声音类 public void phonate()Console.WriteLine(声音播放!);interface Lamp /抽象灯光类 void twinkle();class ConcreteLamp:Lamp /具体灯光类 public void twinkle()Console.WriteLine(灯光闪烁!);构造函数可以指定返回类型构造函数可以带有参数构造函数可以重载类的构造函数是在调用的类创建时创建对象时删除对象时不自动调用在以下关于方法重载的说法其中错误的是方法可以通过指定不同的返回值类型实现重载方
23、法可序实现重载在定义类时如果希望类的某个方法能够在派生类中进一步进行改进以处理不同的派生类的需要则应该将该方法声明为表示了对象间的的关系组合引用聚合继承关于单一职责原则以下叙述错误的是一个类只负责一个功能领复用被复用的可能性越大一个类承担的职责过多时需要将职责进行分离将不同的职责封装在不同的类中某系统通过使用配置文件可以在不修改源代码的情况下更换数据库驱动程序该系统满足里氏代换原则接口隔离原则单一职责原则软件设计架构试卷 12/14 interface CarController /汽车控制器 public void move()Console.WriteLine(汽车移动!);public
24、abstract void play();public abstract void light();class CarAdapter:CarController /汽车适配器 private Sound sound;private Lamp lamp;public CarAdapter(Sound sound,Lamp lamp)this.sound=sound ;this.lamp=lamp ;public override void play()构造函数可以指定返回类型构造函数可以带有参数构造函数可以重载类的构造函数是在调用的类创建时创建对象时删除对象时不自动调用在以下关于方法重载的说法其
25、中错误的是方法可以通过指定不同的返回值类型实现重载方法可序实现重载在定义类时如果希望类的某个方法能够在派生类中进一步进行改进以处理不同的派生类的需要则应该将该方法声明为表示了对象间的的关系组合引用聚合继承关于单一职责原则以下叙述错误的是一个类只负责一个功能领复用被复用的可能性越大一个类承担的职责过多时需要将职责进行分离将不同的职责封装在不同的类中某系统通过使用配置文件可以在不修改源代码的情况下更换数据库驱动程序该系统满足里氏代换原则接口隔离原则单一职责原则软件设计架构试卷 13/14 sound.phonate();/声音播放 public override void light()lamp.
26、twinkle();/灯光闪烁 class Program static void Main(string args)Sound sound;Lamp lamp;CarController car;sound=new ConcreteSound();lamp=new ConcreteLamp();car=new CarAdapter(sound,lamp);car.move();car.play();car.light();Console.ReadKey();构造函数可以指定返回类型构造函数可以带有参数构造函数可以重载类的构造函数是在调用的类创建时创建对象时删除对象时不自动调用在以下关于方法重
27、载的说法其中错误的是方法可以通过指定不同的返回值类型实现重载方法可序实现重载在定义类时如果希望类的某个方法能够在派生类中进一步进行改进以处理不同的派生类的需要则应该将该方法声明为表示了对象间的的关系组合引用聚合继承关于单一职责原则以下叙述错误的是一个类只负责一个功能领复用被复用的可能性越大一个类承担的职责过多时需要将职责进行分离将不同的职责封装在不同的类中某系统通过使用配置文件可以在不修改源代码的情况下更换数据库驱动程序该系统满足里氏代换原则接口隔离原则单一职责原则软件设计架构试卷 14/14 五、编程题(25 分)1.用观察者模式 C#实现。在气象观测中,它能够追踪目前的天气状况,包括温度和
28、湿度。实现一个布告板,能够分别显示目前的状态,气象统计和简单的预报。当气象站中获取最新的测量数据时,三种布告板必须实时更新。(10 分)。2.用装饰者模式 C#设计实现图书馆 1 楼的手抓饼销售程序,并画出相应的类图(15 分)。程序代码请见压缩包:UML 类图:ConcreteComponent+sampleOperation()money().:String:doubleDirectorabstract-component:Component+Director()sampleOperation()money().:void:String:doubleComponent+sampleOper
29、ation()money().:String:doubleConcreteDirector1+ConcreteDirector1()sampleOperation()money().:void:String:doubleConcreteDirector2+ConcreteDirector1()sampleOperation()money().:void:String:double 构造函数可以指定返回类型构造函数可以带有参数构造函数可以重载类的构造函数是在调用的类创建时创建对象时删除对象时不自动调用在以下关于方法重载的说法其中错误的是方法可以通过指定不同的返回值类型实现重载方法可序实现重载在定义类时如果希望类的某个方法能够在派生类中进一步进行改进以处理不同的派生类的需要则应该将该方法声明为表示了对象间的的关系组合引用聚合继承关于单一职责原则以下叙述错误的是一个类只负责一个功能领复用被复用的可能性越大一个类承担的职责过多时需要将职责进行分离将不同的职责封装在不同的类中某系统通过使用配置文件可以在不修改源代码的情况下更换数据库驱动程序该系统满足里氏代换原则接口隔离原则单一职责原则