网易云买耳机是正版吗?:OOA&D实践之路——真实案例解析OO理论与实践(一、导言) - EricZhang's ...

来源:百度文库 编辑:中财网 时间:2024/05/03 08:03:19

OOA&D实践之路——真实案例解析OO理论与实践(一、导言)

查看本系列全部文章:
《OOA&D实践之路——真实案例解析OO理论与实践》索引贴

为什么要写这个系列

      “OO都是一个已经被讨论烂的话题了,还有什么可写的!”
      不知当你看到文章标题时,是不是有这种疑问,或者鄙夷。不错,OO从诞生到现在经历了不短的岁月,与其相关的理论、技术、原则、实践、模式、语言已经出了一大堆。可是,你真的了解OO的本质吗?真的能挥洒自如的将OO应用于软件开发中吗?真的能发挥OO的能量,从而提高软件质量吗?如果对这三个问题,你不能很干脆的点头说:“是的,当然!”那么也许你可以抽一点时间,往下看一看。
      这个系列文章不打算大篇幅重述各种OO理论,也不打算谈各种OO心法。这系列文章着重于通过实践澄清一些对OO的误会,帮助朋友们更好的使用正确的方法将OO应用于实际开发中。同时,在必要的地方简要叙述一下OO相关知识。
      所以,这个系列不是关于OO理论的天书或OO参考大全,而是告诉你“你对OO可能存在哪些误会与认识上的偏差”以及“如何走出误会更好的OO应用于实践”。

OO是技术,不是理论
      OO,我认为全称应该叫做“面向对象技术”。其实,OO自诞生那天起其全部目的就是应用于软件开发实践中,提高软件开发质量。这也是OO存在的全部意义。所以,搞OO和搞数论、搞理论物理不一样,不能脱离应用。搞OO的人应该算是工程师,而不是科学家。两者最大的区别是:科学家可以不考虑自己研究的成果有没有什么应用价值。而工程师不一样,他们要更“势利”,要时刻关心自己研究出的东西有什么应用价值。所以一切OO的研究要以可应用性为向导,不能天马行空夸夸其谈。
      当然,OO需要理论支撑,但是一定要是有现实意义的理论,而不能像数学家那样为了理论而研究理论,更不能将已有理论当做教条机械性使用。
      因此,在学习和实践OO的过程中,要时刻注意和应用性联系起来,才能避免走入理论OO和教条OO的歧途。

到底什么是OO
      “什么是OO?”对于这个问题,很难一言以蔽之。但正是由于对这个概念的误解和偏差,才使得某些朋友一直不能正确使用OO,不能让OO真正服务于软件开发,到最后开始怀疑OO、鄙视OO甚至唾弃OO。
      在所有对OO的偏差性认识中,最普遍的一点就是“金锤”式理论,即“XX就是OO。”例如,“把所有东西看成对象就是OO”,“遵循封装、继承、多态就是OO”,“应用良好的OO原则进行设计就是OO”,“使用UML就是OO”。显然,这种“一锤子敲定”的方式会让人割裂的看问题,从而无法从全局角度正确把握OO。
      在这里,我斗胆给OO下一个定义:OO,即面向对象技术,是一种旨在提高软件质量的综合性技术,其贯穿于软件系统的调研、分析、设计、开发、测试、维护、扩展、升级等整个生命周期,它包含一系列概念、思想、理论、目标、原则、实践、模式、工具、语言等要素,这些要素既相互区别又相互联系,同时从宏观和微观两个角度共同协作,指导和引导开发人员开发出高质量软件,并指导与开发有关的一切过程。
      从上面可以看出,OO并不是孤立的概念或技术,而是一系列要素的复合体,并贯穿于整个软件开发周期。所以,仅仅从某个时间或控件切面切入而应用OO,这样的OO是不完整的,也不可能发挥出其应有的作用。打个比方:如果使用OO的方法和工具进行分析、设计,但是编码过程不能做到OO,就好比制造了一辆豪华的轿车却找头驴拉着走,是不能提高你出行效率的。反过来,如果你是一个C#或Java高手,但分析设计过程不遵循OO,直到编码时才用C#或Java试图OO,这无异于你听说开车能提高出行速度,于是你苦学驾驶技术,并掌握了高超的驾驶本领,但最终却坐在一头驴子上,于是你开始大喊:驾驶技术是骗人的!根本没法用!是啊,驴子上连方向盘、离合器都没有,空有一身驾驶本领又如何发挥出来呢。

这个系列的文章概要和内容组织
      这系列文章的大体写作方式,是通过一个实际案例《XX食品公司连锁店在线定料系统》的调研、分析、设计、开发等一系列过程,帮助大家更好的认清OO如何实践,同时澄清一些误会。这个系统是我曾经参与过的实际案例,为了文章需要,将进行一定程度的修改,但一些很关键的东西都会原汁原味保留下来。在整个过程中,请各位不拘泥于具体技术相关问题,而要一直保持一个较高的视端,一睹OO的全貌。

文章的大概组织方式:

第一部分:需求分析之前的故事
      很多人认为就软件开发来说,第一步是需求分析,其实非也。如果想更好实践OO,需求分析之前还有很多工作,如特性调研、降低风险等环节,这一部分我们讲讲需求分析之前的故事。

第二部分:分析步步高
      这一部分开始对系统进行真正的分析,让我们来看看OO是如何引导和指导我们分析的。

