抽象的目的是为了 模块化 低耦合
怎么设计 你可以自己决定
不过 说句实话  
你对oo思想可能还需更多的操作来锻炼
oo的思想不是看你抽象出多少对象 他的精髓是他的三大特性
封装  继承 多态 以及 重载
比如 人的电脑 在这个应该是基于 Class游戏者的子类
具有共同的属性 和共同的方法  比如func下子 func悔棋  等等

解决方案 »

  1.   


    你的例子让我有了点启发。
    起初我也想过 有个父类,子类人和电脑继承父类,但是不知道这个父类 play的方法应该写什么,
    可以把父类写成abstract class吗, 然后人和电脑都 继承这个absract类?
    希望你能给点建议,谢谢
      

  2.   

    在这里 
    可以使用抽象类
    抽象类的目的  简单点理解  就是抽取实体对象共同方法和属性存放在其中
    是不能被实例化的  就像一个简单轮廓图
    里面应该存放  人和电脑共同的方法   
    我上面说了 人和电脑 在下棋方面  一定会有下棋 悔棋 等等共同的方法
    看你说play的方法  说明你代码的耦合度应该很高
    abstract Gamer
    {
    abstract void putSomeWhere(x,y,color) //将棋子方法某个位置
    abstract void backTo(Message,step)//悔棋,悔几步
    abstract void Wait() // 请求暂停
    ....
    }
    别看一个小小的的下棋程序
      

  3.   


    相当好的建议, 完美。
    我现在还在想着怎么把 悔棋这个方法加上,思路有点,就是用stack,走一步,就push到stack中,如果悔棋,就pop,但是还是不知道该怎么实现。这个stack去record应该属于chesspad 的方法吧, 然后人和电脑有悔棋的方法。 如果悔棋,就去调用chesspad 的这个方法,把chesspad 的这个位置为空。
    不知道这个想法是否可行性。还有那个wait(),是不是直接调用wait()这个方法 就好啊?谢谢~