welcome: please sign in
location: "つながったオブジェクトを表示する"の差分
10と11のリビジョン間の差分
2010-11-14 13:36:03時点のリビジョン10
サイズ: 3196
編集者: masahiko
コメント:
2010-11-14 13:46:34時点のリビジョン11
サイズ: 3715
編集者: masahiko
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 82: 行 82:
 .  . cが指したい場所は、1の段階でのc.nextが指しているのでこのように書けます。
 {{{
c = c.next;
 }}}
 . この後、1と同様に c.show()を行えばよい。
3. 次のインスタンスの処理。
 . したがって、次のインスタンスの処理はこのように書けます。
 {{{
c = c.next;
c.show();
 }}}
 . インスタンスがつながっているときは(個数にかかわらず)この処理でよい。
4. いちばん後ろのインスタンスの処理。
 . {{attachment:chain9.png}}
行 91: 行 105:
 . {{attachment:chain9.png}}

つながったオブジェクトを表示する

オブジェクトの操作を行うまえに、表示のためのメソッドを作っておきます。


1つのオブジェクトを表示する

オブジェクトのアドレス(と種類)を表示するには、 オブジェクトを指している変数の値をprintすればよい。

ここで

  • System.out.println(a);

の代わりに

  • a.show();

と書けるようにするには、つぎのようなshowメソッドを定義すればよい。

  • void show()
    {
            System.out.println(this);
    }


どこも参照していないときの値

Chainクラスのインスタンスはこのような形をしています。

  • chain2.png

変数nextがどこも参照していないときは、どんな値をとればよいのでしょうか。

この値は

  • null

と決められており、オブジェクト型の変数が作られたときは、 nullで自動的に初期化されます。

次のようなプログラムを実行して確かめることができます。

  •    1 public static void main(String[] args)
       2 {
       3         Chain a;
       4         a = new Chain();
       5         System.out.println(a.next);
       6 }
    

実行すると

  • null

と表示されます。


つながったオブジェクトを表示する

showAllという名前のメソッドを作成します。

変数aがChainインスタンスを指しており、 そのインスタンスの変数nextがまた別のChainインスタンスを指しているような場合に

  • a.showAll();

とすることで、つながっているChainインスタンスをすべて表示するものです。

  • Chainインスタンスがつながっている個数は決まっていません。
  • 一番後ろのChainインスタンスの変数nextの値はnullになっています。


showAllメソッド内での処理を考える

いくつものインスタンスを表示するためには、 変数を使ってインスタンスをたどっていく必要があります。

  • このために 変数 c を使うことにします。

1. cが先頭のインスタンスを指している場合です。

  • chain7.png

  • このインスタンスを表示するには、先に作成した1つのオブジェクトを表示するメソッドshow()を使えばよい。
    c.show();

2. 2番目のインスタンスの処理。

  • まず、変数 c が2番目のインスタンスを指すように修正しなければなりません。
  • chain8.png

  • cが指したい場所は、1の段階でのc.nextが指しているのでこのように書けます。
    c = c.next;
  • この後、1と同様に c.show()を行えばよい。

3. 次のインスタンスの処理。

  • したがって、次のインスタンスの処理はこのように書けます。
    c = c.next;
    c.show();
  • インスタンスがつながっているときは(個数にかかわらず)この処理でよい。

4. いちばん後ろのインスタンスの処理。

  • chain9.png


変数aが次のようなオブジェクトを参照しているときに

  • a.showAll()

が呼ばれた場合の動作を考えます。

  • chain6.png

メソッドが呼ばれると、呼び出し元の変数の値がthisに渡されます。

  • ここではaの値がthisに渡されるのでthisはaが指していたのとおなじオブジェクトを指します。

先に作成した1つのオブジェクトを表示するメソッドshow()

つながったオブジェクトを表示する (最終更新日時 2010-11-17 00:30:43 更新者 masahiko)