1、面向对象理解
面向对象程序设计主要是把事物对象化,包括其属性和行为(比如类的属性和方法),降低代码耦合,提高复用性。
面向对象编程更贴近实际生活的思想。总体来说面向对象的底层还是面向过程,面向过程抽象成类,然后封装,方便使用就是面向对象(万物皆对象)。再比如汽车发动机的就是一个对象。我们不需要知道发动机怎么工作的,我们只需要知道加油,它就会输出动力。汽车轮子等其他都是一个对象,这些对象拼起来就是一个汽车。
通俗点讲就是我们用程序处理一个问题的时候,我们不能想着怎么快速解决这个问题。应该先对这个问题进行抽象化,抽象成一个对象。而这个对象可以是问题的描述,也可以是问题的解。
比如我们A、B两个数字求和,我们可以先拿A,再拿B,再相加,但是这是面向过程编程。可以对这个问题进行抽象,这个问题就是拿到两个数字,然后求和,那么可以理解为有一个对象,它有两个属性,一个求和行为。那么是不是所有数字的求和都能被这个对象解决了。我们只用告诉这个对象我有两个数字,然后我就拿到了结果,具体它怎么做的我们不关心,这是不是封装。当然这个形容太简单了,但是实际上java就是这么做的,可以看一下BigDecimal类,关于金融计算这个类用的就多了。
面向对象语言的基本特征:
- 万物皆对象
- 程序是对象的集合,它们通过发送消息来告知彼此所要做的
- 每个对象都拥有其类型(每个对象都是某个类class的一个实例对象instance)
- 某一特定类型的所有对象都可以接受同样的消息
2、面向过程和面向对象对比
面向过程(步骤化)就是分析出实现需求所需要的步骤通过函数一步一步实现这些步骤,接着依次调用即可。
面向对象(行为化)面向对象是把整个需求按照特点、功能划分,将这些存在共性的部分封装成对象,创建了对象不是为了完成某一个步骤,而是描述某个事物在解决问题的步骤中的行为。或者将繁琐的步骤,通过行为、功能,模块化,这就是面向对象
3、面向过程和面向对象的优缺点:
面向过程
- 优点:性能上它是优于面向对象的,因为类在调用的时候需要实例化,开销过大。
- 缺点:不易维护、复用、扩展
- 用途:单片机、嵌入式开发、Linux/Unix等对性能要求较高的地方
面向对象
- 优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护
- 缺点:性能比面向过程低
低耦合,简单的理解就是说,模块与模块之间尽可能的独立,两者之间的关系尽可能简单,尽量使其独立的完成成一些子功能,这避免了牵一发而动全身的问题。这一部分我们会在面向对象学习结束后进行系统的整理和总结。
只通过教科书后的例题是无法体会到面向过程所存在的问题的,在一些小例程中,面向过程感觉反而会更加的简单,但是一旦面临较大的项目,我们需要编写N个功能相似的函数,函数越来越多,代码量越来越多,Bug之路也就此开始了。