2354
コメント:
|
2915
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 3: | 行 3: |
指示に従って作図しなさい。<<BR>> | クラスでは'''属性'''(性質)と'''動作'''(機能)を定義します。 属性はデータ構造(データの集まり)とも考えられます。 今回はクラスのデータについて説明します。 ---- 指示に従って作図しなさい。 |
行 14: | 行 21: |
Card a, b, c; | Card a; Card b; Card c; |
行 33: | 行 42: |
---- 1.プログラムの構造を描きます |
|
行 34: | 行 45: |
プログラムの構造と、宣言されている変数を図示するとこのようになります。 | クラス全体を長方形で次のように囲みます。 . attachment:class2.png クラスの中にあるメソッドを次のように囲みます。 今回はmainメソッド1つしかありませんが、通常は沢山のメソッドがあります。 . attachment:class2.png ---- 2.変数1つを1つの長方形で描きます。 |
行 46: | 行 63: |
先の型紙と同じ形で実体があります。 | インスタンスは型紙と同じ形をした実体です。 |
行 53: | 行 70: |
{{attachment:card3.png}} |
|
行 58: | 行 73: |
{{attachment:card4.png}} | {{attachment:card3.png}} |
行 66: | 行 81: |
{{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;
9 Card b;
10 Card c;
11
12 a = new Card();
13 a.suit = "ハート";
14 a.rank = 12;
15
16 b = new Card();
17 b.suit = "スペード";
18 b.rank = 3;
19
20 c = b;
21 c.rank = 10;
22
23 System.out.println( "aは " + a.suit + a.rank );
24 System.out.println( "bは " + b.suit + b.rank );
25 System.out.println( "cは " + c.suit + c.rank );
26 }
27 }
1.プログラムの構造を描きます
クラス全体を長方形で次のように囲みます。
- attachment:class2.png
クラスの中にあるメソッドを次のように囲みます。 今回はmainメソッド1つしかありませんが、通常は沢山のメソッドがあります。
- attachment:class2.png
2.変数1つを1つの長方形で描きます。
クラスの中にある2つの変数 suit と rank はこの場所に変数がとられるわけではありません。
インスタンス(そのクラスのオブジェクト)が作成されるときの型紙として使われます。
角の丸い点線の長方形で囲んで Cardというクラスオブジェクトの型紙であることを示します。
クラスは型にあたります。
プログラムの8行目の変数宣言では Cardという型(クラス)の変数 a, b, c を準備しています。
10行目の new Card() が行われると、Cardクラスのオブジェクトが作られます。 インスタンスは型紙と同じ形をした実体です。
これをCard型の変数に代入することで、このオブジェクトやオブジェクト内の変数にアクセスできるようになります。
aのsuitは a.suit 、aのrankは a.rank とピリオドでつないで表します。
14行目でもうひとつCard型のオブジェクトが作られます。
オブジェクトはいくつでも作ることができます。
18行目では変数bの値を、変数cに代入しています。 この結果、変数cは変数bと同じ値をもつことになり、同じオブジェクトを参照します。
19行目で c.rank の値を変更しています。 変数cとbは同一のオブジェクトを参照していましたから、 この後で b.rank の値を参照すると、この値も変わっているのが分かります。