1.面向对象程序设计的基本思想是啥?
咱们先简单说说对象和类
对象:是人们要研究的任何事物。在面对对象软件系统中则是基本的运行时实体,既包含数据,也包含作用于数据的操作。
类:对一组具有共同属性特征和行为特征的对象的抽象。
基本思想:
将一个复杂的大规模软件系统划分为几个规模较小、相对简单的模块,即分而治之。
2.举例说明面对过程和面向对象程序设计的差别
面向过程:
就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
特性:模块化 流程化
面向对象:
是把构成问题的事物分解成各个对象,以对象作为基础描叙某个事物在整个解决问题步骤中的行为。
特性:抽象 封装 继承 多态
说了这么多的差别,总结一下吧:
面向过程的语言更加偏向底层,目前IT行业比较受欢迎的几大系统的内核和操作系统都是用C编写的
面向对象的语言更加注重开发,例如,web开发,Java后台开发等,虽然用到了不同的语言,但都有一个相同的特性——面向对象。
3.封装性给面向对象程序设计带来了什么好处?
在面对对象程序设计方法中,所谓封装,就是包含和隐藏对象信息,如内部数据结构和代码的能力。
在面向对象的过程中,通过创建高度独立的对象(先定义类)将代码与数据捆绑在一起,并在对象中包含了所必需的代码和数据。
封装性的优点:
1.降低了程序设计的复杂度
将操作对象的内部复杂性与应用程序的其他部分隔离开。程序员只需要通过对象的接口来操作对象完成特定的任务,不需要知道对象内部复杂的细节。
2.提高了数据的安全性和代码的可靠性
外部代码不能访问对象内部的私有数据,避免对这些数据的非法操作,从而提高了这些数据的安全性。通过类实现封装,集中和统一了对类中数据的所有操作,从而避免因分散而造成的错误。
3.改善了软件的可维护性
类将数据与对数据的操作封装成一个整体,但类的接口(即类的公用部分)与实现是分离的。类的接口保持不变,实现部分的变化不会影响我们对该类的使用。对象的内部状态不受外界干扰,也不会影响其他模块。可以大大缩短我们查找程序中错误的时间。
4.改善了程序模块可重用性
封装隐藏了内部的复杂性,提供给使用者一个简单的接口,使得重用一个模块变成一件easy的事情。而对于广大程序员的我们来说是很棒棒了。
4.面向对象程序设计中的继承性有啥好处?
继承性是面向对象程序设计的第二个主要特征。而继承的目的就是重用。
(重用已有的程序代码可以大大降低软件开发的成本,提高软件开发的效率,缩短开发时间。程序员表示好评)
所谓继承,就是在一个已有类的基础上创建一个新类,这个新类获得已有类的数据和操作代码,并且新类可以增加新的数据与操作代码。
继承性的优点:
1.(一直在重复的)继承性很好的实现了代码的重用
在已有类的基础上构造、创建和扩充新类最有效的手段。具有可进化性,并且在使用已有类时不更改已存在的代码。减少代码和数据的冗余度。
2.能改进软件系统的可维护性
类的继承层次结构自然地表达了人们分析问题时所用的分类层次结构。因此,按照继承的方法开发出来的面向对象软件系统的理解性会更好,从而改善软件系统的可维护性。并通过增强一致性来减少板块间的接口和界面,以此来增强程序的易维护性。
3.使已有程序库具有清晰的层次结构关系
如果没有继承概念的支持,程序库中所有的类就像一盘毫无关系的散沙,管理和使用都不太方便。所以继承是管理已有代码的有力工具。
5.多态性给面向对象带来了啥好处?
啥是“多态性”:
自然语言:多态性是指“一词多义”,相同的动词作用到不同类型的对象上面。
例如:学习操作系统、学习微机原理、学习C++、学习通信概论、学习MATLAB等这些行为都具有相似的动作——“学习”,但是它们作用的对象不同,却都表达了同样的含义——学习课程。
程序设计:当不同的对象接收到相同的消息产生不同的动作,从而实现“一个对外接口,多种内在实现形式”,降低程序设计的复杂性。
C++实现多态性有以下两种情况:
编译时的多态性:通过函数重载、运算符重载、模板实现
运行时的多态性:通过虚函数实现
要想进一步理解“多态性”的话,请看下面代码:
class shape{ //创建基类
public:
virtual float area(){
//关键字virtual声明的函数为虚函数
return -1;}
};
class circle:public shape{
//创建圆形派生类
float radius;
public:
circle(float r){
radius = r;
}
float area(){
//在派生类中,虚函数被重新定义以实现不同的操作
return 3.14158*radius*radius;
//这种方式被叫做函数超越(函数覆盖)
}
};
int main(){shape obj,*ptr; //创建shape类对象obj,指向shape类对象的指针ptr
circle c(3.6); //创建circle类对象并初始化
ptr = &obj; //把ptr指针指向shape类对象
cout<<ptr->area()<<endl;//输出面积
ptr =&c;//把ptr指针指向circle类对象
cout<<ptr->area()<<endl;//输出面积
ps:运行时的多态性的体现:以指针ptr所指的对象来确定使用虚函数的哪个版本。
利用多态性有利于直接和精确地把握事物,不去涉及具体的数据结构和类型,只看重揭示系统的逻辑合理性和内在实质,简化复杂度,提高了更好的灵活性、问题的抽象性和程序的可维护性
6.类库三连问
什么是类库!
类库是类的集合,并且给出了多个类之间的关系描述。
例如:Microsoft Visual C++系统中提供的MFC类库,
C++ Builder系统中提供的VCL类库,
Borland C++系统中提供的OWL类库
如何使用类库呢?
先了解以下内容:
(1)类库的类层次结构
(2)可能需要用到的类以及基类的属性和方法
(3)通过联机文档提供的例子学习有关类的使用方法
如何利用类库呢?
一方面要充分利用开发环境所提供的已有类库中的类或者对其中的某些类进行扩充得到符合要求的类。
另一方面,在软件开发过程中认真总结并建立与应用领域中相关的类库,为以后在该领域开发新的项目奠定基础。