Java パッケージ概要
2008/10/03 23:58Update
サンプルからJavaパッケージの定義方法、利用方法、役割、及びパッケージの設計原則について学びます。
サンプルから見てみます。
IHelloWorld.java
HelloWorld.java
上のサンプルで示したように、IHelloWorldインタフェースやHelloWorldクラス定義の中に、packageというキーワードが使われています。
Java言語では、「package + 名前空間」 形式の「Javaパッケージ」と呼ばれるもので Javaクラスやインタフェースをまとめる役割を果たすことができます。
通常、類似した機能を提供する、関連性のあるクラスやインタフェース同士などをまとめて一つのパッケージにすることが多いとされます。
パッケージ名は機能に合わせて適切な名前を付けることが望ましい。また、広く配布する予定がある場合、ユニックな名前空間を設けたほうがよいと思われます。
そのため、「com」+「.」+「会社名を表すもの」+「.」+「プロジェクト名」+「.」+「機能名」 のような命名規則が多く見られます。
「.」はパッケージの階層を表しています。つまり、Javaパッケージは、階層構造になっています。
例えば:
com.yourcompany.yourproject.somefunction
jp.co.yourcompany.yourproject.somefunction
com.sun.java
org.apache.myfaces
Javaパッケージ階層とフォルダ階層を合わせる必要があります。
例えば、
パッケージ名は com.hello で com.hello.HelloWorld クラスの場合、
HelloWorld.classファイルを配置する場合は、以下のようなフォルダ階層にしなければなりません。
com\hello\HelloWorld.class
配置先の場所にどこでもかまいません。
c:\test\に配置する場合、
c:\test\com\hello\HelloWorld.class
パッケージにあるクラスやインタフェースなどが外部クラスに利用される場合、import文でパッケージからインポートする必要があります。
■方法1
パッケージ中にあるすべてのクラスやインタフェースなどをインポートする場合、次のような構文で行います。
■方法2
パッケージ中にある特定なクラスやインタフェースなどをインポートする場合、次のような構文で行います。
◇ クラス名の衝突を避ける。それぞれのパッケージに同名クラスがあっても衝突しません。
◇ 機能のカプセル化。類似した機能を同じパッケージに集めることで、機能がカプセル化されます。
◇ カプセル化による情報隠蔽。privateキーワードで修飾されたクラスは外部からのアクセスが禁止されているため、情報隠蔽を実現できます。
◇ クラスの階層化管理。
パッケージ設計の原則
IHelloWorld.javapackage com.hello; //パッケージ定義
/**
* HelloWorld interface
*/
public interface IHelloWorld {
/**
* Print Hello World.
*/
public void printHello();
}
HelloWorld.javapackage com.hello; //パッケージ定義
/**
* HelloWorld class
*/
public class HelloWorld implements IHelloWorld {
/**
* @param args Arguments
*/
public static void main(String []args) {
IHelloWorld helloWorld = new HelloWorld();
helloWorld.printHello();
}
/**
* @see com.test.IHelloWorld#printHello()
*/
public void printHello() {
System.out.println("Hello world!");
}
}
上のサンプルで示したように、IHelloWorldインタフェースやHelloWorldクラス定義の中に、packageというキーワードが使われています。
package com.hello;
Java言語では、「package + 名前空間」 形式の「Javaパッケージ」と呼ばれるもので Javaクラスやインタフェースをまとめる役割を果たすことができます。
通常、類似した機能を提供する、関連性のあるクラスやインタフェース同士などをまとめて一つのパッケージにすることが多いとされます。
パッケージの定義
package パッケージ名;
パッケージ名は機能に合わせて適切な名前を付けることが望ましい。また、広く配布する予定がある場合、ユニックな名前空間を設けたほうがよいと思われます。
そのため、「com」+「.」+「会社名を表すもの」+「.」+「プロジェクト名」+「.」+「機能名」 のような命名規則が多く見られます。
「.」はパッケージの階層を表しています。つまり、Javaパッケージは、階層構造になっています。
例えば:
com.yourcompany.yourproject.somefunction
jp.co.yourcompany.yourproject.somefunction
com.sun.java
org.apache.myfaces
パッケージとファイルシステムのフォルダ階層
Javaパッケージ階層とフォルダ階層を合わせる必要があります。
例えば、
パッケージ名は com.hello で com.hello.HelloWorld クラスの場合、
HelloWorld.classファイルを配置する場合は、以下のようなフォルダ階層にしなければなりません。
com\hello\HelloWorld.class
配置先の場所にどこでもかまいません。
c:\test\に配置する場合、
c:\test\com\hello\HelloWorld.class
Javaパッケージの利用方法
パッケージにあるクラスやインタフェースなどが外部クラスに利用される場合、import文でパッケージからインポートする必要があります。
■方法1
パッケージ中にあるすべてのクラスやインタフェースなどをインポートする場合、次のような構文で行います。
import com.hello.*;
■方法2
パッケージ中にある特定なクラスやインタフェースなどをインポートする場合、次のような構文で行います。
import com.hello.HelloWorld;
Javaパッケージの役割
◇ クラス名の衝突を避ける。それぞれのパッケージに同名クラスがあっても衝突しません。
◇ 機能のカプセル化。類似した機能を同じパッケージに集めることで、機能がカプセル化されます。
◇ カプセル化による情報隠蔽。privateキーワードで修飾されたクラスは外部からのアクセスが禁止されているため、情報隠蔽を実現できます。
◇ クラスの階層化管理。
参考資料
パッケージ設計の原則
Sponsored Link
Comments
- Relative Articles
- Java開発及び実行環境の構築 | Linux篇 - (2008/08/31 20:34)
- Java開発及び実行環境の構築 | Windows篇 - (2008/08/31 21:18)
- 5分でJava Hello World! - (2008/08/31 22:13)
- Java言語の制御構文 - 条件分岐if/else/else if - (2008/10/01 21:30)
- Java言語の繰り返し制御構文 - for文 - (2008/10/03 18:22)
- Java言語の繰り返し制御構文 - do ... while文 - (2008/10/03 21:23)
- Java言語の繰り返し制御構文 - while文 - (2008/10/03 21:32)
- Java言語の基礎 - javacコマンドによるコンパイル - (2008/10/10 17:58)
- Java アクセス修飾子概要 - (2008/10/29 18:31)
- Javaアノテーション機能 概要 - (2009/02/12 13:06)