懒羊羊softwaretesting

导航

谈谈你对Java面向对象的理解

面向对象,其实是一种思考的思想,是一种思想,而这种思想它早期的思想是面向过程,通过不断的演化变成了现在的面向对象,思想有一个演变形式,早期是面向过程,现在是面向对象。

故事:把大象放进冰箱里,分几步?
1、把冰箱门打开
2、把大象放里面去,存储大象
3、把冰箱关上
从打开门到存储对象到关门,我们在强调过程(打开、存储、关闭动作,存什么不重要,重要的是存进去了)。这是标准的面向过程的思想,我们注重的是过程,注重的是过程当中所涉及的行为:打开、存储、关闭
我们这几天写的代码都是过程,搞一个功能,又一个功能,调用这个功能又调用那个功能。。。这些都是过程,我们玩的就是过程。这个过程强调的是这些行为、动作、功能,那么转换成对象时怎么样的呢?我不再面向这些过程了,我要针对对象,我们分析一下无论是打开还是存储还是关闭它们都是冰箱这类事务所具备的行为,因为我操作的是冰箱,这时候把思想转变了,既然打开、存储、关闭都是冰箱的行为,我们只要操作这个冰箱所具备的功能就可以了,我们就把这个行为全部定义到冰箱当中,那么冰箱就是实实在在存在的东西,我们把这个称之为对象,那么我在看到的东西就不再是打开、存储、关闭了,我看到的就一个事务—冰箱,而冰箱里边有打开存储关闭动作。

刚开始的时候侧重的是打开、存储、关闭动作,也可以理解成三个函数,就是三个功能,那么我们按照这个过程以这三个动作为主把货物存数进去,而我们发现这些东西都所属在冰箱当中,因为我是操作冰箱。换一种思考方式,我先弄个冰箱,把这些属性都放冰箱里,那么右边部分我们先看的时候首先看到冰箱,有了冰箱是不是就有了这三个功能,我是不是相当于把这三个功能封装到一个事务当中了啊,我是不是只要找到这个事务,这三个功能就都在?


我执行左边这个动作的时候我是不是从头到尾我需要去执行这个过程?

而我现在我如果是到了右边这个部分,我找到了冰箱,我可以这样做:

冰箱.打开

冰箱.存储

冰箱.关闭

我找到冰箱之后这些功能是不是全在啊?那我只要找冰箱的这些功能是不是就可以了?

左边的叫:

打开冰箱

存储进冰箱

关闭冰箱

左边强调的是动作,右边强调的是冰箱;左边是面向过程,右边是面向对象

面向对象的特点,思想,能让复杂问题简单化,能转变角色,从执行者变成指挥者,指挥别人做事情就简单了,事情怎么做没关系,我只要结果。

比如人开门,我们来提炼一下名词
开这个动作是门里面的,开门的时候怎么开是门最清楚,所以定义在门里面是最合适的,我开门的时候我调用了门里面的开动作

门{
开(){
操作门轴等;
}
}

人{

开门(门){
门.开()
}
}

举个栗子:

你工资2w,你每天上班很忙很累,还要加班到很晚,而回到家后已经很累了,此时还要做饭洗衣服,你不想做这些事情了,此时你可以找个对象来给你洗衣服做饭。此时你就是在用面向对象的思想去解决问题了,你从执行者(下班后洗衣服、做饭)变成了指挥者(让你对象去洗衣服、做饭),从面向过程变成了面向对象。

posted on 2018-03-23 09:45  懒羊羊呐  阅读(261)  评论(0编辑  收藏  举报