我们执行相同的操作,总是喜欢将过程封装到一个方法里面,之后就不再从底层做起了,直接调用。
当需求越来越多,方法也就越来越多,我们使用类封装方法。后面使用该操作就直接找到类,然后再找方法。面向过程:针对你的需求一步一步实现,全部自己参与执行。面向对象:使用封装好了的一面向过程操作,直接调用,简化自己。小程序短时间或许看不出什么优势,但是后来处理多了就发现这是一种必须的聪明的做法。现实举例:吃饭:面向过程:饭怎么来?-->买米,买菜做饭-->洗菜,煮饭,炒菜,洗碗吃饭家务-->洗碗,抹桌子。。。面向对象:我要吃饭,尽快?餐馆可以直接吃饭。点菜-->吃饭-->付账-->玩去了面向对象是基于面向过程的,因为过程是必须有人完成的。面向对象的选择性更大,重视的是结果而不是过程。可以理解成面向对象是面向过程的优化。面向对象开发的程序,结构清晰,便于维护。
例子:
将大象装进冰箱:
面向过程做法:
打开冰箱门
大象进去
关上冰箱门
代码体现:
class DxToBx{ public static void main(String[] args){ open(); void(); out(); } public static void open(){ //打开冰箱门 } public static void in(){ //大象进去 } public static void out(){ //关上冰箱门 }}
方法调用时面向过程中非常实用的一种方法。如上图所示,结构清晰,简单快捷。但这种状况紧紧表现在小程序当中。过程中不含有对象的话,比如我的打开冰箱门又涉及到将手放到冰箱门上、往外拉等方法,那么在打开方法里面就需要调用手放到冰箱门上,往外拉等方法,还有更多可能。这样的话,在DxToBx中就存在好多并列的方法,因为方法是不允许在其他方法中声明的。过多的时候,你需要改变一个操作,就需要从上往下找过去找到对应的方法,不便于维护而且也不是那么直观了。
面向对象做法:
怎么才能符合面向对象思想呢?
A.需要哪些类
B.每个类要做什么
C.类和类的关系
把大象装进冰箱的分析。(如何分析有哪些类呢?UML类图。名词提取法)
大象
进去
冰箱
打开
关闭
Demo
main方法
类与类的关系:
Demo中使用大象和冰箱的功能
代码实现:
Class Dx{ public void in(){ //.. } }Class BX{ public void open(){ //.. } public void close(){ //.. } }Class Demo{ public static void main(String[] args){ Dx dx=new Dx(); Bx bx=new Bx(); bx.open(); dx.in(); bx.close(); }}
虽然这样看起来代码更复杂,但结构更加清晰,更易于后期的维护