学习Java有很长时间了,一直在说面向对象编程,编写类,new一个对象出来。突然有一天,我问自己,什么是类,什么是对象,什么是面向对象?面向过程又是什么?我竟然一个都答不上来。
这也是写这篇文章的原因。好记性不如烂笔头,也为了给初学者拨开一丝迷雾(好吧,把自己说的像个那啥)。
什么是面向过程编程?
面向过程编程即是将程序分成“数据”和“处理函数”两个部分,程序以“处理函数”为核心,要执行什么操作,就将所需的“数据”传给相应的“函数”,从而完成任务。它关注的是“事件”。面向过程编程人员,他们把需求理解成一条一条的业务流程,询问用户的业务流程,然后他们分析这些流程,把这些流程交织组合在一起,最后实现了需求。 在面向过程程序设计中,问题被看作一系列需要完成的任务,每个任务都可以抽象出一个函数,解决问题的焦点就集中在函数上。函数关注的是如何根据规定的条件完成指定的任务。比如: 我们每天,从床上起来,穿上衣服,洗脸,刷牙,然后上班,每个行为都可以抽象出一个函数,这些函数串联起来就成了我们早上要做的事。
优点:1. 面向过程的编程(OPP)优点是程序顺序执行,流程清晰明了。
2. 面向过程的性能比面向对象要高,因为类调用时需要实例化,开销比较大,比较消耗资源,比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。所以当我们开发一个不是很复杂的程序,同时对性能方面又有比较高要求,这时候面向过程就显得十分高效了。
缺点:1. 主控程序承担了太多的任务,主控和模块之间的承担的任务不均衡。
2. 重用性低,面向过程定义的函数不方便扩展。
3. 封装性不好,不能避免外部错误对它的影响。程序的安全性正确性没法保障。
什么是面向对象编程?
在回答这个问题前,让我们先看看什么是类和对象。
类是抽取了同类事物的共同属性和行为形成的抽象的对象或实体的模板,是定义了同一类所有对象的属性和行为的模型。它是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起。
对象是类的实例,是具有类类型的变量。
下面比较下类与对象的差别,就很好理解了。
类 | 对象 | |
---|---|---|
1 | 类是一种抽象的数据类型 | 对象是实际存在的实体 |
2 | 类不是实体,不占存储空间 | 对象是占存储空间的,它的属性是有值的 |
3 | 类表达的是一种抽象概念,描述的是该类对象的共同特征 | 对象是具体事物以类为模板来生成的,它具有自己的状态 |
举个例子,工厂生产零件,会有一个模具,这里的模具就是类,根据模具生产出来的零件就是一个个对象。
OK,对象和类的概念清楚了,就开始进入面向对象了。
所谓面向对象,你得记住,一切皆是对象。通过将现实世界中的事物抽象成对象,事物之间的关系抽象成类,继承,以便人们更好的实现对现实世界的抽象和数学建模,也更易于按照人们通常的思考方式设计、分析复杂的系统,然后按照面向对象的编程方式实现。,面向对象的编程人员,他们把需求理解成一个一个的对象,他们会询问用户“这个东西叫做什么,他们从哪里来,能做什么事”,然后他们制造这些对象,让这些对象互相传递信息,以符合业务需要。
面向对象程序设计中有几个重要特征:(转)抽象、封装、多态、继承(懒得打字了)。
ok,到此结束了,这篇博客被一再搁浅,今天也算是收尾了。