当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

C++编程杂谈之三:面向对象(续)

上一篇我们涉及了面向对象的一个基本概念——封装,封装是一个相对比较简单的概念,也很容易接受,但是很多的场合下面,仅仅是封装并不能很好的解决很多问题,考虑下面的例子:
 
  假设我们需要设计一个对战游戏的战斗细节,在最初的版本中我们将支持一种动作——fight.假设我们有三种角色:fighter、knight和warrior,每种角色的health、hit point不同,基于封装的基本想法,我们很自然的想到对每个对象使用类的封装,首先明显的元素有2个:health、hit point,另外还有name(我们不能只有三个角色)和战斗的速度speed,方法有:hit、isalive.基于这样的想法,我们给出下面的类:
 
 class fighter
{
  private:
    int        m_iHealth;
    int       m_iSpeed;//为了方便,这个值使用延时值,越大表示速度越慢
    const int     m_iHitPoint;
    char       m_strName[260];
  public:
    fighter(const char* strName);
    void hit(fighter* pfighter);
    bool isAlive();
};


  上面的类可以清楚的抽象出我们所需要表达的数据类型之一,这里也许你已经发现了一些问题:
 
  成员函数hit用来处理战斗事件,但是我们有不同的角色,fighter不可能只跟自己同样的对手作战,我们希望它能和任何角色战斗,当然,使用模板函数可以简单的解决这个问题。另外,我们必须去实现三个不同的类,并且这些类必须都实现这些属性和方法。即使这些问题我们都解决了,现在我们要组织两个队伍作战,我们希望使用一种群体类型来描述它们,问题是我们必须针对每一种类建立相应的群体结构,当然你可以认为3个不同的类型不是很多,完全可以应付,那么如果有一天系统升级,你需要管理上百种类型的时候,会不会头大呢?
 

共5页 首页 上一页 1 2 3 4 5 下一页 尾页 跳转到
相关内容
赞助商链接