【C/C++】面向对象的基本概念

来源:互联网 发布:淘宝页面图片 编辑:程序博客网 时间:2024/06/05 00:17

问题1:

Which of the following(s) are NOT related to object-Oriented Design?

A. Inheritance

B. Liskov substitution principle

C. Open-close principle

D. Polymorphism

E. Defensive programming

问题2:

Which of the following C++ keyword(s) is(are) related to encapsulation?

A. virtual

B. void 

C. interface

D. private

E. all of the above

问题3:

C++中的空类默认产生哪些类成员函数?

class Empty {public :}; 

======================================================================================

问题1解析:

面向对象设计的三原则:封装、继承、多态。

里氏代换原则(Liskov Substitution principle)是继承复用的基石:子类必须能够替换它们的基类型。如果每一个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序P在所有对象o1都代换为o2时,程序P的行为没有变化,那么类型T2是类型T1的子类型。换言之,一个软件实体如果使用的是一个基类的话,那么一定适用于其子类,而且它根本不能察觉出基类对象和子类对象的区别。只有衍生类替换基类的同时软件实体的功能没有发生变化,基类才能真正被复用。

开闭原则(Open-close principle)是面向对象设计的重要特性之一:软件对扩展应该是开放的,对修改应该是关闭的。通俗点说,已经设计好的代码应该是不做修改的(闭),如果需求改变,就另外自己去扩展一块去(开),别破坏我原来的代码。

防御式编程(Defensive programming)只是一种编程技巧,与面向对象无关。其主要思想是:子程序应该不因传入错误数据而被破坏,哪怕是由其他子程序产生的错误数据。这种思想是将可能出现的错误造成的影响控制在有限的范围内。

答案E

问题2解析:

封装有一个主要的好处,就是增加软件代码的内聚性。通过增加内聚性,进而提高可复用性和可维护性。此外还可以“信息隐藏”:把不该暴露的信息藏起来。如private、protected之类的关键字。这些关键字可以通过访问控制,来达到信息隐藏的目的。

本题中,interface属于继承,virtual属于多态,private才是与封装有关。

答案D

问题3解析:

类的概念问题。

答案:对于一个空类,编译器默认产生4个成员函数:默认构造函数、析构函数、拷贝构造函数和赋值函数。



0 0
原创粉丝点击