oop从照猫画虎到庖丁解牛

http://ufqi.com/naturedns/search?q=-R/62St

oop从照猫画虎到庖丁解牛

回顾写程序之前的路基本都是由点及面,需求驱动和问题驱动的。这是懒人思维,某个功能被完成了之后则不再深究。至于优化则也是在应用中遇到问题然后走问题驱动的路子。这种照猫画虎的情形一直到前不久,连续并发地读了perl的oo设计,编译原理和swift语言参考,结合之前使用java的体会,竟有一种庖丁解牛般的豁然开朗

对象object是某个类的实例。

类class是对相同事物的抽象。

抽象abstract是用相似的属性、行为、方法对待相似的事。

封装encapsulation 是将相互有关系的属性、行为、方法组合到一起。

继承inheritance 是龙生龙凤生凤、老鼠生儿会打洞。

重载override是大人吃饭用大碗、小孩吃饭用小碗。

多态polymorphism 是一职多能:如果多个对象对外提供了相同的接口,不管他们内部是如何实现的,他们都可以放入一个相同的场景被一致对待。一个生动的例子是显示动物园里动物的年龄–如果函数式编程需要遍历所用动物的生命周期并作换算,有oop之后只要对传入的对象调用theanimal.getAge即可。

反射reflection 是自我感知。程序能够像对待数据一样来操作另外的程序。类的加载及其状态的自述。

Object-oriented programming (oop) 的思想被发明出来并流行是因为他更接近现实世界。一些基础设施类极大地将程序员解放出来,更多的精力投入到业务逻辑(问题、需求)而非编程语言本身的细枝末节。

让程序自治,做更多的工作,这在编译时会有某种平衡的选择。同等情况下,oop的程序比之前的代码更耗费计算资源(低效),也就是用硬件资源换来开发与维护的便利便捷。

幸运的是,计算资源成本不断下降,程序设计人力成本不断上升。oop的提出使得使用自然语言编程成为可能。以上所列的各种名词虽然陌生但换成客观世界的事物就容易理解多了。各种编程语言都讲提供对oop思想的支持。

对oop的认识需要一个过程,这一过程深切体现了人是会变的这样的大主题。

在我进县城读高中之前看到城里女人化妆精致的像个鬼一样,大学毕业在城里工作久了回乡看到曾经熟悉的姑嫂妯娌不化妆粗旷的像个鬼一样;刚参加工作发现高级餐厅戴围嘴吃饭属于多此一举的做作,等我开始关注皮鞋上是否有灰尘时发现穿浅色衬衫吃饭没戴围嘴吃不定心啊…… (可以脑补胖少将戎装接受采访时胸前的油渍的画面)

photoshop-beauty

在学习上,对oop的认识也有这样的经历,从照猫画虎到了然于胸地庖丁解牛。swift中既保留了c中传统的struct集合变量又增加了对oop的class的支持可以预见未来编程语言的趋势。在语句断句上swift不再强制用;,但也支持使用\n作为语句结束。总觉得用可见字符;作为断句标志比用不可见字符\n作为结束更好,能够增加程序的可读性,去免歧义。

————

2015年3月29日夜于回京的火车上。

————

2016年4月初,读 Artificial Intelligence: A modern Approach , 其中对状态的描述中,将描述状态的种类分为 atomic, factored 和 structured , 如下图所示:

对象的表述-201604

这图能较好地解释,对象及其关系。

此条目发表在社会生活, 编程技术, 计算机技术分类目录,贴了, , , , , , , , , 标签。将固定链接加入收藏夹。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

Captcha Code