再利用を考慮すると、『商品コードとその数量』という単位で、命令を分割していくと再利用しやすいことがわかります。
『画面表示』、『ファイル書き込み』『ファイル読み込み』、『データ設定』・・などの命令を、
一つの『商品コードとその数量』の情報に対する命令として作れば、
前述で列挙した「複数のファイルで集計」、「特定範囲のデータを抽出」・・
でも利用できそうという訳です。
そこで次のように、昔から使われるサブルーチンに対する引数渡しという作り方もできます。
Record2.java | Test.java |
---|---|
public class Record2 { public String shoCode;// 商品コード public short suu; // 数量 } |
public class Test{ public static void display( , int n){ System.out.println(n + "番目商品コード:" + rec.shoCode); System.out.println(" 商品数:" + rec. ); } public static void main(String[] arg){ Record2 a = new Record2(); Record2 b = new Record2(); a.shoCode = "A01"; a.suu = 10; b.shoCode = "B02"; b.suu = 7; display(a, 1); display(b, 2); } } |
しかし、グローバル的なサブルーチンでは、命令と情報の関係が明確に見えません。
例えば display(a, 1)は、aと1の情報で表示させる命令です。
ここで、aが表示したい情報で、1は付随するものという関係ですが、
この逆(1をaの付随情報で表示)にも見えます。
この関係を明確にするために、オブジェクト指向言語では、
『aを、付随情報で表示させる』を『a.display( 付随情報 )』のような表記にしました。
そしてこの場合のdisplayは、
aというオブジェクトに対する命令ということで、
そのオブジェクトの設計書(クラス)内で定義する規則になったのです。
次のようになります。
Record2.java | Test.java |
---|---|
import java.io.*; public class Record2 { public String shoCode;// 商品コード public short suu; // 数量 public void display(int n){ System.out.printf("%4d番目レコード\n", n); System.out.printf("\t商品コード:%s\n", shoCode); System.out.printf("\t数量:%d\n", suu); } public void init(String sho, int n){ shoCode = sho; suu = n;// キャストが必要 } } |
public class Test{ public static void main(String[] arg){ Record2 a = new Record2(); // 【1】 Record2 b = new Record2(); // 【2】 a.init( ); b.init( "B02", 7 ); a.display(1); b.display(2); } } |
このようにして、作成したdisplay命令は、と呼ばれます。
(作る順番は自由です)
また、 shoCode 、や suu は、と呼ばれます。
【1】【2】の、 Record2() の表現は、
とよばれ、new で生成するときに実行するものです。これは、クラスの中で定義することができます。
←全ての『未選択』の箇所を正しく選択してから評価ボタンをクリックしてください