|
パッケージは既にいたるところで出現していますね。java.lang.Object、java.util.Vectorなどでいわれるがままかもしれませんが、パッケージを利用しています。ちなみに、ObjectやVectorの場合は
java.lang.Object → java.langパッケージのObjectクラス
java.util.Vector → java.utilパッケージのVectorクラス
と解釈されます。なぜパッケージなしのVectorやObjectではいけないのでしょうか?なぜわざわざパッケージをいくつも作るのでしょうか。それには下記のように理由があります。
- 用途や特定の約束事により、クラスを区分けすることができる。
- あるクラスを特定するのがクラス名だけではクラス名の衝突が起こるため、パッケージを利用することにより衝突を避ける。
- パッケージはアクセス制御の単位として利用できる。
1の場合は単純に便利だからです。役割や所属の違うファイルを同じ場所に一箇所に集めておくと整理ができず不便ですね?それと同じです。2の場合を考えてみましょう、例えば2つの組織(A、B)が共同してソフトを開発したとします。そして偶然にもAもBも顧客名や職員名の一覧を扱う「NameList」というクラスを作ったとしましょう。もしパッケージがなければ、AのNameListもBのNameListも名前がいっしょなので区別がつきません。そのようなときにパッケージがあれば双方の「NameList」クラスを下記のように区別して利用できます。
|
例:同名クラスのパッケージによる区別
|
| |
|
|
| 組織Aの「NameList」クラス |
→
|
jp.co.A.comm.NameList |
| 組織Bの「NameList」クラス |
→
|
jp.co.B.common.NameList |
|
また、各パッケージを役割や機能ごとに作れば役割に応じて外部のクラスからアクセスできるかどうか、メソッドを呼び出せるかなどを制御することができます。
簡単にいうとパッケージとは住所のようなものです。事実どこの組織も自社のパッケージを命名する時には組織のインターネットドメイン名を利用します。例えばウインワンズウエイ株式会社の作ったクラスであれば必ず「jp.co.wownet」パッケージ以下に属しています。当然アプリケーションや、機能によって下記のようにさらに細かくパッケージ分けされます。
jp.co.wownet.「アプリケーション名」.「機能名」.「クラス名」
自分のクラスのパッケージ宣言はソースコードの一番先頭にpackage句を用いて記述します。そして自クラスと異なるパッケージに属したクラスをコードの中で利用するためには、クラスの宣言文の前にimport句を用いてどのパッケージ、クラスを利用するかを宣言する必要があります。
|
例:jp.co.wownet.education.Sample01クラスの宣言部分
|
| |
|
|
| |
//自分の属しているパッケージの宣言
package jp.co.wownet.education;
//Vectorクラスをインポート
import java.util.Vector;
//java.ioパッケージに属するもの全てをインポート
import java.io.*;
//通常のクラス宣言(以下省略)
public class Sample01 { ・・・・・・・
|
|
| |
|
|
|
実際に自分でパッケージを作り利用する場合には、もう一つ注意する点があります。Javaにおけるパッケージとはそのままディレクトリの階層と同一だと考えてください。例えばjp.co.wownet.education.Sample01クラスの場合は、下図のようにjpディレクトリの下のcoの下のwownetの下のeducationの下にあるSample01.javaがソースファイルで、同じくjpの下のcoの下のwownetの下のeducationの下にあるSample01.classがクラスファイルだと言うことです。
|
図:jp.co.wownet.education.Sample01クラスの配置場所の例
|
|
|
このときコンパイルを正常に行うためには、jpディレクトリが存在する場所(上図ならc:\javastudy\packagesampleディレクトリ)で下記のようにjavacを発行します。
javac -classpath
. jp\co\wownet\education\Sample01.java
また、実行時には同じ場所で以下のようにjavaコマンドを発行します。
java -classpath
. jp.co.wownet.education.Sample01
パッケージの意味と利用法は大まかに以上となります。Javaにおいて見通しの良いプログラミングを行うためには、パッケージの利用がポイントになってきますのでよく理解しておいてください。
|