【一】历史篇
简单时代----面向过程编程:
定义数据: 数据1 数据2 数据3 数据4
定义函数: 函数1 函数2 函数3 函数4
综上最后:各种函数和数据的操作
当软件发展的越来越大,代码量越来越多,复杂度更大时---编写面临两个问题:命名重复、代码重复
复杂时代----面向对象编程:
命名问题的解决:分类
eg: 未分类前命名---
检测 :整数加 整数减 整数乘 整数除
复数加 复数减 复数乘 复数除
小数加
分类后的命名---
整数 :{检测 加 减 乘 除}
复数 :{检测 加 减 乘 除}
小数 :{检测 加 减 乘 除}
分数 :{检测 加 减 乘 除}
类的概念呼之欲出,命名也不会同其他加减乘除函数有冲突。但存在继承衍生不好维护等问题。
衍化时代----修正以上问题:
继续提取以上类 :整合
eg: 父类上继承类---
数 : {检测 加 减 乘 除}
整数: {沿用上面数的设计}
小数: {沿用上面数的设计}
所谓继承,就是数这个类的整体设计,沿用给整数,分数小数这些类,作为他们的编写大纲去编写加减乘除这些函数的具体代码。根据整数,分数,小数各自的性 质,做出各自的调整。
这时数这个类,如果你给它里面的加减乘除函数的写了一些很粗糙简单的代码,就叫做父类,基础类。子类们“继承”了父类(把代码进行了复杂化)。
如果没写,那这个类其实就只是个设计图,叫做抽象类。子类们“实现”了抽象类(把空空的设计变成了具体代码)。
【二】发展篇
==============================================================================================================================
【定义篇】
-----------面向过程 ,对某件事整个发生的经过进行模拟的一种编码方式。 eg1: 写作文中记叙文--6要素:时间、地点、人物、事情起因、经过、结果。
即用编程语言‘记述’现实中某件事情发生的整个过程,遵从语言规范同时可以逼近模拟实现过程。
eg2:早上起床--->学校 (a)起床 (b)穿衣 (c)洗脸刷牙 (d)去学校
-----------面向对象 ,“万物皆对象!”开发编译器的前辈在设计它的时候,内置类型(int ,char, double等)。
即万事万物都可以归类然后抽象为一种特定的数据类型------类的形成(由属性成员变量+行为特征函数组成)
属性:对象个性的区别描述 函数:对象共性的行为体现
【区别篇】
【汇总篇】
【参考篇】
1、一篇形象优秀阐述C++认识的文章:详细阐述面向过程和面向对象之间的区别和认识---重点讲解了面向对象三大要素的思想,举例贴切!
http://www.cnblogs.com/nihaoCPP/p/object-oriented-programming.html#3129583
2、作者用思维导图的方式绘制了面向过程编码的认识和结构
http://blog.csdn.net/han_yankun2009/article/details/8148134
3、 作者把面向对象中的继承、模板、实例等一步步娓娓道来,非常深刻!
https://www.zhihu.com/question/27468564?sort=created