welcome: please sign in
location: "オブジェクトをつなぐ"の差分
12と13のリビジョン間の差分
2010-11-12 13:26:41時点のリビジョン12
サイズ: 1953
編集者: masahiko
コメント:
2010-11-12 13:31:53時点のリビジョン13
サイズ: 1961
編集者: masahiko
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 66: 行 66:
でも長くつながったときに、
a.next.next.next.next.next
のようにして参照するのではたいへんです。
##でも長くつながったときに、
##a.next.next.next.next.next
##のようにして参照するのではたいへんです。
行 70: 行 70:
良い方法は次のページで。 ##良い方法は次のページで。

オブジェクトをつなぐ

たくさんのオブジェクトを扱う方法の1つを学びます。

このような Chainクラスを考えましょう。

  •    1 public class Chain
       2 {
       3         Chain next;
       4 }
    

クラス図は

  • chain1.png

クラスのインスタンスはこのように表せます。

  • chain2.png


例1

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

このmainメソッドを実行すると、例えばこのように表示されます。

  • chain5.png

このときの変数やオブジェクトの対応は次のように表せます。

  • chain3.png

chain型(クラス)の変数aは、42e816番地にあるchainクラスのインスタンスを指しています。


練習

変数aの指しているインスタンス内にある変数nextについて考えます。

nextもまたchain型(クラス)の変数ですから、 nextを使って他のインスタンスを指すことができます。

図のようにするための処理を書きましょう。

  • chain4.png

後ろにつながれるほうのインスタンスがbで参照できるときは、 このように書けます。

  •    1                 Chain a, b;
       2 
       3                 a = new Chain();
       4                 b = new Chain();
       5                 ...
       6                 a.next = b;
       7                 ...
    

後ろにつながれるインスタンスをその場で作成してよいときは、 このようもに書けます。

  •    1                 Chain a;
       2 
       3                 a = new Chain();
       4                 ...
       5                 a.next = new Chain();
       6                 ...
    

こうしていくつものインスタンスをチェーンのようにつなぐことができます。

オブジェクトをつなぐ (最終更新日時 2010-11-17 00:30:20 更新者 masahiko)