算法(4th ed)(74):基础——数据抽象 4.1.7

阅读数:11 2019 年 11 月 2 日 11:55

算法(4th ed)(74):基础——数据抽象 4.1.7

(使用抽象数据类型:使用对象)

通过声明语句可以将变量名赋给对象,在代码中,我们不仅可以用该变量创建对象和调用实例方法,也可以像使用整数、浮点数和其他原始数据类型的变量一样使用它。要开发某种给定数据类型的用例,我们需要:

  • 声明该类型的变量,以用来引用对象;
  • 使用关键字 new 触发能够创建该类型的对象的一个构造函数;
  • 使用变量名在语句或表达式中调用实例方法。

例如,下面用例代码中的 Flips 类就使用了 Counter 类。它接受一个命令行参数 T 并模拟 T 次掷硬币(它还调用了 StdRandom 类)。除了这些直接用法外,我们可以和使用原始数据类型的变量一样使用和对象关联的变量:

  • 赋值语句;
  • 向方法传递对象或是从方法中返回对象;
  • 创建并使用对象的数组。
复制代码
public class Flips
{
public static void main(String[] args)
{
int T = Integer.parseInt(args[0]);
Counter heads = new Counter("heads");
Counter tails = new Counter("tails");
for (int t = 0; t < T; t++)
if (StdRandom.bernoulli(0.5))
heads.increment();
else tails.increment();
StdOut.println(heads);
StdOut.println(tails);
int d = heads.tally() - tails.tally();
StdOut.println("delta: " + Math.abs(d));
}
}
`Counter` 类的用例,模拟 `T` 次掷硬币
复制代码
% java Flips 10
5 heads
5 tails
delta: 0
% java Flips 10
8 heads
2 tails
delta: 6
% java Flips 1000000
499710 heads
500290 tails
delta: 580

接下来将逐个分析它们。你会发现,你需要从引用而非值的角度去考虑问题才能理解这些用法的行为。

评论

发布