什么是面向对象,如何用面向对象的思想写代码

首先给大家提三个问题

1、面向对象的三大特征是什么向对象的基础是什么/h2>

三大特征:封装,继承,多态
基础:抽象

2、为什么说面向对象的基础是抽象抽象做详细解释。

只有基于抽象的概念才有封装的动作,有了封装才可能会有依据封装而产生的继承,在继承的过程中又产生了多态。

抽象:
提取不同事物中的共同的特征:
物以类聚,人以群分,寻找从最基础的类型方面是否有共同的特征、共同的属性、相似的行为

3、如何理解下面这句话/h2>

1)我们要注重多少人来干事,而不是干多少事。
2)我们要注重谁来干事,而不是怎么干事。 这与面向对象的抽象有什么关系/p>

注重多少人来干事:一共有那些对象。不是干多少事:对象干多少事不考虑。 注意谁来干事:具体的对象是那个。不是怎么干事:不关注具体过程和实现,
和抽象关系:1:抽象的是找出来的对象。2:抽象后具体使用的实现的是那个对象。

由这两个问题,有同事提出《从去打水这件事抽象成,小明这个对象去实施去打水这个方法》,如果从面相对象的思想来看,这句话应该如何去描述者也可以从反面来说明。这句话没有面向对象的几个特点/p>

我认为《》中的话还是面向过程的。落脚点在方法,而不是对象。我们进行抽象的是具有共同特征的名词,而不是动词。落脚点应该是打水人,而不是落脚点是动词打水。

以打水举例子。打水作为一件事,应该有谁去打水。和去哪里打水。用什么打水。打水人,打水地点,打水工具三个类。这样可以是不同的人使用不同的工具去不同的地方打水。

抽象过程中,注重对象,而不是过程,注重对象
场地,打水人,打水工具,受水人,水。

然后我们可以更加抽象
打水人和受水人可以再抽象出来参与者。

参与者
工具
场所(UI)
参数,材料

问:没有对象,能写代码吗br> 不能
问:你们封装的是一个个小的方法,还是封装的一堆方法的实现br> 正确的是封装的应该是一个个小的方法,把这些小的方法放到对象里边去。
问:封装的是把一个事干完,还是把一个事分成很多步骤br> 我认为封装是封装一件小事情。小事情放在小对象中。而不是把所有步骤都放在一个对象中。

我们要抛弃家庭主妇的思维观念,什么意思呢/h2>

比如做饭,有很多步骤买菜、洗菜、切菜、炒菜、放盘子。

正确的做法是:我注重的是买菜,交给买菜人,洗菜交给洗菜人,切菜,交给切菜人,炒菜交给炒菜人,端菜加端给服务员。

我不在乎他们这次是不是能干完,是不是干好了,我不在,我在乎的是这些人能不能重复的干事能不能被复用

比如说洗菜的人能不能重复的洗菜,买菜的人能不能重复的买。

分析业务的时候其实就是我们要做的就是把谓语先去掉,就是封装,就是把谓语去掉,就是抽象,然后把谓语分成很多个小的谓语。每一个小的谓语,就是每一个对象的方法。另外要把大的谓语,一般我们干事儿一个谓语实际上是很大的,要把它拆成小的,放到各自的对象里去。
我们真正的编程一样是根据不同的业务,充分反复利用这些对象。
然后又一个新的谓语出现的时候,还是这些对象重新组合,把这事干了。再来一个事,就是再来一个事儿的时候,还是这些对象为主体,又把事干了,换句话说,增加不了几个对象,就能干很多新的事情。

什么叫透明化

就拿那个举例子比如说人去打水,然后咱们需要具体到哪个人去打水,我们想的那个类就是人类,就没有想到打水人那个类,我们脑袋里想的都是人类。也没有谁喝水,把水打给谁。比如说我水去浇花,还是交给一个牲口去喝水,还是交给对方一杯茶,我们都没有。这是不对的,没有面向对象的思想在里面。

把家庭主妇,我们眼里全是家庭主妇,没有工业自动化。
我们写代码总是小作坊的写法:手工打造汽车,从炼铁、从挖矿开始炼铁,然后自己去锻造,然后自己去当焊接工,然后当维修工,当电工。

其实在工业自动化的时代,这都可以交给不同的人做,效率也会大大提高。想让你们关注的是他有多少个一万多个、两万多个、十万多个对象。实际上它就三五个对象。然后通过不断的组合,通过继承组合聚合,又造出来了十万多个对象。然后在他的基础上,再去抽象,然后最后得到了几个基本的,我们没有一层一层的这种实现的过程,我们也没有一层一层的抽象过程。

来源:Circ.

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年4月3日
下一篇 2022年4月3日

相关推荐