3. 面向过程和对象

今天好开心,找到了一直在找的问题的答案,一直在思考自已编码或重构过程所用的技能哪些是面向对象的思想,哪些是面向过程的,一直没没想太通,今天看了松本行弘的书豁然开朗,面向过程主要是通过限制(顺序,分支,循环)和抽象化(黑盒子化过程)来处理复杂性,面向对象是面向过程的补充扩展,加入了数据抽象(黑盒子化数据和处理过程)。

从面向对象是面对过程的扩展的角度,带来了实际编程过程和理论的统一。

1.对象不再一定和现实的对象相对应,只要满足数据和过程的封装和变化粒度,就放心抽取吧。

2.过程的抽取完全可以理解为面向过程的抽取,结合数据时认为是面向对象的抽取。

松本行弘对多重继承的论述也相当精彩,有见地

1.每个语言都会曲线支持多重继承,因为多重继承还是很有用的。比如java单继承但有接口和组合可以模拟多继承。组合在一定程度上也可以理解为实现继承复用的一个技巧。

2.Mix-in是使用多重继承的一个很好的技巧,其实思想上和组合还是很像的,但语法上更简洁。

从思想上来说,重用又要保持松耦合,语法上又要尽量简单。不同语言在这之间取得平衡,每种语言的取向,代表了每种语言的思想。

面向对象的三要素,多态,数据抽象,继承。

posted on 2013-11-18 20:18  关攀攀  阅读(169)  评论(0)    收藏  举报

导航