精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2005-06-08
gigix 写道 sunr 写道 OO死与不死不取决于某几个人的论调,IT业的发展不是某几个人能左右的,就像人类社会的不断发展一样。
个人认为OO类似于原子论,而其他的衍生产物都是基于此之上的。正如helloworld所说,OO不会灭亡,只会一点一点的退居幕后,成为更基础的东西。 “万事万物皆对象” 为什么万事万物皆对象?“帐户”可以是对象,“钱”是对象就多少有点牵强,那么“A帐户转100块钱给B帐户”这事如何是对象? OO的确不是万能的,事实上也没有什么OX可以是万能的,现实世界的复杂度直接决定了无法用纯粹的OX来进行描述,这就好比用2个联立方程式永远解不出3元方程。所以 OO在概念上的本质导致它不能描述SOA类型的需求。OO可以完美的描述被动事物,但对于主动事物或非实体事物往往只能模糊地去模拟,所以在代码中常有N多MANAGER类,而MANAGER本身的职责又很杂。另外就是双向关系,如果用OO,那么放在A类或B类都行,但又都不合适,我想大多数人也有同感吧。 我觉得只有AOP才能清晰地引入职责这个概念,因为它是跨越OBJECT概念的,可以完美地将“规则”引入到实体世界中 (我个人认为规则才是现实世界的主线,物体和功能都是依附它之上的) |
|
返回顶楼 | |
发表时间:2005-06-08
yuzhenxin 写道 “A帐户转100块钱给B帐户”:这个是对象之间的行为。或者可以认为是消息、交互等等。没有人会认为“A帐户转100块钱给B帐户”是对象。
举个TIJ中的例子: Light 类有 on() 和 off() 两个方法。同样,没人会认为 on() 和 off() 是对象哟。 :) 我当然知道应该是这样说。那么好了,“转帐”这件事情是非常重要的事情,是系统真正在做的事情。类似的,“记录日志”这件事情是重要的,“日志工具”并不重要;“管理事务”这件事情是重要的,“事务基础设施”(例如JTA/JTS)并不重要;“安全检查”这件事情是重要的,“安全基础设施”(例如JAAS)并不重要。而OO在这些时候,建模了不那么重要的“用什么东西做”,对重要的“做什么”却没有建模。明白我的意思了么? |
|
返回顶楼 | |
发表时间:2005-06-08
gigix 写道 我当然知道应该是这样说。那么好了,“转帐”这件事情是非常重要的事情,是系统真正在做的事情。类似的,“记录日志”这件事情是重要的,“日志工具”并不重要;“管理事务”这件事情是重要的,“事务基础设施”(例如JTA/JTS)并不重要;“安全检查”这件事情是重要的,“安全基础设施”(例如JAAS)并不重要。而OO在这些时候,建模了不那么重要的“用什么东西做”,对重要的“做什么”却没有建模。明白我的意思了么?
呵呵,想说AOSD直说好了。 OO对于做什么是有建模的,协作图和序列图就是干这事的,不过在实现层次没有好的表达方式,这正是Aspect弥补的空白。 |
|
返回顶楼 | |
发表时间:2005-06-08
"我当然知道应该是这样说。那么好了,“转帐”这件事情是非常重要的事情,是系统真正在做的事情。类似的,“记录日志”这件事情是重要的,“日志工具”并不重要;“管理事务”这件事情是重要的,“事务基础设施”(例如JTA/JTS)并不重要;“安全检查”这件事情是重要的,“安全基础设施”(例如JAAS)并不重要。而OO在这些时候,建模了不那么重要的“用什么东西做”,对重要的“做什么”却没有建模。明白我的意思了么?"
我感觉用模型去解决问题本身就有弊端, 搞数理可以来谈谈. 不论做简单的还是复杂的事都 要先将所有细枝末节都考虑进去. 而不能先将小问题解决后 然后组合. 复杂 庞大的模型并不能解决所有的实际问题 而且使得程序变得缺乏灵活性 难以更改难以维护. 比如转帐这件很简单的事情 要是放到OO里面 不同的系统里可能 为了适应自己原先的OO模型 转帐的部分可能会被设计的五花八门. 其实这只需要一个简单的web服务 还有报税等等. OO的思想的连接部分太紧密 不如WS灵活 我想编程会从现在的类调用上升到对WS的直接调用. WS就是我们现在的class. |
|
返回顶楼 | |
发表时间:2005-06-08
winterwolf 写道 我感觉用模型去解决问题本身就有弊端, 搞数理可以来谈谈. 不论做简单的还是复杂的事都 要先将所有细枝末节都考虑进去. 而不能先将小问题解决后 然后组合. 复杂 庞大的模型并不能解决所有的实际问题 而且使得程序变得缺乏灵活性 难以更改难以维护. 所谓模型并不是复杂 庞大的,除非必要,一般模型的设计都不会去设计成那样。模型与灵活性不矛盾,这里,经验是很重要的。大师们之所以是大师,就是因为他们有很多实践的宝贵经验和知识。我想他们想都没想过要建复杂 庞大的模型。 winterwolf 写道 比如转帐这件很简单的事情 要是放到OO里面 不同的系统里可能 为了适应自己原先的OO模型 转帐的部分可能会被设计的五花八门. 其实这只需要一个简单的web服务 还有报税等等. 这里有个系统的概念。 从OO的角度讲,系统是由大大小小的O组成的,在这些O之间有消息、有关系和还有规则等等。 服务一般为系统对外Publish的Method,这些服务往往由1个以上的O来提供,而系统中还有许多O,分别是复杂Helper,DB Access,UI、Workflow等等,它们这些隐藏的O,默默地支撑着提供服务的O。 当系统需要提供新的服务时,就需要建立新的O,如果这些服务是原来服务的升级版,则可以重构、继承甚至拷贝等手段来建立新的O。 |
|
返回顶楼 | |
发表时间:2005-06-08
简要提纲:
1、基本概念 2、面向过程的统一世界 3、面向对象的来由与神话的诞生 4、关系型数据库的独立发展 5、对于OO的修补与OO的变质 6、在OO与数据库之间的桥梁 7、关于OO缺陷的初步总结 8、新方案的理论分析 9、一个实际已经存在的新方案的分析 10、展望未来的发展方向 11、鸣谢 |
|
返回顶楼 | |
发表时间:2005-06-08
有很多人在讨论OO万能的问题,这里包括两个方面。一种是被批判的迷信OO技术的人,另一种反之、而我仍要批判的人。
以我的知识很难用一个准确的词汇来说明我的观点,也许哲学家或者数学家会说得清楚一点。我想用“范畴”这个词汇,OO是不是适合你,看你的问题是否落在这个范畴里,就好像我们说得计算机,人工智能分别属于不同的范畴。存在很多东西有不同的认识基础和理论基础,用于解决不同范畴的问题。 |
|
返回顶楼 | |
发表时间:2005-06-08
话说穿了,OO就是静态语言寻求动态功能的一条途径。
讨论这个问题,我还是建议去看SICP,你会发现所有OO具有的思想SICP都讲道了,但是SICP里面从来就没有出现过一点OO的概念和形式。 庄表伟,给软件开发下定义,其实试图给自己画个场子,好在里面耍猴玩,大家别当真。 |
|
返回顶楼 | |
发表时间:2005-06-08
老实说,我觉得这种文章的意义不大,目标太大,范围太广,以至根本就不可能射中目标。
说到底,OO也只不过是众多方法工具的其中之一,OO之所以被广泛推崇,主要还是因为与其他工具相比,OO是属于那种比较全面、各项能力值都比较平均的泛用型工具。其他人可能会提出在某些方面具备突出优点的方案,但这些方案很可能是以损失某些特性为代价的。能够全面超越OO的方案只能是建筑在OO之上的更高层次的方案,正如PO一样,OO并不是PO的对立面,PO只是成为了OO的一部分,OO并不会损失PO的特性。 |
|
返回顶楼 | |
发表时间:2005-06-08
先明确一下OO是什么。是明确的语言,技术还是某种思想。先说清它的内涵和外延。
引用 OO就是静态语言寻求动态功能的一条途径
不敢苟同。C++的想法 |
|
返回顶楼 | |