您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   模型库  
会员   
   
DeepSeek大模型应用开发实践
6月12-13日 厦门
基于 UML 和EA进行分析设计
6月23-24日 北京+线上
人工智能、机器学习 TensorFlow+Keras
6月30日-7月1日 直播
     
   
 
 订阅
围棋与OOAD
 
作者:田晖 (来自中国系统分析员
  44  次浏览      27 次
 2004-3-25
 
编辑推荐:
本文主要谈谈围棋与OOAD的几个相似点,希望对您的学习有所帮助。
本文来自于网络,由火龙果软件Linda编辑、推荐。

最近看了围棋"名人赛"的一场电视直播,展开了一些联想。颇感下围棋的方法与面向对象的分析设计方法有些相似之处,因此写出来给大家分享。事先声明,对于围棋我只是看得懂的水平,少年时期痴迷了一段时间,业余0段。

先谈谈围棋与OOAD的几个相似点:

活棋与对象

一块活棋至少有两个眼位,一个对象或类(有用的)至少要有一个属性和一个方法。眼位表明了这块棋存在的理由,属性和职责同样表明了一个对象存在的理由。

简单与复杂

围棋构成简单,一黑一白,以简单构建复杂,与对象方法的理念相同。

棋盘与边界

围棋的棋盘有边界,系统有系统边界。

定式与模式

下围棋有定式,面向对象方法有分析模式和设计模式。都是个中高手们长期实践的经验结果。

当然更主要的相似之处,应该在方法和过程上。围棋谁都会下,不就是在棋盘上圈地,看谁圈的多吗。但是高手与低手的水平却有天壤之别。例如:

1、 围棋忌讳把棋下成"愚形",就是一大块棋坨在一起,行棋效率不高,对于对象就是紧耦合,一个复杂的对象负担太重,同样效率不高;

2、 一个围棋高手能够灵活运用各种定式和"手筋",看到两颗子,就能推测以后的种种演化,一个面向对象的设计高手可以灵活地运用各种设计模式,画几张图就能描绘未来的宏伟系统;

3、 围棋有"金角银边草肚皮"的说法,在系统分析中首先根据系统边界来确定系统的主要功能和外部接口也是最有效的做法,俗称"用例驱动"。

4、 围棋有"大场",强调大局观,系统分析也要求分析人员把握全局,从错综复杂的业务逻辑当中洞察最主要的矛盾。

整个行棋的过程都是演进的、逐步精化的,每一阶段没有明显的区分。针对主要需求的设计可以首先完成,阶段性设计成果一旦确定,就可以转移到下一个"大场"。符合面向对象方法的"统一过程"理论。

开局与需求分析

下棋的两个人好比一个是分析师,一个是用户,开始谁也不知道谁想干什么,通过一问一答的方式明确需求。高手的对话只需要寥寥几子就知道对方的路数,有经验的分析师几个回合就对系统了然在胸。

布局与架构设计

至于布局选择"中国流"还是"韩国流",就相当于系统架构是DotNET还是J2EE,都是根据用户具体的需求和设计师的临场判断做出的。

中盘与详细设计

根据架构展开对象和类的设计,棋盘上渐渐浮现一块块活棋的模样。经过几轮不断的"精化"和"转换",大局已定。至于关子,就是编码阶段,交给程序员去做吧。

最后,如果你能够从棋盘上看出一幅对象交互图来,那么恭喜你,你快走火入魔了。

如果继续列举,可能还能发现不少相似之处,可是这样不免有生拉硬扯之嫌,也不是我写这篇文字的本意。下围棋与系统设计都是需要高超智慧的,其中蕴涵着丰富的方法论和哲理。经常听说,有围棋高手宁可输棋,也不愿下出形状难看的棋来,他们称之为艺术,看着棋盘上一块块活棋,简洁而高效,互通而互动,他们感觉到一种享受。而优秀的设计又何尝不是一种艺术呢,一个由对象构成的系统,每个对象都各司其职,消息在其中合理而流畅的传递着。你不觉得也是一种享受吗?

而其中最为高妙的地方就在于"平衡"。高手对局,胜负往往只有半目,棋盘上双方棋子的分布和契合可以用完美来形容,这就达到了平衡的极至,此时输赢已经不重要,弈者已经得到了他所要的。

平衡是一种美。

 

   
44 次浏览       27


最新活动计划
DeepSeek大模型应用开发 6-12[厦门]
人工智能.机器学习TensorFlow 6-30[直播]
基于 UML 和EA进行分析设计 6-23[北京]
嵌入式软件架构-高级实践 7-9[北京]
用户体验、易用性测试与评估 7-25[西安]
图数据库与知识图谱 8-23[北京]
 
 
最新文章
iPerson的过程观:要 过程 or 结果
基于模型的需求管理方法与工具
敏捷产品管理之 Story
敏捷开发需求管理(产品backlog)
Kanban看板管理实践精要
最新课程
基于iProcess的敏捷过程
软件开发过程中的项目管理
持续集成与敏捷开发
敏捷过程实践
敏捷测试-简单而可行
更多...   
成功案例
英特尔 SCRUM-敏捷开发实战
某著名汽车 敏捷开发过程与管理实践
北京 敏捷开发过程与项目管理
东方证券 基于看板的敏捷方法实践
亚信 工作量估算
更多...