前ページで紹介した、3件入力後に、3件表示する実行例です(赤が入力)
商品コード>>D05 数量>>50 商品コード>>B10 数量>>90 商品コード>>C01 数量>>45 1番目レコード 商品コード:D05 数量:50 2番目レコード 商品コード:B10 数量:90 3番目レコード 商品コード:C01 数量:45
このプログラムは、Record2クラスとTestクラスの2つで実行できました。
そのRecord2.javaを以下に示します。
import java.util.Scanner; public class Record2{ public String sho; // 商品コード public short suu; // 数量 //n番目表示としてオペレータ用で画面表示する public void display(int n){ System.out.printf("%4d番目レコード\n", n); System.out.printf("\t商品コード:%s\n", sho); System.out.printf("\t数量:%d\n", suu); } //商品コードと数量を引数で設定するメソッド public void init(String shoCode, int n) { sho = shoCode; suu = (short)n; } //引数ありコンストラクタ public Record2(String sho, int n){ init(sho, n); } //引数なしコンストラクタ public Record2(){ } //商品コードと数量をキー入力 public void init(Scanner stdin) { System.out.print(" 商品コード>>"); sho = stdin.nextLine(); System.out.print(" 数量>>"); String s = stdin.nextLine(); suu = (short)Integer.parseInt(s); } //キー入力データで初期化するコンストラクタ public Record2(Scanner stdin){ init(stdin); } }
Test.javaを以下に示します。
public class Test { public static java.util.Scanner stdin = new java.util.Scanner(System.in); public static void main(String[] arg) { Record2 []a = new Record2[3]; a[0] = new Record2(stdin); // キー入力でRecord2オブジェクト生成(コンストラクタ実行) a[1] = new Record2(stdin); // キー入力でRecord2オブジェクト生成(コンストラクタ実行) a[2] = new Record2(stdin); // キー入力でRecord2オブジェクト生成(コンストラクタ実行) for (int i = 0; i < a.length; i++) { a[i].display(i+1); } } }
初期目標の「データファイルを作るプログラム」を作成していないので、まだ短いプログラムコードですが、
これからRecord2.javaのコードは増える予定です。
そうすると、以前に作成したコードに何を作ったか忘れてしまう場合などがあります。
その時、コードが長くなると、一目瞭然という訳には済まなくなります。
(フィールドは、一般にクラス先頭に書くのですぐ分かりますが、メソッドは、全体のコードを見ないと把握できませんね。)
そこで、どのような構造で管理し、どんな命令が使えるようにしたかをすぐに把握できるように、
よくクラス図が使われます。
クラス図の書き方は、次の通りです。
上述のプログラムにおいて、クラス図は次のようになります。
これより、この作品では、Record2とTestクラスの2つを使っているとすぐ分かります。
また、Record2は、2つのフィールド(choとsuu)を持ち、6個のメソッド(命令)を持つことがすぐ分かります。
クラス図において、shoやsuuのフィールド名は属性と呼ばれます。
また、メソッド名は、操作と呼ばれ、 ( ) のカッコを書き、その中にパラメータを書きます。
また、型を書く場合は、上記図の sho : String でわかるように、 : を書いてその後ろに型名を書きます。
そして、初期値を書く場合は その後ろに = を書いて表現します。
Testクラスで示すように、staticメンバ(フィールドやメソッド)にはアンダーラインを書きます。
また、詳細は後述しますが、publicのアクセス指定子のメンバには、先頭に + を書きます。
privateなら − です。他にprotectedの # 、packageの ~ などがあり、
これらは、可視性と呼ばれます。
ソースなどドキュメントや設計書など、様々な使われ方をしますが、
ソースに合わせて全てを『詳細に書かなければならない』 わけではありません。
関係だけを書くならクラス名だけを書いた簡単な長方形だけで表現する場合や、
データメンバや、メソッドを書かずに示したりと、
利用する状況に応じて部分的に書いても構わないことになっています。