welcome: please sign in
location: "クラス"の差分
4と9のリビジョン間の差分 (その間の編集: 5回)
2008-10-24 07:24:19時点のリビジョン4
サイズ: 1347
編集者: masahiko
コメント:
2009-10-20 11:59:23時点のリビジョン9
サイズ: 2595
編集者: masahiko
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 3: 行 3:
プログラムを実行しないこと。<<BR>> クラスでは'''属性'''(性質)と'''動作'''(機能)を定義します。

属性はデータ構造(データの集まり)とも考えられます。

今回はクラスのデータについて説明します。

----
行 5: 行 11:
プログラムを実行しないこと。
行 37: 行 44:
インスタンス(そのクラスのオブジェクト)が作成されるときの型紙として使われます。<<BR>> インスタンス(そのクラスのオブジェクト)が作成されるときの'''型紙'''として使われます。<<BR>>
行 40: 行 47:
クラスは型にあたります。<<BR>> '''クラス'''は型にあたります。<<BR>>
行 43: 行 50:
{{attachment:card1.png}}  {{attachment:card1.png}}
行 45: 行 52:
10行目の new Card() が行われると、Cardクラスのオブジェクトが作られます。
インスタンスは型紙と同じ形をした実体です。
行 46: 行 55:
{{attachment:card2.png}}  {{attachment:card2.png}}
行 48: 行 57:
{{attachment:card3.png}} これをCard型の変数に代入することで、このオブジェクトやオブジェクト内の変数にアクセスできるようになります。<<BR>>
aのsuitは a.suit 、aのrankは a.rank とピリオドでつないで表します。
行 50: 行 60:
{{attachment:card4.png}} 14行目でもうひとつCard型のオブジェクトが作られます。<<BR>>
オブジェクトはいくつでも作ることができます。

 {{attachment:card3.png}}

18行目では変数bの値を、変数cに代入しています。
この結果、変数cは変数bと同じ値をもつことになり、同じオブジェクトを参照します。

19行目で c.rank の値を変更しています。
変数cとbは同一のオブジェクトを参照していましたから、
この後で b.rank の値を参照すると、この値も変わっているのが分かります。

 {{attachment:card4.png}}

クラス

クラスでは属性(性質)と動作(機能)を定義します。

属性はデータ構造(データの集まり)とも考えられます。

今回はクラスのデータについて説明します。


指示に従って作図しなさい。 プログラムを実行しないこと。

   1 public class Card
   2 {
   3         String suit;
   4         int rank;
   5         
   6         public static void main(String[] args)
   7         {
   8                 Card a, b, c;
   9                 
  10                 a = new Card();
  11                 a.suit = "ハート";
  12                 a.rank = 12;
  13                 
  14                 b = new Card();
  15                 b.suit = "スペード";
  16                 b.rank = 3;
  17                 
  18                 c = b;
  19                 c.rank = 10;
  20 
  21                 System.out.println( "aは " + a.suit + a.rank );
  22                 System.out.println( "bは " + b.suit + b.rank );
  23                 System.out.println( "cは " + c.suit + c.rank );
  24         }
  25 }

プログラムの構造と、宣言されている変数を図示するとこのようになります。

クラスの中にある2つの変数 suit と rank はこの場所に変数がとられるわけではありません。
インスタンス(そのクラスのオブジェクト)が作成されるときの型紙として使われます。
角の丸い点線の長方形で囲んで Cardというクラスオブジェクトの型紙であることを示します。

クラスは型にあたります。
プログラムの8行目の変数宣言では Cardという型(クラス)の変数 a, b, c を準備しています。

  • card1.png

10行目の new Card() が行われると、Cardクラスのオブジェクトが作られます。 インスタンスは型紙と同じ形をした実体です。

  • card2.png

これをCard型の変数に代入することで、このオブジェクトやオブジェクト内の変数にアクセスできるようになります。
aのsuitは a.suit 、aのrankは a.rank とピリオドでつないで表します。

14行目でもうひとつCard型のオブジェクトが作られます。
オブジェクトはいくつでも作ることができます。

  • card3.png

18行目では変数bの値を、変数cに代入しています。 この結果、変数cは変数bと同じ値をもつことになり、同じオブジェクトを参照します。

19行目で c.rank の値を変更しています。 変数cとbは同一のオブジェクトを参照していましたから、 この後で b.rank の値を参照すると、この値も変わっているのが分かります。

  • card4.png

クラス (最終更新日時 2011-10-27 05:41:48 更新者 masahiko)