面向对象的引入
案例:编写一个小游戏:人机猜拳
玩家角色:计算机玩家与用户玩家
主要功能:系统界面、选择玩家昵称、出拳、判断输赢
分析:通过分析发现计算机玩家存在出拳方法,用户玩家也存在出拳方法,可能存在重复函数的现象。
原来在一个类中出现重复的代码,解决的办法是,将重复的代码抽取出来,放到一个函数中,通过调用函数实现功能;
现在又出现重复的函数,能否将它抽取出来,放到一个地方,要使用的时候在调用呢?
答案是可以,这种将函数抽离出来放在不同的类中的思想我们称之为面向对象设计思想
注意:函数:定义在类中的一段独立的代码;所以要将函数抽取出来,也只能放到一个类中;
面向过程和面向对象
面向过程
什么是过程:****
过程就是做一件事情的先后经过;
生活中的过程:****
泡面:1、买面;2、烧开水;3、拆包装,把面放到开水中,加入调料,盖上; 4、吃面;
程序的过程:****
java中的过程,程序执行的先后经过,先执行哪行,后执行哪行;
什么是面向过程:****
就是一种解决问题的思想;
使用这种思想解决问题,我们关心的是事情中有哪几步组成, 然后一步步实现;
使用面向过程写程序,我们首先要分析需求由那些功能组成,然后写函数实现各个 功能,最后根据需求依次调用各个函数;
在这个过程中,开发者需要参与到实现的每一步中,就是劳动者;
面向过程的好处:在需求简单的时候,程序简单明了,结构清晰;
弊端:在需求复杂的时候,就会非常麻烦,开发和维护都很困难;
面向对象
什么是对象:****
指的是生活中实际存在的事物;
生活中的对象:****
冰箱;被子;钱;电脑;手机;椅子;桌子;地板;电灯;空气;太阳;……
Java 程序中的对象:****
java中的对象,就是通过new关键字在内存中开辟的空间;
什么是面向对象:****
也是一种解决问题的思想;
使用这种思想解决问题,我们关心的是事情中有那些参与者;
使用这种思想写程序,首先分析需求有那些功能,然后找有没有已经实现好功能的 类,
如果有,就直接拿来,创建它的对象,通过对象调用功能;
如果没有,就需要自己写一个类,然后在类中书写实现功能的函数【面向过程】, 然后创建这个类的对象,通过对象调用功能;
在这种过程中,开发者,更多的是在调用其他已经写好的类,是功能的调用和指挥 者,适合开发复杂的功能;
在面向过程中,程序的基本单位是函数;面向对象,程序的基本组成就是类;
面向过程和面向对象举例
吃饺子;
面向过程:
1、包饺子:先剁馅;和面;包饺子;
2、煮饺子:烧开水;下饺子;
3、吃饺子
4、收拾
面向对象:
1、找一个饺子馆(实现了提供饺子的对象):告诉老板吃的口味、数量(相当于 给功能传参)
2、等着做好端上来:相当于调用函数返回结果;
3、吃饺子
4、给钱
面向过程和面向对象的区别
1、关注点不同:
面向过程:关心的是事件中的每一步功能怎么做;
面向对象:关心的是事件中的每一步功能有没有什么对象已经实现好了,然后直接 拿来使用;
2、效率不同:
面向过程:因为自己要参与每一步的实现,所以效率比较慢;
面向对象:因为大多数都是调用别人已经实现好的功能,所以效率比较高;
3、开发质量:
面向过程:因为是自己一步步实现的,大多数情况会有地方会出问题;
面向对象:因为大多数都是调用别人写好的功能,而这些功能一般都经过大量的验 证,质量有保证;
4、使用范围不同:
面向过程:适合解决需求简单的问题;
面向对象:更适合解决复杂的需求;
联系:在面向对象中,有没有过程?肯定有;面向对象,是基于面向过程的;
面向对象的理解
什么是对象?
比如:灯(宽泛的概念,抽象的)---------------103教师机上的灯(具体的)
宠物(宽泛的概念,抽象的)---类 哮天犬----对象(具体的)
苹果(宽泛的概念,抽象的)----类 毒死白雪公主的苹果-----对象(具体的)
因此,将抽象的事物称之为类,将具体的事物称之为对象。
java中,先有类,然后对象是根据类创建出来的;
如何定义一个对象
案例:新建一个汽车对象
分析:
造汽车需要什么?图纸。
图纸上有什么?所造汽车的一些功能与特征。
静态特征:颜色、品牌、型号........
动态功能:跑(开),停(刹车).......
根据图纸才能造出具体的汽车。
在java中,将图纸称之为类,将具体的汽车称之为对象。
将静态特征称之为属性,用变量描述。
将动态功能称之为方法(函数)
具体代码:
第一步:新建一个汽车类Car,该类相当于图纸,拥有描述汽车的静态特征与动态功能