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

1時間目 パッケージ主義

11−1−1.クラスとパッケージの仕組みの前に

 本Webでは、1つのファイルに複数のクラスを定義してきました。
ただ、本来はJava主義とまではいなくてもどちらかと言えば慣例でしょうか、1つのファイルに1クラスや1イン タフェースを定義します。
つまり、クラスが10個定義されていれば10個のJavaファイルに分けて記述します。
今までに、コンパイルしてclassが作成されましたが、それはファイルの数ではなく、classごとに作成されてい る事からも分かりますね。

 では、サンプルプログラム(Goods.javaとSample11_1_1.java)で復習しましょう。
Goods.java
// 商品
public class Goods {

    // 商品名
    private String  name;
    // 値段
    private int     price;

    // 商品名を返す
    public String getName() {

        return name;
    }

    // 商品名を設定
    public void setName(final String name) {

        this.name = name;
    }

    // 値段を返す
    public int getPrice() {

        return price;
    }

    // 値段を設定
    public void setPrice(final int price) {

        this.price = price;
    }

}

Sample11_1_1.java
// 単位11 1時間目 サンプル1
public class Sample11_1_1 {

    // ここからスタート
    public static void main(final String[] args) {

        final Goods goods = new Goods();
        goods.setName("鉛筆");
        goods.setPrice(100);
        
        System.out.println("商品名:" + goods.getName());
        System.out.println("値段:" + goods.getPrice());

    }

}
商品名:鉛筆
値段:100

 では、これとパッケージがどう関係があるかというと、パッケージとは、関連するクラスをまとめるのに使わ れます。
又、作成者ごとにパッケージを分けクラス名が衝突しないようにします。

11−1−2.パッケージで分ける。パッケージ主義とは

 パッケージは、宣言することによりそのパッケージにクラスが所属します。
パッケージは、クラス単位ではなくファイル単位で指定します。

パッケージの構文です。
package パッケージ名;

識別子 class クラス名 {
    :
    :
}

 パッケージは、必ず、プログラムとしての先頭の行に指定し、2つ以上指定することはできません。(プログ ラム規則)。
プログラムとしての先頭の行とは、コメントや改行以外のことでコメントや開業はパッケージより前に記述して も構いません。

 パッケージを指定した場合、クラスは「パッケージ名.クラス名」扱いになります。
よって、パッケージ名が違わなければ同じクラス名が複数あっても構いません。

 この事によりパッケージ名が違う事により、同じクラス名の衝突を避けます。
特に、大規模なプログラムではそれぞれがプログラムを開発する為、同じクラス名になる事の確率が高いからで す。
先程説明したようにパッケージに作成者(例えば会社名又は組織名)を指定すると、他の作成者に気にすること なくクラスを作成できます。
この考えがパッケージ主義です。
又、パッケージはすべて小文字で書くのはJava主義です。

11−1−3.アクセス方法

次のサンプルプログラムでは、パッケージを導入したクラスのアクセス方法を学びます。
CPU.java
// パソコンのパッケージ

package pc;

// CPU
public class CPU {

    // CPU名
    private String  name;

    // 周波数
    private String  frequency;

    // 周波数を返す
    public String getFrequency() {

        return frequency;
    }

    // 周波数を設定
    public void setFrequency(final String frequency) {

        this.frequency = frequency;
    }

    // CPU名を返す
    public String getName() {

        return name;
    }

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

        this.name = name;
    }
}

Sample11_1_2.java
// パソコンのパッケージ

package pc;

// 単位11 1時間目 サンプル2
public class Sample11_1_2 {

    // ここからスタート
    public static void main(final String[] args) {

        final CPU cpu = new CPU();
        cpu.setName("abc_123");
        cpu.setFrequency("100M");

        System.out.println("CPU名:" + cpu.getName());
        System.out.println("周波数:" + cpu.getFrequency() + "Hz");

    }

}
CPU名:abc_123
周波数:100MHz

 パッケージを採用した場合は、クラス名ではなくパッケージから指定する必要があります。
現在、「first_java」フォルダにいるとします。
次のように、ファイルを作成するとします。
\---pc
        CPU.java
        Sample11_1_2.java

 コンパイル方法
javac pc\Sample11_1_2.java  実行方法
java pc.Sample11_1_2
 正しく出力されたでしょうか?
最初は、パッケージを導入する事が面倒臭いと思うかもしれませんが、今のうちに慣れておくとプログラムの管 理ができるようになりますよ。
単位10 抽象クラス及びインタフェースに戻る     2時間目 インポートで取り込むに進む

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

トップページに戻る