Free Hit Counters
http://www.dellasdeals.com

一个必须使用面向对象才能写出来的超简单的程序。为亚历山大助威

招砖头了,有错就改
标题应该是:
一个很能体现面向对象思想特色的超简单的程序。为亚历山大助威

看了亚历山大同志写的捅破窗户纸一文
还是有所感觉的

不过亚历山大同志明显学究气氛浓重

不好意思在这里表露真实身份了。
本人其实是一家培训机构的讲师,学业不精,经常担心自己误人子弟。

好在总会在教学中总结一些很有意思的实例

今天贡献一个给大家看看
一个必须使用面向对象才能写出来的东西,当然,过程强人可能能写出来,不过我估计一千个程序员中不一定会有一个

程序类型:WinForm
需求:
每次当鼠标双击应用程序窗体界面的时候,会在双击位置出现一个Label
该Label能自动沿着45度方向在窗体客户区内运动,且在上下左右4条边的地方会发生镜面反弹。比如45度右下运行,碰到下面后则转变成45度右上运行。大白话说就是它会来回飘啊

可选的更高要求是:
每个Label的运动角度是在出现时随机的。每个Label的运动速度也是在出现时随机确定,并且应该保持线速度稳定。

呵呵

面向对象的解,估计1小时内多数出手快的就搞定了
至于后面的更高要求,无非就是一些三角函数等等的东西,不过平时不经常用的估计早还给大学老师了

PS:我认为是不可能用面向过程完成的
因为,Label的数量不固定,且当数量达到一定数量的时候,呵呵。

通过这个题目可以深深地记住:
每个对象应该自己负责自己的事情
主控程序不应该过多干涉对象自身内部的事情


2007/9/20
PS:标题改了
自然多讲一些想法
为什么要面向对象?难道为了封装去面向对象?为了继承去面向对象?
不是的
是为了让程序员工作在更高的抽象级别,这是我对编码技术发展的认识

用C,什么都能写,C连严格的面向结构都不是呢

使用了对象的思想,让程序员来指挥一堆有生命力的对象,比直接让程序员指挥内存要让人舒服得多
并且,在构造复杂环境的情况下,面向对象比直接控制内存要少写N行代码

为什么会出现软件危机?
因为系统太大了

即使有过程强人来实现我的程序
但是在实现过程中已经有了部分属性封装的意思
即使连结构体都不用,也还可以用数组,用链表
但是大家想想看,这个时候是不是就很希望能有一个东西吧相关的内容都放到一起去呢?
其实,这就是面向对象最直接的起源
否则,我们干吗要面向对象呢?



posted @ 2007-09-19 17:28 徐少侠 阅读(...) 评论(...) 编辑 收藏
作者:徐少侠 出处:http://www.cnblogs.com/Chinese-xu/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过 Chinese_Xu@126.com 联系我,非常感谢。