ASP.NET入门随想之金庸群“粒”传(2)

发表于:2007-06-30来源:作者:点击数: 标签:
■ 九九归一 - 面向对象 思想的对象世界 我的《金庸群侠传》玩友石头有些与常人不同的习惯:看人时,并不关注这人的外形,而是关注他的生命值和攻击力;谈话前,常会下意识地用大姆指在空中狠狠按一下;进入一个陌生的屋子后,石头的目光通常会先投向柜子和
     ■ 九九归一 - 面向对象思想的对象世界
  
    我的《金庸群侠传》玩友石头有些与常人不同的习惯:看人时,并不关注这人的外形,而是关注他的生命值和攻击力;谈话前,常会下意识地用大姆指在空中狠狠按一下;进入一个陌生的屋子后,石头的目光通常会先投向柜子和抽屉,生怕遗漏里头的药丸。
  
    很多人描述自己的《金庸群侠传》传奇时,常会以"出茅屋、进河洛、到南贤……"之类的话来开题,洋洋洒洒说上半天,欧阳克野球拳宝济丸之类夹杂其中,让人不禁对其博学多才油然而生敬仰之情,可回头咀嚼,却依稀只记下几个名词。一向崇拜cantor的石头是这么描述这个世界:"一块蛋糕,点缀着几个草莓,一只蚂蚁在其中往返,并不时地钻到草莓里头看看。"
  
    《金庸群侠传》给我们带来的第一映像是充斥着各种各样的粒子。我们将会遇到客栈老板、欧阳克等人物;将会得到宝济丸、岚氏乌鸡精等物品;将学会辟邪剑法、左右手互搏术等武功;将钻进少林寺、武当山等地。涉世之初,它们混沌地夹杂在一起。
  
    这些粒子有各自的特征和行为,如小虾米有攻击力、防御力等数值来描述他的当前状态,可做行走、服药、对话、决斗等动作来影响自己或它人的状态。我们将所有粒子统一命名为对象(object),用图5-2右描述,并可将所有的对象定义成一个集合,如图5-2左:
  
  
  
  一一列出所有的对象太麻烦,而且许多对象极其相似,所以我们可以用集合的等价划分方法(图5-3左)来简化描述,并用类(class)来刻画划分(金庸群侠对象集合的子集),如图5-3右。
  
  
  
  这个从归纳到演绎的过程是面向对象思想的核心:首先用类来刻画所有相似对象,完成了从多到少的抽象过程,化繁为简;使用时通过类派生出实例,完成从少到多的构造过程。实际上这就是cantor朴素集合论化潜无限为实无限的思想。
  
    我们再来看看有趣的类。首先它要求别人尊重它的隐私,隐藏一切与其他对象无关的属性和方法,如对于平一指而言,他不能控制小虾米的行走,也不知道小虾米是如何完成行走这个行为,我们把这种特性称之为封装,小虾米用private和public关键字控制自身描述是否向外界开放,这是软件开发工厂模式的基本前提。实际上在以后的章节中我们可以发现目前实际应用倾向于尽可能地封装类的属性和方法,而通过其它方法来完成访问类。
  
    再则类的方法(method)善变,谓之重载,是面向对象思想多态性的一种情形。重载是对相似方法的抽象,善变的目的是为了让方法变得更简单明了。以人物类的服药方法为例,宝济丸加体而岚氏乌鸡精加精,其效果不同,传统办法是使用大量SWITCH或IF嵌套来实现。而现在可以修正如下,发招方法同样可以重载。对类的外界而言方法名是唯一的,但实际使用过程中系统会根据参数自动调用不同实现:
  
  Class 人物
  {
   ……
   服药(宝济丸){生命力+=3;}
   服药(岚氏乌鸡精){精气+=5;}
   ……
  }
  

原文转自:http://www.ltesting.net