面向对象
在面向对象的思想中,将问题中的事物抽象出来,任何事物都可以称为对象,将对象的属性和对象的行为进行具体化(抽象)的过程就是创建一个类 Class
。将类实例化的过程就是创建一个变量(对象)。其中主要通过 get
和 set
方法获取或者改变属性的值,通过方法来与外界发生操作。
面向对象编程叫 OOP
( Object-oriented Programming
) 。一切皆对象。下面是对象的思维导图。
对象的特性:
- 封装性:
- 对象的属性和行为封装成一个整体,不可分割的独立单元。
- 信息隐藏,一些无需关注的细节或者不可污染的信息只可以在对象内部更改或者查看,外界无需关注。
优点: 减少耦合。
- 继承性:
- 含义:子类可以继承父类的特征和行为。
- 优点:可以有效提高代码复用性、维护性,使得类与类产生关系,是多态的前提。
- 含义:子类可以继承父类的特征和行为。
- 多态性:
- 含义:同一个行为具有不同的表现形式或形态的能力。
- 方法的多态性:重载和重写,对象的多态性:向上转型和向下转型。
面向对象的思考实例
”将大象放进冰箱”这个问题来讲述。
其中有两个对象:大象 和 冰箱。
大象类:有属性 (id, …… ) 和行为 ( 进冰箱, …… )
冰箱类:有属性 (id, …… ) 和行为 ( 开门, 关门, …… )
之后进行对象实例化编程。
1. 创建大象、冰箱
2. 打开冰箱
3. 大象进冰箱
4. 关闭冰箱
面向过程
在面向过程中,将问题的解决划分成几个步骤,然后一步一步进行。
面向过程的思考实例
”将大象放进冰箱”需要以下步骤:
1. 打开冰箱
2. 将大象放进冰箱
3. 关闭冰箱
依次实现函数即可。
面向对象和面向过程的对比
对比项目 | 面向对象的编程 | 面向过程的编程(结构化编程) |
---|---|---|
基本含义 |
把现实中的事务抽象成一个个对象,一切皆对象的基本思想,是一种”自下而上”的设计,先设计组件,再完成拼装。 | “自上而下”的设计,先定好框架,在进行具体细化编程。 |
特点 | 封装、继承、多态 | 算法 + 数据结构 |
优点 | 适用于大型复杂系统,方便复用 | 适用于简单系统,容易理解 |
缺点 | 比较抽象,性能比面向过程低 | 不适用与复杂系统,难复用,不易维护和扩展 |
对比 | 易维护、易复用、易扩展 | 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素。 |
设计语言 | Java、C++、C#、Python… | C、Fortan、… |