Towerの設計「ハノイの塔」を作る第一歩として、その“要素となる物”のクラスを考えることにしました。
「ハノイの塔」の要素として「塔」と塔に積まれる「リング」の二つを思い付きました。
この二つをクラスにすることを考えたのですが、どうも「塔」だけをクラスにすれば「
ハノイの塔」は実現できそうだったので「塔」のクラス、Towerクラスを考えることにしました。
Towerに何ができるか考えたところ
があれば良いだろうと思いました。
これを実装するクラスを考えるわけですが、最後の二つ
に注目すると「一番最後に入れたものを一番最初に取り出す」という機能があれば実現できることが解ります。
この「一番最後に入れたものを一番最初に取り出す」=「ラスト・イン・ファースト・アウト」の機能は「スタック」と呼ばれるものらしいので、この機能がJavaのクラス・ライブラリにないか探しました。
するとjava.util.Vectorのサブクラスでjava.util.Stackというクラスがあり、それを調べると上記の四つの機能はjava.util.Stackあるいはjava.util.Vectorのメソッドで実現できることが解りました。
java.util.Vector.size()
java.util.Stack.peek()
java.util.Stack.pop()
java.util.Stack.push()
ということで、結局クラスTowerは作成せず、java.util.Stackをそのまま用いることにしました。