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