面向对象及面向过程区别
面向过程:主要是关注点是:实现的具体的过程,因果关系
例子:
例1:
集成显卡的开发思路:
集成显卡是焊接在主板上,如果集成显卡坏了,整块主板就坏了。例2:
蛋炒饭:
客户如果点了一份蛋炒饭,然后做好了,但是客户突然想吃蛋炒饭里的“米”不吃炒的鸡蛋,但是鸡蛋和米饭粘合在一起了,难以分离。
面向过程开发优点:对于业务逻辑比较简单的程序,可以达到快速开发,前期拖入成本低。
面向过程开发缺点:采用面向过程的方式很难解决非常复杂的业务逻辑,另外没面向过程的方式导致软件元素之间的“耦合度”非常高,只要其中一环出问题,整个系统受影响,导致最终的软件”扩展力“差。另外,由于没有独立体的概念,所以无法达到组件的服用。
个人理解名词:
耦合度:
拿以上的例子蛋炒饭鸡蛋和米饭无法分离,因为鸡蛋和米饭谁都离不开谁了这个依赖关系称之为”耦合度”。
扩展力:
还是以上蛋炒饭的例子,因为蛋炒饭无法放其他东西,例:像rice就以可以随便添加鱼香肉丝,西红柿炒鸡蛋这样的菜。像这种可延伸性称之为扩展力。
面向对象:主要关注点是:主要关注对象【独立体】能完成哪些功能。
例子:
例1:
独立显卡开发思路:
在一个主机中如果主机失去独立显卡也可以正常使用,像这种可延伸性、可扩展性、的东西叫做面向对象。
例2:
米饭:
客户可以要求做饭人根据个人喜好添加不同的菜码,像这种灵活性较高、可扩展性、的东西叫做面向对象。
面向对象优点:耦合度低,扩展力强。更容易解决现实世界当中更复杂的业务逻辑、组件性更强。
面向对象缺点:前期投入成本较高,需要进行独立体的抽取、以及大量系统的分析与设计。
C语言是纯面向对象—> C++是半面向对象 —> Java是纯面向对象
面向对象的介绍:
面向对象的三大特征:
- 封装
- 继承
- 多态
- 所有面向对象的编程语言都有这三大特征。
采用面向对象的方式开发一个软件,声明周期当中:【整个声明周期中贯穿使用oo面向对象方式】
- 面向对象的分析:OOA
- 面向对象的设计:OOD
- 面向对象的编程:OOP
类和对象的概念
- 类的概念:
- 类在现实世界当中是不存在的,是一个模板,是一个概念。是人类大脑思考抽象的结果。
- 类代表了一类事物。
- 在现实世界当中,对象A与对象B之间具有共同特征,进行抽象总结出一个模板,这个模板被称为类
- 类的概念:
对象概念:
- 对象是实际存在的个体。现实世界当中实际存在。
- 描述一下整个软件开发的过程:
- 程序员先观察现实世界,从现实世界当中寻找对象
- 寻找了N多个对象之后,发现所有的对象都有共同特征
- 程序员在大脑中形成了一个模板【类】
- Java程序员可以通过Java代码来表述一个类
- Java程序中有了类的定义
- 然后通过类就可以创建对象
- 有了对象之后,可以让对象直接协作起来形成一个系统
- 类到对象的过程
- 类 —> 【实例化】 —> 对象
- 对象又被称之为实例【instance】
- 对象—> 【抽象化】 —> 类
- 个人理解:
程序员把现实世界中一个种族/种类的共同特征通过代码方式记录下来,例如:种族:人、特征:升高、体重、爱好、性别、肤色、…把他们属性创建成一个类然后通过一个类创建一个人的信息,这个从类创建到对象过程叫做创建一个实例化【创建个例子的意思】,而对象到类是一种抽象类的东西
总结类与对象的概念:
- 类描述的是对象的共同特征
- 共同特征:例如:升高、体重、爱好、性别、肤色等…
- 这个身高特征在访问的时候,必须先创建对象,通过对象去访问这个特征
- 因为这个特征具体的某个对象上之后,值不同。有的对象身高1.80,有的
对象身高2.80等… - 一个类主要描述什么信息呢?
- 一个类主要描述:状态+动作
- 状态信息:名字、身高、性别、年龄【类中的属性】
- 动作信息:吃、唱歌、跳舞、学习【类中的方法】
- 现实生活转换成抽象概念
- 状态 —> 一个类的属性
- 动作 —> 一个类的方法