スポンサードリンク
HOME > Java > パッケージとは?

Java - パッケージとは?

パッケージと言う機能は、複数人での開発となった場合に威力を発揮する機能です。

プログラムの規模が大きくなると、複数人での開発スタイルとなりますが、

その場合、同じクラス名を使うとエラーとなってしまいます。

それゆえに、クラス名が衝突しない様に、気を遣う事となります。

プログラマ自身が気をつけなければならないため、

独自の管理体制を持つ必要がありました。

このクラス名衝突問題の管理をJava言語の中に取り込んだのがパッケージです。


パッケージには、好きな名前をつける事ができ、

そのパッケージがフォルダ(ディレクトリ)機能を提供します。

1つのフォルダの中には同じ名前のファイルを格納できませんが、

異なるフォルダ間であれば、同じファイル名があっても大丈夫です。

これと同じように、1つのプログラムの中に同じクラス名があってはいけません。

しかし、異なるパッケージ間であれば、同じクラス名があっても大丈夫です。

と言う事です。

なんとなくイメージがつかめたでしょうか?

パッケージの使い方

パッケージは、フォルダ機能を提供していますが、

手作業でフォルダを作る必要があります。
(プログラム統合開発環境 Eclipse ではパッケージを作る機能があります。)

例えば pkg_hello と言うパッケージを作るとしたら、

パッケージ名と同じ pkg_hello と言うフォルダを作ります。

そして、その pkg_hello パッケージ内に Chelloクラスを記述したい場合、

pkg_helloフォルダ内に Chelloクラスを記述したソースファイルを格納します。

実際のコード例を書いてみます。

ファイル名:Chello.java
package pkg_hello;

public class Chello {
   void show() {
      System.out.println("Hello");
   }
}


先頭行でパッケージ指定しています。

この記述は、このファイルは pkg_helloパッケージに属しています。

と言う意味になります。

そして、もう1つ別のパッケージとそのパッケージ内のクラスも作ってみます。

ファイル名:Cmain.java
package pkg_main;

public class Cmain {
   public static void main(String[] args) {
      
pkg_hello.Chello obj = new pkg_hello.Chello();
      obj.show();
   }
}


こちらは、pkg_mainパッケージに属するCmainクラスです。

このpkg_mainパッケージ内から別のパッケージ内のクラスを指定するには、

 パッケージ名.クラス名 と指定する必要があります。

また、パッケージ間でクラスを使う場合は、

クラス修飾子としてpublicを指定しなければなりません。

何も指定しない場合は、別パッケージからそのクラスを使えません。(アクセス不可)

同じパッケージ内に限りアクセスできます。

この2つのパッケージを用いたプログラムフォルダ構成図は以下のようになります。

 pkg_hello(フォルダ)
   └Chello.java(ソースファイル)

 pkg_main(フォルダ)
   └Cmain.java(ソースファイル)


Javaには以下のようなルールがあるため、上記のような構成にしてあります。

・1つのファイルには、1つのpublic指定クラスしか記述できない。

public指定されたクラスがあるファイルのファイル名は、
 "public指定したクラス名.java" と、しなければならない。

public指定されていないクラスが記述されたファイルのファイル名は

自由に決めてOKです。しかし、クラス名をファイル名とすると分かりやすくなります。

1ファイルに1クラスの記述をするようにするとキレイな構成になります。


パッケージのネスト

パッケージ内にパッケージを作る事もできます。

これは、フォルダ内にフォルダを作る。と言う意味と同じです。

もちろん、それぞれのパッケージ内のクラスは別モノとして扱われます。

使用例

パッケージ(フォルダ)構成図
 pkg_A(フォルダ)
  └pkg_B(フォルダ)
    └Chello.java(ソースファイル)

 pkg_main(フォルダ)
   └Cmain.java(ソースファイル)


ファイル名:Chello.java
package pkg_A.pkg_B;

public class Chello {
   void show() {
      System.out.println("Hello");
   }
}


ファイル名:Cmain.java
package pkg_main;

public class Cmain {
   public static void main(String[] args) {
      
pkg_A.pkg_B.Chello obj = new pkg_A.pkg_B.Chello();
      obj.show();
   }
}


このプログラムは、パッケージ pkg_A の中にパッケージ pkg_B を入れた例です。

パッケージが1階層の時と同じようにドットを使って

パッケージ名.パッケージ名.クラス名 のように指定します


パッケージの活用例

パッケージ機能の活用例としては、

佐藤君、鈴木君、田中君の3人で1つのアプリケーション開発しているとしたら、

それぞれに固有のパッケージを担当させる。

例えば、佐藤君が作る全てプログラムは、パッケージ:satou内で作るものとする。

以下、鈴木君と田中君も同じようにすれば、

それぞれが作ったプログラムを合わせた時に、

クラス名の衝突がない事がパッケージ機能によって保証されているので、

そのような事を気をする必要がなくなります。



スポンサードリンク







HOME

言語解説編
プログラミング用語・知識

C言語

C++言語

Java

C#

Visual Basic.NET

アプリケーション編
C言語による
コンソールプログラミング




Copyright (C) プログラミングランド All Rights Reserved