第三部分:设计的方方面面
      设计是一个繁杂的过程,诸多OO原则与模式都会应用于其中,这一部分不会细讲各种原则及模式,而是看看正确应用原则与模式的方式是怎么样的。

第四部分:让所有努力开花结果
      这一部分,我们将前面的成果付诸实践。通过这一部分,可以清楚的看到前面做的一切工作都不是飘在云里的空中楼阁,而是开发高质量软件不可缺少的部分。

      以上是目前的规划,当然,在整个过程中可能会出现变化,但是大体条理不会打乱。希望本系列文章能给您带来帮助。

作者:T2噬菌体
出处:http://leoo2sk.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。Tag标签: 软件工程,面向对象,OOposted @ 2008-12-08 12:35 EricZhang(T2噬菌体) 阅读(2729) 评论(16)  编辑 收藏 网摘 所属分类: 面向对象技术
发表评论  回复  引用  查看     #1楼 2008-12-08 13:01 | 痴情客       有点夸夸其谈了,这样的文章居然也放到首页。

再说OO已被再次证明为一个垃圾的东西了。
  回复  引用  查看     #2楼 2008-12-08 13:13 | 紫色永恒       支持,希望保证频率哦。
ps:楼上的还是积点口德的好 或者发篇东西出来“再次证明OO为一个垃圾的东西。”
  回复  引用     #3楼 2008-12-08 13:13 | gcgc [未注册用户] 为什么有那么多人老去评论别人的劳动成果,可从未创造过值得放在首页上的劳动成果?
  回复  引用     #4楼 2008-12-08 13:39 | Jeffrey Hua [未注册用户] "OO,即面向对象技术,是一种旨在提高软件质量的综合性技术,其贯穿于软件系统的调研、分析、设计、开发、测试、维护、扩展、升级等整个生命周期,它包含一系列概念、思想、理论、目标、原则、实践、模式、工具、语言等要素,这些要素既相互区别又相互联系,同时从宏观和微观两个角度共同协作,指导和引导开发人员开发出高质量软件,并指导与开发有关的一切过程。"
这个定义没有回答什么是OO,什么不是OO.所以是个很失败的定义.
如果把OO用别的替换一下.
"过程结构化技术,是一种旨在提高软件质量的综合性技术,其贯穿于软件系统的调研、分析、设计、开发、测试、维护、扩展、升级等整个生命周期,它包含一系列概念、思想、理论、目标、原则、实践、模式、工具、语言等要素,这些要素既相互区别又相互联系,同时从宏观和微观两个角度共同协作,指导和引导开发人员开发出高质量软件,并指导与开发有关的一切过程。"
这句话一样正确.

  回复  引用  查看     #5楼 2008-12-08 13:59 | GUO Xingwang       不错,关注楼主的文章。4楼的关于定义的理解很正确,作为一个定义一般要回答什么是,也要回答什么不是!
  回复  引用  查看     #6楼 2008-12-08 14:02 | songcan       支持一下楼主,OO是不是垃圾关键看对你有没有用
  回复  引用  查看     #7楼 2008-12-08 14:12 | 上不了岸的鱼{ttzhang}       关注这个系列的文章
  回复  引用  查看     #8楼 2008-12-08 14:17 | relax       不错,关注一下,但谁知道从博客园哪里能快速找到自己回复过的文章?

难道都要放进收藏夹吗?我的收藏夹够乱了

可能是我的收藏夹不够OO的结果,哈。。
  回复  引用  查看     #9楼 2008-12-08 14:30 | jowo       关注
  回复  引用     #10楼 2008-12-08 14:30 | 好多这样的 [未注册用户] 现在好多这样的 先在首页做个宣传
然后写几篇无关痛痒的文章
然后就没了

记得上次有个凌云架构的 ,
现在一点消息都没有了
前3篇基本上没有写啥
  回复  引用  查看     #11楼 2008-12-08 15:42 | 涂磊      

OO 是 过程 ?
  回复  引用  查看     #12楼 [楼主]2008-12-08 15:49 | T2噬菌体       @涂磊
^_^|||可能是我那个定义里断句不清晰。主句应该是“OO是技术”,后面皆为定语
  回复  引用  查看     #13楼 2008-12-08 16:44 | 生鱼片       @relax
我的随笔
我的空间
我的短信
我的评论
更多链接


我的评论


  回复  引用     #14楼 2008-12-08 16:56 | waver001 [未注册用户] @1楼,“再说OO已被再次证明为一个垃圾的东西了。”,你太强了!不想和你说什么!

@楼主,关于定义,我觉得4楼说的非常好!我想说的是你把OO说成是一种技术,是不大贴切的!OO,大家都知道就是Object Orient (面向对象)。我觉得它无非是种思想!即便是OOA(D)面向对象的架构(设计)可以说是一种技术,也可以说是一种概念!仁者见仁,智者见智!技术是有形的,概念是无形的,就看你站在哪看了!
  回复  引用  查看     #15楼 2008-12-09 08:40 | 冰凝零点       @14
即便是OOA(D)面向对象的架构(设计)可以说是一种技术,也可以说是一种概念!
这句话印象很深刻
  回复  引用  查看     #16楼 2008-12-09 09:13 | relax       @生鱼片

知道到了,呵。。多谢呀~