面向过程VS面向对象的理解

【一】历史篇

           简单时代----面向过程编程:

                      定义数据: 数据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

 

posted @ 2017-07-15 13:40  心沉大海-汇聚成一  阅读(320)  评论(0编辑  收藏  举报