JavaSe·面向对象篇(一) 面向对象和面向过程
两者都是软件开发思想,先有面向过程,后有面向对象。在大型项目中,针对面向过程的不足推出了面向对象开发思想。
1. 面向对象概述
Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下,使用Java语言去设计、开发计算机程序。 这里的对象泛指现实中一切事物,每种事物都具备自己的属性和行为。面向对象思想就是在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,描述成计算机事件的设计思想。 它区别于面向过程思想,强调的是通过调用对象的行为来实现功能,而不是自己一步一的去操作实现。
1.1 举例之面向过程
首先我们来认识下,什么是面向过程?面向过程就是面向解决问题的过程进行编程。我们日常工作中按步骤形式实质上就是按照面向过程的思想去解决问题。我们罗列的步骤就是过程,按照步骤解决问题就是面向过程。
传统的面向过程的编程思想总结起来就八个字——自顶向下
案例:洗衣服
面向过程,就是按照我们分析好了的步骤,按部就班的依次执行就行了!所以当我们用面向过程的思想去编程或解决问题时,首先一定要把详细的实现过程弄清楚。一旦过程设计清楚,代码的实现简直轻而易举。
1.2 从面向过程到面向对象的转变
讨论完了面向过程,我们再来认识下面向对象。所谓的面向对象,就是在编程的时候尽可能的去模拟真实的现实世界,按照现实世界中的逻辑去处理一个问题,分析问题中参与其中的有哪些实体,这些实体应该有什么属性和方法,我们如何通过调用这些实体的属性和方法去解决问题。
现实世界中,任何一个操作或者是业务逻辑的实现都需要一个实体来完成,也就是说,实体就是动作的支配者,没有实体,就肯定没有动作发生!
现在让我们思考下,上述洗衣服的每一个步骤都都有哪些动词?
打开、倒入、加入、放、洗、甩、晒
而有动作就一定有实现这个动作的实体,而当我们采用面向对象的思想来解决问题时,可分为以下几步:
第一步:分析动作是由哪个实体发出的
动作 | 对应实体 |
---|---|
打开 | 洗衣机 |
倒入 | 人 |
加入 | 人 |
放水f | 洗衣机 |
甩干 | 洗衣机 |
取出 | 人 |
晾晒 | 人 |
于是分析出在整个过程中,一共有两个实体:人和洗衣机
第二步:定义这些实体,为其增加相应的属性和功能
属性就是实体在现实世界中的一些特征表现。如:
人的属性:姓名、性别、身高、三围、体重、电话号码、家庭住址、籍贯等
手机的属性:品牌、价格、颜色、尺寸、待机时间等
功能就是能完成的动作,在面向对象的术语中,动作就叫作方法或者函数,如:
人的动作(功能):吃饭、睡觉、学习、打游戏、走路、跑步、缴费!
手机的动作(功能):打电话、发短信、拍照、打游戏、视频、看电影等
实体 | 属性 | 功能 |
---|---|---|
人 | 姓名、年龄、性别等 | 倒入衣服、加入洗衣粉、晾晒衣服等 |
洗衣机 | 品牌、型号、出厂日期等 | 打开洗衣机门、关闭洗衣机门、洗衣服、甩干等 |
第三步:让实体去执行相应的功能或动作
- 洗衣机开门
- 人倒入衣服
- 人加入洗衣服
- 洗衣机放水
- 洗衣机洗衣服
- 洗衣机甩干
- 人取出衣服
- 洗衣机关门
- 人晾晒衣服
面向过程强调的是我自己完成,而面向对象强调的是我指挥谁完成,从执行者到指挥者的转变。
2. 面向对象特点
- 面向对象就是一种符合人们的思考习惯的思想。
- 面向对象的出现,将复杂的问题简单化。
- 面向对象的出现,将程序员从执行者转变成了指挥者。
3. 面向对象的三个特征
封装、继承、多态
4.面向对象和面向过程的总结
面向过程:强调步骤
优点:执行效率快,无需创建实例化对象
缺点:不易维护,复用性不强,不易扩展
面向对象:强调对象
优点:可以设计出低耦合的系统,使系统更加灵活、更加易于维护
缺点:性能比面向过程低