单人纸牌(Elevens Lab)活动1:设计并创建class Card
导言
在本活动中,你将完成class Card并以此来创建扑克牌object。
回想一下你玩过的扑克游戏。这些游戏需要扑克牌object本身“记住”什么信息?这些游戏又需要扑克牌object能够执行什么操作?
探索
现在让我们来实现表示扑克牌的class。它应该包含哪些实例变量呢?应该提供哪些method呢?与同学讨论你对class Card的想法。
阅读目录里已经部分完成的class Card框架。在读的时候,你会注意到在toString method上使用的@Override注释。Java中,@Override注释被用来表明某个method一定重写了parent class中的同名method。在这个例子中,class Object(Java所有class默认的parent class)的toString method要被class Card的对应method重写。如果该method并没有实际重写parent class的对应method,Java编译器会报错。
这个功能在某些情况下会相当有用。Java的初学者常常会在编写child class时搞错parent class中的method签名(即参数列表和返回值的组合)。例如,在以下的class Weight中,程序员希望toString method能被作为Object的toString而调用。
public class Weight {
private int pounds;
private int ounces;
public String tostring(String str) {
return this.pounds + " lb. " + this.ounces + " oz.";
}
}
不过,程序员很快会发现这段代码达不到预期的效果。class Object中的toString有不同的名字和签名。以下method才能正确重写toString。
public String toString() {
return this.pounds + " lb. " + this.ounces + " oz.";
}
对上一个例子,如果加上@Override注释的话,Java编译器就会报错以及时提醒程序员更正问题。
练习
- 利用框架完成
class Card的实现。你需要完成:- 一个接受两个
String参数和一个int参数的构造函数。String参数分别表示扑克牌的大小和花色。int参数表示扑克牌的点数值。 - 读取大小、花色和点数值的method。
- 测试两个扑克牌
object是否相等的method。 toStringmethod用来以字符串形式输出扑克牌。格式是大小 of 花色 (point value = 点数值)
- 一个接受两个
- 在完成
class Card之后,利用同一目录中的CardTester.java来创建三个Card的object,并测试它们的每个method。
1 条评论
AP计算机科学实验:单人纸牌(Elevens Lab) – AP Computer Science · 2018年5月12日 下午2:09
[…] 活动1:设计并创建class Card […]