【C/C++】面向对象的基本概念
2015-08-29 19:32
218 查看
问题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++中的空类默认产生哪些类成员函数?
======================================================================================
问题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个成员函数:默认构造函数、析构函数、拷贝构造函数和赋值函数。
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个成员函数:默认构造函数、析构函数、拷贝构造函数和赋值函数。
相关文章推荐
- 我的第一个C++程序
- 【C/C++】this指针
- DEV-C++
- 【C/C++】指针基本问题
- 【C/C++】运算符问题
- 作业《IOS_C语言》结构体、结构体数组
- LeetCode-Add Digits-解题报告
- C++名字空间详解
- C++名字空间详解
- 各种C++:Borland C++、Symantec C++、Microsoft VisualC++
- C语言中lseek()函数和fseek()函数的使用详解
- C语言中对文件最基本的读取和写入函数
- C语言中的输入输出函数详解与比较scanf,sscanf,printf,sprintf,fprintf
- 简要对比C语言中的dup()函数和dup2()函数
- CString简单介绍及使用
- 我理解的CPP
- 使用C语言操作文件的基本函数整理
- 已知圆弧的一些信息,求得圆弧上中间点的坐标的方法(C++语言描述)
- C/C++内存泄漏及检测
- C++类中成员变量的初始化