10.6 示例应用程序
为了解释前面使用的一些技术,下面开发一个类模块,以便在后续章节中使用。这个类模块包含两个类:
Card——表示一张标准的扑克牌,包含梅花、方块、红心和黑桃,其顺序是从A到K。
Deck——表示一副完整的 52 张扑克牌,在扑克牌中可以按照位置访问各张牌,并可以洗牌。
再开发一个简单的客户程序,确保程序正常工作,但在整个扑克牌应用程序中不使用扑克牌。
10.6.1 规划应用程序
这个应用程序的类库Ch10CardLib包含类。在开始编写代码前,应规划一下需要的结构和类的功能。
1. Card类
Card类基本上是两个只读字段suit和rank的容器。把字段指定为只读的原因是“空白”的牌是没有意义的,牌在创建好后也不能修改。为此,要把默认的构造函数指定为私有,并提供另一个构造函数,从给定的suit和rank中建立一副扑克牌。
此外,Card类要重写System.Object的ToString()方法,这样才能获得人们可以理解的字符串,以表示扑克牌。为使编码简单一些,为两个字段suit和rank提供枚举。
Card类如图10-8所示。
2. Deck类
Deck类包含52个Card对象。我们为这些时象使用一个简单的数组类型。这个数组不能直接访问,因为对Card对象的访问要通过GetCard()方法来实现,该方法返回指定索引的Card对象。这个类也有一个Shuffle()方法,重新安排数组中的牌,所以它应如图10-9所示。