面向过程编程、面向对象编程
1、面向过程(了解)
学习面向对象,首先我们要先学习面向过程。
面向过程和面向对象都是生活中解决问题的两种思维方式。
面向:就是关注的意思
面向过程:在整个事情的执行过程中,自己至始至终都是其中的参与者,并且要自己亲力亲为所有的步骤。
面向过程的生活中举例:
吃饭:
1.先思考吃什么?
2.去菜市场买菜。
3.回家摘菜,洗菜,切菜。
4.炒菜,焖饭。
5.吃饭。
6.洗刷。
面向过程,在程序中真正的体现就是开发人员自己所书写的函数。
2、面向对象(了解面向对象的初步概念)
生活中理解面向对象的思想:
面向对象:我们需要完成某个事情,需要具体的一个结果。这时我们不会自己去参与其中,而是找具备这些功能的对象,然后调用它们的功能,帮助我们来完成我们的要求。(面向对象只关注结果,不关注过程)
对象:其实就是一个实体(个体)。在生活中,实体就是真实存在的一个事物。
面向对象的生活中举例:
吃饭:
1、先思考吃什么?
2、找饭店
a) 找服务员调用服务员的点菜功能
b) 服务员会把顾客的点菜信息告诉给大厨
c) 大厨把菜做好之后又找服务员,服务员负责上菜
3、吃饭
第二种方式更加符合我们的思考习惯,自己不要那么辛苦,而我们仅仅只需要指挥或者找具备相应功能的对象帮助我们做事即可。
Java中理解面向对象的思想:
面向对象:其实也是一种解决问题的方案。在开发中,遇到需求时,先不要去分析怎么样去解决需求中的功能,而是去找有没有已经实现的解决需求中功能的封装类(类中封装了解决需求中功能的代码[函数])。有,就直接调用现成的功能解决问题; 没有,新建一个类,在新建的类书写解决需求中功能的代码(把解决问题的代码书写在新建的类中,可以在以后遇到相似的需求时,就可以直接使用)。使用面向对象的方式来解决开发中的问题,可以把开发人员从参与者(劳动者)转为调用者(指挥者)
面向对象,在程序中真正的体现就是一个一个的类(类中封装了解决问题的函数)。
所有的计算机语言它们的诞生,基本都是用来解决生活中的问题:
计算机语言也进行分类:
面向过程的语言:C
面向对象的语言:Java、C++、C#等
小结:
面向过程:在程序中的组成单位就是函数。是由若干个函数组成
面向对象:在程序中的组成单位就是类(类中封装了函数)。是由若干个类组成。
面向对象是基于面向过程基础之上的。在开发中,面向对象和面向过程是配合使用的
3、面向对象举例(了解使用面向对象和面向过程有什么不同)
3.1、买电脑(组装机)
面向过程:
1、查阅参数 1天
2、到电脑城 报价 1天
3、回家 整理 选出性价比较高的店铺 1天
4、去电脑城 有针对性的 砍价 定配置
5、组装 监工
6、装系统
7、扛回家 玩LoL。
在整个解决问题的过程中,购买电脑的人需要参与到整个过程的每一步,需要亲力亲为,购买过程比较累。
面向对象:
1、找一个懂电脑的老手--->黑旋风。
2、告诉他可以接受的价格
3、给钱让黑旋风帮忙去购买电脑
4、等待黑旋风把电脑扛回来
对比着使用面向过程解决的方式,整个过程瞬间变得简单了。
3.2、面向对象举例(面试官版本)
面试官您面试我们,这个时候您就在使用面向对象的思想解决问题。面试官您本身就具备了丰富开发经验,咱们公司现在有相应的项目需要开发,您本身就可以完成这项任务,但是可能会需要较长的时间完成,而这时您就需要找一批具备专业开发能力的人员,而正好这时您找到了我们。而我们就是那些具备专业开发能力的开发人员,而您现在就不需要去做相应的开发工作,而只需要指挥我们来完成具体的开发任务,并且可以高效快速的完成客户的需求。
3.3、面向对象和面向过程差异(面向对象的好处:)
面向过程和面向对象都是解决问题的思维方式:
面向过程我们需要参与其中,在整个过程中我们是这个事件的具体的参与者。
面向对象我们不需要参与其中的每个步骤,而只需要我们去找具备对应功能的对象,然后指挥他们做事情即可。
面向对象更加符合现在人们的思维习惯。
如果在实际需求中,没有可以完成具体功能的对象时,这时自己先造一个对象, 然后再按照面向对象的方式来使用这个对象。
接下来学习的主要思想:
我们如何使用Java程序描述一个对象,然后创建这个对象,再使用这个对象,以及对象和对象之间的关系。
4、对象在需求中的使用和练习(掌握一种小技巧:名词提炼法)
4.1、对象在需求中的使用
需求:把大象装冰箱。
一般的做法:遇到需求之后,我们首先分析需求中的名词,基本上需求中的名词就是一个一个的对象(名词提炼法)。
当把名词提炼出来之后,开始分析当前这个对象中具体有哪些行为和功能,或者具备哪些基本的数据。
名词:大象、冰箱。
描述各个名词(对象)的细节:
大象
{
}
冰箱
{
打开()
{
}
存储( 大象 )
{
}
关闭()
{
}
}
在分析完具体的对象之后,我们需要创建出真实的这些对象。
有大象这个具体真实的事物:
大象 dx = new 大象(); // 创建出了一个大象这个事物
有冰箱这个事物
冰箱 bx = new 冰箱(); // 有了冰箱这个事物
bx.打开(); //打开了冰箱的门
bx.存储( dx ); //把大象装到冰箱中
bx.关闭();//关闭冰箱的门
在分析需求的时候,一定要分析清楚当前某个功能或者行为具体应该属于哪个对象上。
4.2、对象在需求中的使用练习
分析以下都有哪些对象,并说明功能属于哪个对象。
人开门:
人:
门: 开属于门自身的功能。
火车司机刹车:
火车:刹车是火车的功能。
司机:
一般当我们分析出具体的对象时候,需求中的动作,一般都属于某个对象的功能。
5、对象在代码中的体现(掌握)
要把生活中存在的具体的个体,以及某个事物最终用Java程序来体现:
生活中的一类事物,可以对应Java中的某个class程序,而把这个class程序称为一个类。因此上述分析的所有的对象,我们都可以使用Java中的类来封装和描述。
当我们需要把生活中的事物使用Java中的类进行封装和描述的时候:
首先需要先分析当前生活中的事物具有哪些基本的特点(基本的属性,具备的功能/行为/动作(用java中的函数表示))。然后通过分析在和Java中的类建立对应的关系。最后才能使用Java中的类描述。
人的案例:
我们应该从具体的某个人,或者从某几个人中开始分析当前人这一类事物具备的共性特点。
人具备基本的数据:身高、体重、年龄、姓名、性别.......
人具备的基本功能:吃饭、睡觉、学习。
人
{
身高
体重
年龄
性别
姓名
吃饭(){}
睡觉(){}
学习(){}
}
分析完某一类事物具备的共性特征之后,就要开始考虑这类事物的那些基本的数据应该使用Java中的什么描述?而事物的基本功能应该使用Java中的什么描述?
事物的基本数据,一般在生活中就是一个数据,这个数据可以使用学习过的一个变量来表示。
事物的行为/功能/动作,可以使用Java中的函数来描述。
用Java中的类 描述 当前分析的这个事物:事物的名称,就是Java中的类名
class Person
{
double height; //身高
double weight; //体重
int age; //年龄
char sex; //性别
String name; // 姓名
//描述人这类事物的共性行为
//前面的函数修饰符不用写
void eat()//吃饭
{
}
void sleep()//睡觉
{
}
void study()//学习
{
}
}
当描述完一个事物之后,要在Java程序中使用这个事物,首先需要使用new 关键字创建出这个事物在Java中的对象,然后通过这个对象就可以调用其中的所有特征。
Person p = new Person(); //创建出了一个人 对象
p.age = 23;
p.name = “某某”;
p.sex = ‘男’;
p.eat();
p.sleep();
p.study();
注意:如果在当前这个class类仅仅只是为了描述一个事物,不需要独立运行
所以可以不用写main函数,如果一个类需要独立运行,那么必须得写main函数
需求:用java代码描述人的一些属性和具有的行为(功能)