[PR] 迷惑メール トップページプロ3ゼミJavaJava入門講座三学期単位11 →3時間目

3時間目 パッケージに慣れる

11−3−1.パッケージを区分けする

 パッケージを少し復習すると、クラスの衝突を避けるや開発者、開発者の会社、プロジェクトごとに分ける目 的で行う。
パッケージは、それ以外にも意味がまとまったクラスごとにパッケージ分けします。

 以下の文章からプログラムを作成してみましょう。

顧客の買い物履歴を帳票に記憶する。
 短い文章ですが、ここからクラスを抽出しましょう。
考えられるクラスは、顧客と帳票です。
この時に、帳票は誰が買ったかを表す為に、要素として顧客を保持する必要があります。
顧客を番号で管理すると(名前だと重複して一意に識別できませんから)、顧客クラスの顧客番号と帳票クラス の顧客番号は、共通します。
この仕組みは、インタフェースでメソッドを統一しましょう。
これらをクラスやインタフェースでまとめると以下の通りです。

●顧客に関する共通インタフェース
Custome.java
package first.java.unit11.common;

// 顧客に関する共通インタフェース
public interface CustomerCommon {

    // 顧客番号を返す
    public int getCustomerNumber();

    // 顧客番号を設定
    public void setCustomerNumber(final int customerNumber);
}

 顧客クラスと帳票クラスのメソッド名をインタフェースで統一します。

●顧客クラス
CustomerModel.java
package first.java.unit11.model;

import first.java.unit11.common.CustomerCommon;

// 顧客モデル
// 顧客に関する共通インタフェースを実装
public class CustomerModel implements CustomerCommon {

    // 顧客番号
    private int     customerNumber;
    // 顧客名
    private String  name;

    // 顧客名を返す
    public String getName() {

        return name;
    }

    // 顧客名を設定
    public void setName(final String name) {

        this.name = name;
    }

    // 顧客番号を返す
    public int getCustomerNumber() {

        return customerNumber;
    }

    // 顧客番号を設定
    public void setCustomerNumber(final int customerNumber) {

        this.customerNumber = customerNumber;

    }
}

 情報が少ないですが、顧客クラスです。

●帳票クラス
ListModel.java
package first.java.unit11.model;

import first.java.unit11.common.CustomerCommon;

// 帳票モデル
// 顧客に関する共通インタフェース
public class ListModel implements CustomerCommon {

    // 帳票番号
    private int     number;
    // 顧客番号
    private int     customerNumber;
    // 項目名
    private String  itemName;

    // 顧客番号を返す
    public int getCustomerNumber() {

        return customerNumber;
    }

    // 顧客番号を設定
    public void setCustomerNumber(final int customerNumber) {

        this.customerNumber = customerNumber;

    }

    // 項目名を返す
    public String getItemName() {

        return itemName;
    }

    // 項目名を設定
    public void setItemName(final String itemName) {

        this.itemName = itemName;
    }

    // 帳票番号を返す
    public int getNumber() {

        return number;
    }

    // 帳票番号を設定
    public void setNumber(final int number) {

        this.number = number;
    }
}

 こちらも、情報が少ないですが帳票クラスです。

 パッケージ名は、first.java.unit11で区分けし、顧客クラスと帳票クラスはモデルで区分けし、顧客に関する 共通インタフェースは共通のパッケージでさらに区分けしています。

 では、利用例を見てみましょう。

●利用例
Sample11_2_1.java
package first.java.unit11.sample;

import first.java.unit11.common.CustomerCommon;
import first.java.unit11.model.CustomerModel;
import first.java.unit11.model.ListModel;

// 単位11 3時間目 サンプル1
public class Sample11_3_1 {

    public static void main(final String[] args) {

        // 顧客を登録
        CustomerModel customer = new CustomerModel();
        customer.setName("ジャバ太郎");

        // 帳票を登録
        ListModel list = new ListModel();
        list.setNumber(1);
        list.setItemName("パソコン");

        // 顧客番号を設定
        CustomerCommon[] customerCommon = { customer, list };
        for (int i = 0; i < customerCommon.length; i++) {
            customerCommon[i].setCustomerNumber(1);
        }

        System.out.println("顧客番号");
        System.out.println(customer.getCustomerNumber());
        System.out.println(list.getCustomerNumber());
    }
}
顧客番号
1
1

 利用例では、顧客番号を表示しているだけですが、これはインタフェースの復習でもあります。

 パッケージは少しずつ理解してきましたか。
まだ、クラスが少ない事や1人でのプログラミングで利点が分かり辛いですが、勉強中でも見よう見まねで良い ので、積極的にパッケージを導入すると大規模なプロジェクトにも対応できる事でしょう。

2時間目 インポートで取り込むに戻る     4時間目 JARファイルで一括にに進む

単位11 パッケージの導入に戻る

トップページに戻る