赛迪网 > IT技术 编程语言 > 文章
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

由一次项目实施引发的过程与对象的对话 (1)

发布时间:2005.04.06 11:47     来源:http://www.javaresearch.org    作者:http://www.javaresearch.org

某天在某一家软件公司里,那令人讨厌的项目经理要求两名程序员完成同样的一个任务。经理并且承诺谁先完成任务的发给一张带转轮的真皮沙发代替原来的木质靠背椅。Jackie,习惯过程式编程的程序员,而Paul是一个面向对象的程序员。他们都知道这是一个不错的机会。

任务是这样的,在GUI的程序界面里有一个正方形,一个圆形和一个正三角形。但用户点击这个图形时,图形会顺时针旋转360°并且播放相应的AIF音效。

Jackie坐在自己的办公室里,对自己说:“这个程序要做什么?我们需要那些过程?”“旋转并且播放音效。”她又回答了自己。所有她的程序就是去完成这两个过程。

Paul带着他的笔记本坐在休息室里。他也在思索着:“程序中都有什么东西啊?谁是主要的角色啊?他最先想到的就是形状。当然他也想到了其他的一些对象,比如用户,音效和点击事件。因为已经有现成的库支持其他的对象了。因此因此他把重点放在创建形状类上。

在Jackie的办公室

就像曾经写过千百的的程序一样,Jackie把他的程序认为是重要的过程,并且没有用什么时间就完成了旋转和播放音效的过程。他的程序大概是这样的

rotate (shapeNum) {
// make the shape rotate 360°
}
playSound (shapeNum) {
// use shapeNum to lookup 
which AIF sound to play, and play it
}

Paul和他的笔记本在休息室

Paul为每个形状写了一个类

class Square {
   rotate () {
   // code to rotate a square
             }
   playSound() {
// code to play the AIF
file for a square
            }
    }
class Circle 
{
 rotate () {
// code to rotate a circle
     }
   playSound() {
// code to play the AIF 
file for a circle
   }
      }
class Triangle{
    rotate () {
 // code to rotate a triangle
    }
 playSound() {
 // code to play the AIF 
 file for a triangle
            }
        }

Jackie的程序基本是完成了,她觉得她赢了,她似乎已经感觉到那张真皮沙发了。但是请等一下,任务有所变动

“现在你是快一点,Jackie”,项目经理说着,“但我还要加一点小小的功能在程序里。这对你们这样高水平的程序员来说,应该是毫无问题的。”

“如果只是个小改动,我可以接受。”Jackie想着,她知道经理所说的毫无代价的改动是胡扯。“为什么Paul会显得如此的平静呢?”Jackie不解的想着。Jackie一直执着认为面向对象只是个花架子,完全是浪费时间。

新增的任务是在GUI界面里多了一个不规则图形,当用户点击该个图形时,图形也会旋转360°,并且播放一个 .hif的音效。

Jackie回到办公室

旋转的过程依然时可以用的,因为代码使用的是shapeNum来对于相应的图形。然而播放音效的过程需要修改。“为什么非要播放 .hif的音效呢?”,Jackie愤愤的说着。

playSound (shapeNum) {
// if the shape is not an amoeba, 
//use shapeNum to lookup with AIF
sound to play, and play it
   //else
   //play amoeba .hif sound
   }

这不是一个很大的改动,但是Jackie依然不得不重新修改她已经调试成功过的代码。Paul在他的笔记本前,微笑着,呷了一口茶。随手写了一个新的类。有时他觉得他最喜欢面向对象中的这个优点,就是对已经编译调试过的代码可以不要任何改动。灵活和课扩展形……,Paul沉醉在面向对象的优点中了。

class Amoeba{
 rotate () {
 // code to rotate an amoeba
          }
   playSound() {
 // code to play the new .hif file 
 for an amoba
                }
     }

Jackie这一次只比Paul领先一步

1 2 下一页>>


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 松下笔记本中关村设百家体验专区 促销有礼 (04-05) · 摩托罗拉中国董事长又换人 梁念坚闪电出任 (04-05)
· 风险资金欲投资中国搜索 金额千万美元以上 (04-05) · 戴尔在华大规模扩充产能 称谁是第一走着瞧 (04-05)
· 东旺快速商品供应中心交易系统 (04-04) · 二线笔记本厂商艰难度日 联宝能否逆市坚挺 (04-01)
· 不再将芯比芯 Intel推Truland追求综合实力 (03-31) · 万明坚低调回应加盟长虹 称不去会外企打工 (03-30)
· Molex六类布线走进大学校园 (03-30) · 美国"发现"号重返太空 跨越重要里程碑(图) (03-30)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
[政务][电信][金融][农业][制造业][中小企业]
[CIO][ERP][协同][IT管理][中间件][电子商务]
[政策][地方][专家][评估][辞典][博客][社区]
· 专题:一路畅通构想曲——让出行不再遭遇堵车
· CIO工作亲历:企业ERP选型不能忽视"选人关"
· 综述:信息化建设给中国监狱带来的各种变化
· 金融业风险管理和法规遵从有五点需考虑的因素
· 保险业CIO关注:该如何建立统一高效的CRM体系
· 调查显示:多数CIO对IT规划仍存在困惑和误解
  博客·论坛 ·曾剑秋·项立刚·Java学习·网管