我对oo的看法(对最近关于oo的认识)

看过该文大家的回复,感觉这里的讨论的气氛不错,彼此宽容,相互探讨才可以有进步。
发表一下自己的看法:
1、oo必然有其价值:要理解这个价值我个人认为(请各位tx指正),要从oo的来源理解。

一、oo从何而来一?
oo就是为了解决过程开发方法带来的软件危机。
因为既然程序是为了解决实际问题在计算机通过建立数学模型来解决实际问题,那么当人类使用计算机思考方式(例如:过程化方式)这种不是人类自然思考方式进行求解的时候自然会遇到一些问题。尤其是比较复杂的事物。那么此时大牛们会怎样去解决这个问题?换作是各位如何去解决这个问题?
自然而然的大家会想到这样一个道理:既然是建模解决问题为什么不建立一人类能够理解的更接近现实的模型?而面向对象这个概念提出的模型恰恰比较接近现实世界能够适应人类的思考方式。这样我们只需要将建立好的对象模型转换为代码就好了。于是大牛们提出了oo的概念,于是社会各界人士风涌而上,oo火了。
上边就是我认为oo引入的原因,请各位tx指正探讨。
2、oo的优势?
要想理解oo的优势我觉得因该这样去做。
首先从具体的数据模型跳出来,站在比较高的系统架构的层次看。在具体的模型中oo实现体现了建模方面的优势,让我们能够使用人类习惯的思维方式去将问题架构搞清。比如说得到通过user case得到类图。
然后再深入到一个具体的模型,比如说“亚历山大同志”举出的具体的聊天室的例子。给出从分析-〉建模-〉实现-〉复用的例子来,包括代码的具体实现。我敢说大部分oldtx(包括我)对于对象的代码实现并不是很清楚,我们更喜欢用代码来说话。所以方便的话,请亚历山大给出代码,架构部分就行。
 
二、oo从何而来二?
解决软件危机的另一个思路:软件开发维护的另一个问题在于大家都在闭门造车(码代码),从而造成大量的浪费和维护的困难。那么软件复用的思想就提了出来。
请问软件复用的关键在于那里?
一个制作好的软件(模块,函数怎么叫都可以。)能不能复用关键点在那?我认为关键在于能否应付变化。即所谓的拥抱变化。
而应付变化使用过程化的方法是?低耦合,通过建立比较规范简单的调用接口来提高复用性。
使用oo呢?从概念上讲oo由于提出了继承、重载、封装等概念在复用上确实有过程化方法的难以企及的优势。
我正在埋头苦学,要是有人能够补充出简单适用的代码实例就好了。

那么由oo由来可以看出确实是高于过程的新一代开发方法?分析建模工具?那么:

三、oo是过程的替代吗?
我觉得oo是一种高层次的分析方法和生成工具(oo的对象自动生成程序框架真是太方便了),并且由于引入的oo的概念编写测试用例也变得自然了许多。总之oo带来的新东西和好处真是太多了。
那么是不是面向过程的方式就落后了?就该被淘汰了?掌握和使用面向过程的oldtx就该被淘汰被看不起了?
也不尽然:在简单的领域,面向过程有其独到的精炼和魅力,而且我认为具体oo建模了之后具体的代码实现还是要去码代码的。
最关键的在与:什么是伟大的软件?评价一个软件好不好的最重要的唯一标准在于:是否让客户户满意!!!
然后是否维护方便。,最后才是架构是否高级是否易于复用等问题。
所以oo是客户、架构师、程序员交流建模的工具而已,建议大家掌握尤其是初学者。老手也应该抽出时间去看看.不是带着眼镜去看问题,而是思考oo的由来,优点和如何利用。这一点“金色海洋”就是一个好的例子,迷茫但不彷徨,我相信这样的tx在探索的过程中成长,最终一定会有大成。
而那些oo的拥护者也不必不oo就是发现了什么大逆不道一样,谁有谁的世界。你真愿意推广oo,大可以象“亚历山大同志”那样以理服人,大可不必动辄提出“如果你只是做做网站,如果你基本是一个人搞定一个网站,如果你没有试过多人团队开发的大型项目,那你就朝着你坚信的道路坚定的走下去吧。” 这样的话真是很伤人也没有什么营养.

其实:搞it的碰到不懂的人真的是很好的机会,你要教懂他(她)才能显示你的水平,更重要是人品。

补充:
1、过程化思考方式个人认为有其独到之处,甚至学习和掌握也不是一朝一夕的事情,所以一旦掌握以后在开发的过程中会由于人类自动化的原理,自然而然的去使用他。这也不是什么丢人的事.但是掌握oo的概念并且能够去应用是一个很好也很必要的技能,各位tx努力吧。
2、关于oo入门的推荐.最近看一本书:前一阵有个tx写博克翻译了2章,可能是因为比较忙没了下文。叫做“Head First OOAD.pdf”网上有电子版,我打出来一边看一边标记,看了2章了感觉还不错,推荐给各位想了解oo的tx看看,还可以顺便复习英语。
李建忠老师有一套讲设计模式的webcast,在讲述的过程中着重介绍了设计模式与oo一些关系其中在oo的概念和起源以及应用上下了功夫,我看了5讲了,感觉也不错,推荐给大家.(看webcast比较费时间,一讲大约一个半小时,一共好像是24讲)
目前网上我还没有发现谁的博克有很好的oo入门教程,有的话,推荐给我们学习。
没有的话,我建议就看我推荐的,要不就去msdn比起在网上瞎翻一气浪费时间强,多做少说因该是优点吧?
祝各位tx进步!


 

posted on 2007-09-20 10:14  黄金年代  阅读(3051)  评论(11编辑  收藏  举报