Yi's profileStone-此人已死PhotosBlogListsMore Tools Help

Blog


    January 24

    学面向对象先学会星际

    我最开始玩的是红警,那时候一般只造一个兵营和一个机械厂,然后疯狂点兵,等着1个1个慢慢造出来(我只打电脑)。
    后来接触星际了,开始非常的不习惯,因为它没有一个固定的界面,可以造各种单位,而是要先选取一个建筑,然后在屏幕右下角选兵来造。

    后来又发现,星际里,都是要先选一个东西,然后右下角出现这个东西可以进行的操作,习惯了之后,觉得星际这样的设计更加合理,更加符合世界的本来面貌。

    恰好那时学了java这门课,一直不太明白面向对象程序设计是什么意思,和面向过程有什么区别,突然我想到了星际,这不就是面向对象程序设计的经典案例吗?

    让我们来看看java和星际的共同点。

    面向对象程序设计的核心概念就是类和对象,星际里,一种单位就是一个类,这个单位的实例就是对象,
    比如zealot是个类,而游戏中你造出的一个zealot就是一个对象。

    类有数据成员和成员函数,星际里的一个单位,也有属性和它的方法,还是以zealot为例,他的属性有血量、攻击力、盔甲、是否被辐射等等很多很多,他的方法有移动,攻击,hold等等,就是右下角里显示的。
    这些属性都是只读的,体现了类的封装性,你不可以直接修改zealot的血量,除非你通过方法,比如你A他,或者给他补血。

    类的另一个重要特征是继承性,星际里,很多单位都有共同属性,比如血量,盔甲,是否中绿毒等等,还有很多共同方法,如move,stop等等。将这些特征抽象出来,组成一个基类,有这些特征的单位继承这个基类,当然这个基类在游戏中是不会出现实例的。
    类还可以组合,如航母包括本体和小飞机,tank包括底座和炮台。

    类还有多态性,比如对函数重载来说,同时点右键,却可以是移动,或攻击或修理,这取决于点中的单位是什么,好比调用相同名称的函数,具体是哪一个由参数决定。还有运行时的多态,比如相同的方法,不同的对象执行他有不同的含义,好比同是A键,有些单位是attack,mm却是补血。

    红警是不是用面向过程语言写的我不敢肯定,但是他的操作方式无疑很符合面向过程的思想,他不是先选一个单位,然后进行操作,而是直接先选操作,然后看操作什么单位。相当于这个操作是个全局函数,参数是各个单位。显然,这是将操作与数据脱离了的,因为操作不属于任何一个类。

    总结:星际这款游戏体现了面向对象思想的精髓,如果你打算学习java等面向对象语言,我建议你先学会打星际

    January 23

    做不完的工作,开不完的会

    连着三天开会了,每天都在讨论需求,流程。据说春节前都要在这样的会议中度过。
     
    更恐怖的是这个项目要在3.20以前完成,看来又要加班了,这可不是好兆头啊,俺可不想在加班中度过2008,努力寻找下家。
     
     
    January 14

    2007工作总结

    本人于20078月底进入公司业务一室。在这4个月中我做了如下工作:

    l         为配合成少波手机程序的开发,独立完成手机股票显示程序,手机表格数据显示程序。

    l         与成少波一起测试JDBC操作数据库的性能以及提高操作性能的方法。

    l         MAS2.0项目先后研究ACS添加模块的方法,Corba的一系列操作,JAVAC程序如何互发数据,测试JAVA程序Corba发送的性能。

    l         针对移动化插件,研究了获取UAProfiler的方法。

    l         开发维护JOSP平台,提供了消息队列,Corba消息发送接收,性能统计,告警,跟踪,日志的接口,TaskBase类的完善,并为其他开发人员的开发工作写了试用说明文档和范例程序。

    l         基于JOSP平台开发性能统计模块,并根据MAS2.0文档配置了数据库内容,随后为解决一些性能统计项无法由模块提供的问题,又开发了性能统计辅助模块。协助其他开发人员测试模块。

    l         现正在研究JAVAOpenLDAP的操作

     

    经过这4个月的工作,我觉得在某些项目中本科室各个人员从事的工作联系不大,特别是在进行MAS2.0项目开发时,我更多的是与其他科室的人员(如张恩来,穆宁,刘百根)一起配合开发,调试。所以建议业务上按项目分组,并调配座位,便于沟通。管理上仍然按照原来的分组。

     

    MAS2.0项目的开发比较仓促,准备时间不够,很多东西都是临时决定随后就完成的,遇到问题以后再次修改,例如性能统计模块,我觉得这个模块应该按照采集,判断发告警,入库等工作分离。所以我建议每个项目进行前尽量能做好前期准备工作。

     

    我建议公司应建立一个知识库,按照一般问题和各个项目问题分类,支持关键字查询,与邮箱关联。遇到问题时先查询知识库,如果查询不到则提出问题,随后自动群发给所有人,相关人员负责回复。问题和回复都会被保存下来,以供其他人有相同问题时查询。因为在MAS2.0项目实施中,测试部经常会遇到相同的问题,当我解答完一个测试人员的问题后,另一个测试人员并不一定知道,仍然会提出相同的问题。

     

    另外对于公司的财务我个人有一些意见,从我进入公司的第一个月开始就以PGP密码不对为理由多个月没有发工资单。在12月初我多次催要11月工资单,并与曲部长一同过去以后工资单就顺利发出了,可见并不是PGP密码不对,而是另有原因。

     4个月的工作让我在业务能力上有了一个很大提高,学习到很多知识,我也很顺利的完成了上级交给我的多项任务,我相信在2008年,我的表现会更好。

    January 11

    对话

    MM:织女!为什么下嫁给董永?
    织女:为了爱情!
    MM:单单是这个原因?
    织女:这。。。。。。
    MM:还因为别的什么?
    织女:他有房子!
     
    MM:净坛使者!你为什么喜欢嫦娥?
    猪八戒:她漂亮
    MM:那现在为什么不和她来往?
    猪八戒:老子现在是公务员,追我的漂亮妞太多了
     
    MM:后羿!您当年为什么射日?
    后羿:有人付钱
    MM:为什么留下一个?
    后羿:他们只付了九个的钱!
    MM:为什么单单留下这个?
    后羿:就是它付的钱!
     
    MM:斗战胜佛,您当初为什么选择保唐僧取经?
    孙悟空:还不是为了搞到学历!
    MM:学历真的那么重要?
    孙悟空:我一个在五指山下服刑的流氓,现在成了斗战胜佛,你说重要不?
    January 10

    近况

    休整了差不多一星期,终于不算那么累了,又接到个任务,研究OpenLDAP和JAVA如何操作它。顺带着还又熟悉了一次Linux命令和操作。另外还了解到除了关系数据库原来还有个叫目录型数据库的东东,JNDI就是专门搞这玩意的,树形结构原理很容易理解,类似Corba的命令服务原理,只是在数据的DN,DC,Attribute等等属性上折腾了会儿,很多东西都是定义好的,没法自己命名,很不爽。
     
    OpenLDAP似乎比较变态,好像新版不兼容旧版的命令,网上查到不少文章,把代码弄好运行之后千奇百怪的错误不停的冒出来,挨个的搜索原因,最后找到一篇总结性的文章部分内容如下:The mentioned article aims to old version OpenLDAP. It is very old. You should contact the author to update it. 我只有一个想法:问候一下OpenLDAP的开发人员祖宗十八代。
     
    折腾了两天终于有点成果了,已经搞定添加和删除操作。
    January 04

    真相

    今天和同学聊天知道毕业前投市招行没音讯的原因--网络部已经同意要偶了,结果人力资源的老太真变态,说俺没有银行从业经验,就这样把俺给pass了。弄得现在俺每天生命不息,加班不止,衰老了很多,折寿啊。
     
    好消息,变态老太退居二线,俺又准备再投一次,希望这次新的头头心地善良,把俺收了吧。