实践目的:
1、学会定义接口
2、掌握什么情况下用接口
3、抽象类与接口的区别
实践内容:
1、设计动物Animal类,和三个子类(Dog、Cat和Fish),另Fish也属于食物Food的子类,此时Food不能作为类,可以设计为接口。
2、设计棋盘接口BoardInterface,棋盘抽象类Board,和棋规则接口RuleInterface、棋手代理抽象类BoardAgent。
提示:
1)对于(最抽象的、最上层的、最统一的)棋类游戏,BoardInterface和RuleInterface界定棋盘和下棋规则的有关规定。
2)受鸿门宴中范增和张良对弈精彩桥段的启发,负责思考的和负责操纵棋子的应该分开,分属Player (棋手) 和BoardAgent抽象类。其中负责操纵棋子的BoardAgent应该由Board来提供,也即Board持有BoardAgent的两个Object。
3)局时,首先确定两位棋手,并确定哪一位是先手方,哪一位是后手方。然后为每个棋手分配一名BoardAgent,该Agent根据棋手指示的走步,首先确定该走步是否合法,并根据合法的走步,为棋手走子。也就是说,BoardAgent还充当了裁判的角色,他所掌握的规则是标准的、权威的。所以,BoardAgent应该实现RuleInterface接口。
总结: