`
liumin04702712
  • 浏览: 10211 次
文章分类
社区版块
存档分类
最新评论

Java编程趣味故事:沙发之争―过程与对象的对话

 
阅读更多

详细页面:http://www.verydemo.com/demo_c89_i98482.html

 

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

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

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

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

  在杰的办公室

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

 


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

 

  涛和他的笔记本在休息室

  涛为每个形状写了一个类

 


  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
  }
  }

 

  杰的程序基本是完成了,他觉得他赢了,他似乎已经感觉到那张真皮沙发了。

  但是请等一下,任务有所变动

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

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

  新增的任务

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

  杰回到办公室

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

....................................................................

  这不是一个很大的改动,但是杰依然不得不重新修改他已经调试成功过的代码。

  涛在他的笔记本前

  涛微笑着,呷了一口茶。随手写了一个新的类。有时他觉得他最喜欢面向对象中的这个优点,就是对已经编译调试过的代码可以不要任何改动。灵活和课扩展形……,涛沉醉在面向对象的优点中了。

 


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

 

  杰这一次只比涛领先一步

  “面向对象都是在胡扯,浪费时间!”杰正在暗笑着涛。“不规则图形不是这样旋转的。”

  项目经理失望的说。

  原来,杰和涛都是这样写的

  用一个矩形围住不规则图形,然后计算矩形的中心,最后让图形以中心旋转。

  项目经理接着说:“它应该以一个给定的坐标旋转。”

  “我真像是一块砧板上任人宰割的肉。”,杰想着“但我可以再加上一些if…else 语句就可以搞定了。”然而天知道经理会又有什么改动呢?

  杰的办公室

  他思索着旋转的过程。很多的代码受到影响的。杰又要重新编译调试。终于有了结果。

 


 rotate ( shapeNum, xPt, yPt) {
  // if the shape is not an amoeba,
  //calculate the center point base on the rectangle, the rotate
  //else
  //use the xPt and yPt as the rotation point offset an the rotate
  }

 

  涛在他的笔记本前

  为了不把沙发拱手让给杰,涛也在修改他的旋转方法,但仅仅是在Amoeba的类里。对于其他的测试好的类,是原封不动的。为了给不规则图形一个旋转点,他给Amoeba加肋两个属性,然后他测完成后通过无线网络提交了任务。

 


 class Amoeba{
  int xPoint;
  int yPoint;
  rotate () {
  // code to rotate an amoeba using amoeba’s x and y
  }
  playSound() {
  // code to play the new .hif file for an amoba
  }
  }

 

  那涛得到了沙发对吗?

  并没有那么快,杰找到涛程序里的一个缺陷。并且他知道如果能得到沙发的话就可以取悦会计室的婷,因此他不希望就这样就输了。

 

[1] [2] 下一页

【责编:Chuan】
分享到:
评论

相关推荐

    Java趣味编程100例 清华大学出版社.zip

    本书讲解了100个各种类型的Java编程趣味题的求解过程,旨在帮助读者培养编程兴趣,拓宽Java编程思维,提高Java编程能力,掌握用程序设计解决实际问题的方法与技巧。本书取材注重趣味性与实用性,内容涵盖了Java编程...

    JAVA的核心技术:面向对象编程

    JAVA的核心技术:面向对象编程 JAVA的核心技术:面向对象编程

    Java趣味编程50例

    上有个帖子出了一些小的Java编程题,就拿来练练手了。 PS:由于刚学Java没多久,很多程序的思想都是C的那一套,只不过换成Java语言而已, Java的很多API都没正式深入去看,所以有些问题直接用API就行的东西,我...

    Java并发编程:设计原则与模式(第二版)

    Java并发编程:设计原则与模式(第二版).pdf

    编程实践:Java进阶100例

    中文名: 编程实践:Java进阶100例 原名: 编程实践:Java进阶100例 别名: Java 作者: 李相国等. 译者: 李相国等. 图书分类: 软件 资源格式: PDF 版本: 影印版 出版社: 李相国等. 书号: 9787111372370. 发行...

    Java趣味编程100例源代码

    本书讲解了100个各种类型的Java编程趣味题的求解过程,旨在帮助读者培养编程兴趣,拓宽Java编程思维,提高Java编程能力,掌握用程序设计解决实际问题的方法与技巧。

    java趣味编程100例

    内含有java的编程源文件,供又需要的朋友下载

    《Java面向对象编程》练习题

    《Java面向对象编程》 练习题一、填空题 1.自从Sun推出Java以来,按应用范围可分为三个版本,分别是( JAVA SE )、( JAVA EE )、( JAVA ME )。 2.环境变量的设置,若JDK安装在“D:\JDK”,则应设置Path为(D:...

    Java高手真经(编程基础卷)光盘全部源码 免积分

    javaexception.zip 07.Java面向对象编程扩展(计算器异常捕捉实例) 第3部分(5个程序包) javaio.zip 09.Java输入/输出流 javavi.zip 09.Java输入/输出流上机作业参考(文本编辑器) javathread.zip 10.Java多...

    Java 面向对象编程.pdf

    全书内容包括面向对象的编程思想、Java语言的基础知识、异常处理、类与对象的生命周期、多线程、Java集合、输入/输出和GUI编程等。其最大特色是以六条主线贯穿全书:面向对象编程思想、Java语言的语法、Java虚拟机...

    java核心技术:面向对象编程电子版第三卷

    java核心技术:面向对象编程电子版第三卷

    案例三:java网络编程(对象流传输)

    案例三:java网络编程(对象流传输) 案例三:java网络编程(对象流传输) 案例三:java网络编程(对象流传输)

    Java面向对象编程练习题答案

    关于Java面向对象的编程练习题以及答案解析。

    java趣味编程

    Java趣味编程实例:Java画的手机,挺好玩的

    JAVA并发编程艺术 高清pdf

    JAVA并发编程艺术 高清pdf : 1.并发变成的挑战 2. java并发机制的底层实现原理 3. java 内存模型 4. java并发编程基础 5.java中的锁。。。。。。。

    JAVA面向对象编程(孙卫琴)(带完整书签版,课后答案,源代码).z03

    JAVA面向对象编程(孙卫琴)(带完整书签版,课后答案,源代码) 最好的JAVA入门书籍 讲解全面,透彻 需要单独下载课后答案和源代码的在本人资源中可以找到,欢迎下载 本压缩包共分为6个部分,这里为第三部分。

    Java面向对象编程经典实例-模拟彩票

    Java面向对象编程经典实例-模拟彩票 Eclipse工程

    java编程思想PPT

    文旦含有java编程思想一书中前9章的PPT 还附有几个基础型的编程代码 如乘法表: public class Chengfabiao { public static void main(String[] args) { for (int i = 1; i ; i++) {// 从1开始循环到9 for ...

    [Java] Java 编程面试揭秘 英文版

    [Wrox] Java 编程面试揭秘 英文版 [Wrox] Java Programming Interviews Exposed E Book ☆ 图书概要:☆ If you are a skilled Java programmer but are concerned about the Java coding interview process ...

    JAVA面向对象编程(孙卫琴)源代码

    JAVA面向对象编程(孙卫琴)源代码 本人下载资源中另附有java面向对象编程(孙卫琴)完整带书签PDF及课后答案,欢迎下载

Global site tag (gtag.js) - Google Analytics