ThoughtWork嵌牛IT观察程序猿阵线联盟-汇总各类技术干货

换个角度,用OO看世界

2017-10-15  本文已影响58人  亨利何
World See

何宏伟

[嵌牛导读]

OO,Object-Oriented,面向对象。对于将C++/Java这类具有面向对象特性语言如数家珍的人来说,这个词耳熟能详,不过对于编程新手来说显得过于抽象,甚至一时还不能够从C这种面型过程的语言特性中退出来,所以到底如何理解OO,它到底有何神奇之处?

[嵌牛鼻子]

OO(面向对象),Encapsulation(封装),Inheritance(继承),Polymorphism(多态),Abstract(抽象)

[嵌牛提问]

什么是对象? 面向对象如何能够帮助我们去理解世界?

[嵌牛正文]

Simple 1
Color

”颜色“与“颜色”
红颜色是颜色,颜色不是颜色,红颜色和绿颜色都是颜色


别着急,也许可能你可能会对我的示例感到疑惑,甚至不解,以为我在说绕口令。

一.封装,继承,多态,抽象

现实世界中的色彩给人带来了艺术的气息,所以才有了梵高,莫奈等著名的画家,看过他们的画作,你一定会被色彩震惊到。除过我们常见的红,蓝,黄,绿等,画家可以用染料来调制任何他们需要的颜色,这所有的颜色被归结到一处----三原色(RGB),通过三原色的不同比例组合(多态)即可获得我们看到的所有颜色(RGBA,多出一个透明通道)。

上面这段铺垫是让大家注意到色彩这个东西,把自然界所有的色彩我们统一到一起叫颜色(抽象),而我们所看到的各式各样的颜色则称之为一种颜色,例如青色,橙色等(继承),这些颜色(继承自抽象颜色)叫做颜色(抽象颜色)的一个实例(对象)。我们不用调配直接使用的颜色是在购买前直接用各色燃料配比好的,而我们不用管它们是如何配比的,不需要知道,我们只需要使用就可以。(封装

现在我们再重新看一下示例:

红颜色是颜色,颜色不是颜色,红颜色和绿颜色都是颜色

红颜色(对象继承自颜色(抽象),所以红色是颜色;
颜色(不存在“颜色“这种颜色(对象)),颜色是抽象类。(抽象类不具有对象);
红颜色(对象)和绿颜色(对象)都继承自颜色(抽象),所以红颜色和绿颜色都是颜色。

通过”绕口令“的例子我们可以得出中华文化博大精深,当然也可以得出OO面向对象的特性:

  • 万物皆是对象,整个世界就是一个个对象实体之间相互链接相互发生消息传递从而构成的
  • 封装,继承,多态
  • 面向对象,可以更清楚的去看清楚事物的本质,所以也更容易接近目标,因为其本身就是现实世界的映像
同样,大家可以自己尝试用OO来分析一下人类和人

二. 如何戴上OO去看世界?

Simple 2: Link:CellphoneAbstract,手机是一种什么样的事物?

Cellphone

把目光从代码中拉回来,其实凭借我们自己并不发达的大脑也可以看出手机这个改变现代社会人们生活的物品,它---构造简洁,脉络清晰

能够产生这种感触的你,说明你已经接触到了对象的神奇之处,倘若将它引入到我们的生活中去如何?
以下仅是个人的一些想法:

早晨发现家里没有电了,随即查询电表,电费已经用光,怎们办?
交电费即可
外面下雨不方便出门,先尝试能否不用出门就可已交电费----支付宝,结果告知不支持支付宝充电费,此方案不可行;只能亲自去完成缴费,缴费需要什么东西,房东知道,打电话询问即可,得知需要本户电卡而其缴费处工作时间为912,1415;携带电卡和现金于早上9点之后缴费即可。


神奇之处在于,我们对于突发状况不再惊慌失措,相反,会更加理性地去处理事情。This is really cool !

结语.

See it Clearly

将事物的共同特性提取出来形成抽象,将这种抽象以一种确定的方式发散出来形成对象,即:

从多到一再到多,从自然到抽象再到自然,看似反复无聊,实则气象万千。
上一篇下一篇

猜你喜欢

热点阅读