サイズ: 3715
コメント:
|
サイズ: 3750
コメント:
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 73: | 行 73: |
1. cが先頭のインスタンスを指している場合です。 | 1. 先頭のインスタンスを表示。 . cが先頭のインスタンスを指している場合です。 |
行 75: | 行 76: |
. このインスタンスを表示するには、先に作成した1つのオブジェクトを表示するメソッドshow()を使えばよい。 | . cが指しているインスタンスを表示するには、1つのオブジェクトを表示するメソッドshow()を使えばよい。 |
行 79: | 行 80: |
2. 2番目のインスタンスの処理。 . まず、変数 c が2番目のインスタンスを指すように修正しなければなりません。 |
2. 2番目のインスタンスに移る。 . 先頭のインスタンスの処理(表示)が終わったら、c が次のインスタンスを指すように修正します。 . 上の図から次の図になるようにcの値を修正します。 |
行 82: | 行 84: |
. cが指したい場所は、1の段階でのc.nextが指しているのでこのように書けます。 | . c.nextが指していたものを、cが指すようにすればよいので次のように書けます。 |
行 86: | 行 88: |
. この後、1と同様に c.show()を行えばよい。 3. 次のインスタンスの処理。 . したがって、次のインスタンスの処理はこのように書けます。 |
3. 繰り返しの内容。 . したがってインスタンスがつながっているときは、1,2の処理を繰り返して行えばよいと考えられる。 |
行 90: | 行 91: |
c = c.next; c.show(); |
while (条件) { c.show(); c = c.next; } |
行 93: | 行 97: |
. インスタンスがつながっているときは(個数にかかわらず)この処理でよい。 |
つながったオブジェクトを表示する
オブジェクトの操作を行うまえに、表示のためのメソッドを作っておきます。
1つのオブジェクトを表示する
オブジェクトのアドレス(と種類)を表示するには、 オブジェクトを指している変数の値をprintすればよい。
ここで
System.out.println(a);
の代わりに
a.show();
と書けるようにするには、つぎのようなshowメソッドを定義すればよい。
void show() { System.out.println(this); }
どこも参照していないときの値
Chainクラスのインスタンスはこのような形をしています。
変数nextがどこも参照していないときは、どんな値をとればよいのでしょうか。
この値は
- null
と決められており、オブジェクト型の変数が作られたときは、 nullで自動的に初期化されます。
次のようなプログラムを実行して確かめることができます。
実行すると
null
と表示されます。
つながったオブジェクトを表示する
showAllという名前のメソッドを作成します。
変数aがChainインスタンスを指しており、 そのインスタンスの変数nextがまた別のChainインスタンスを指しているような場合に
a.showAll();
とすることで、つながっているChainインスタンスをすべて表示するものです。
- Chainインスタンスがつながっている個数は決まっていません。
- 一番後ろのChainインスタンスの変数nextの値はnullになっています。
showAllメソッド内での処理を考える
いくつものインスタンスを表示するためには、 変数を使ってインスタンスをたどっていく必要があります。
- このために 変数 c を使うことにします。
1. 先頭のインスタンスを表示。
- cが先頭のインスタンスを指している場合です。
- cが指しているインスタンスを表示するには、1つのオブジェクトを表示するメソッドshow()を使えばよい。
c.show();
2. 2番目のインスタンスに移る。
- 先頭のインスタンスの処理(表示)が終わったら、c が次のインスタンスを指すように修正します。
- 上の図から次の図になるようにcの値を修正します。
- c.nextが指していたものを、cが指すようにすればよいので次のように書けます。
c = c.next;
3. 繰り返しの内容。
- したがってインスタンスがつながっているときは、1,2の処理を繰り返して行えばよいと考えられる。
while (条件) { c.show(); c = c.next; }
4. いちばん後ろのインスタンスの処理。
変数aが次のようなオブジェクトを参照しているときに
- a.showAll()
が呼ばれた場合の動作を考えます。
メソッドが呼ばれると、呼び出し元の変数の値がthisに渡されます。
- ここではaの値がthisに渡されるのでthisはaが指していたのとおなじオブジェクトを指します。
先に作成した1つのオブジェクトを表示するメソッドshow()