再利用を考慮すると、『商品コードとその数量』という単位で、命令を分割していくと再利用しやすいことがわかります。
『画面表示』、『ファイル書き込み』『ファイル読み込み』、『データ設定』・・などの命令を、
一つの『商品コードとその数量』の情報に対する命令として作れば、
前述で列挙した「複数のファイルで集計」、「特定範囲のデータを抽出」・・
でも利用できそうという訳です。
そこで次のように、昔から使われるサブルーチンに対する引数渡しという作り方もできます。
| 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 で生成するときに実行するものです。これは、クラスの中で定義することができます。
←全ての『未選択』の箇所を正しく選択してから評価ボタンをクリックしてください