はじめに
パッケージとは、クラス(.class) ファイルの集まりを示すものです。
パッケージを使用することで複数のクラス (.class) ファイルを分類し、管理することができます。
数多くクラスを作るとそのうちクラス名が重複することがあります。
その場合、クラス名は同名でもパッケージ名で区別することが可能です。
またこれにより、クラス (.class) ファイルは 「パッケージ名 +ファイル名」のように名前空間(Namespace) が与えられて、名前の一意性も高まります。
では実際に見ていきましょう!
Step1: 概念を知る
【サンプルイメージ】
Javaはその仕様上、 クラス (.class) ファイルを必ずどこかのパッケージに収める必要があります。
その為、パッケージを明示していない(いままでのような)クラス (.class) ファイルは「デフォルトパッケージ」という形で取り扱っています。
…少々お固いしイメージ湧き辛いですね。
崩してみていきましょう!
上記と重複する内容もありますが、Javaにおいては以下の概念が存在します!
- 名前空間(namespace)
- パッケージ (package)
名前空間(namespace)
「対象のものを指定した名称で確実に識別・特定するための概念」
コンピュータって人間には無いすごい能力を持ってますが、使う側が適切に命令してあげないと上手く機能してくれません。
例1)同じ部屋に佐藤さんが5人いたとして、、、
Aさんに向けて、「佐藤さん!」って呼びかけたとしても、みんなが振り向きます。
→フルネームで呼んであげる必要があります
例2) 「りんご取って!」って言われたときに、、、
- みずみずしい美味しそうなりんご
- 腐りかけて傷んでるりんご
- 赤くない青りんご
- 皮なしりんご
- カット済みうさぎさんりんご
のような感じで複数あった場合は、どれを取っていいか迷います。
→ 「どんな?」という形容詞的な、または、状態動詞的な詳細な情報が必要となります
パッケージ(package)
「名前空間の中にあるJavaクラスをまとめる仕組み」
【名前空間=パッケージ(package)】
上記例のように、同一のカテゴリのクラスを10だの100だの扱わなきゃいけないってなっても、
パッケージ名(名前空間)がしっかりと区別できていれば問題ありません!
【パッケージ名(名前空間)】
package りんご;
ファイル的な階層だと下記の感じ。
(「.(ピリオド or ドット)」で繋いでいきます
ディレクトリ構図で見るとこんな感じです。
って感じの例えをイメージしてもらった上で、 以下の内容を見ていきましょう!
Step2: 使い方を知る
パッケージの指定の方法
パッケージに含めるファイルでソースの先頭部分に書きます。
パッケージ内のクラスおよびインタフェースの呼び出し
補足
・インターフェース
簡潔に言えば、 処理の実装されていないメソッドを束ねるクラスのようなものです。
「処理の実装されていない」というのは、 { } (ブロック)内の処理が未実装ということです。
【サンプル】
定義の方法は以下のようになります。
※詳細はインターフェース・抽象クラス ポリモーフィズム で解説します。
例
precious/Worker.java
Step3: インポート
インポートとは、他のパッケージに記入されているクラスや関数を実行するための方法です。
プログラミングしているとき、よく他のクラスを利用してクラスのインスタンスを生成します。
使い方
【出力結果】
Step4: パッケージの作成
次は作り方になります。
まずは手順を提示していきますので、順に見ていきましょう!
作成手順
事前に適当なプロジェクトを作成しておきます。
今回はプロジェクト名を 「SamplePackage」 とします。
【1】 プロジェクト直下の srcよりメニューを開き、[新規]→[パッケージ] を選択
【1】 Eclipse TOPメニューからでもパッケージの作成は可能です
【2】パッケージ名を入力
【3】今回は「parent」とします。
【4】作成後は、このように白い小包のようなアイコンが表示されます。
これが基本の作成方法になります。
続いて、パッケージの直下にパッケージを作成していきます。
【5】「parent」の子要素を作成していきます。 パッケージ名は「child_1」とします。
【6】「親子」のようになりました。
【7】同様に、パッケージ名 「child_2 」 を作成します。
【8】1行の「. (ピリオド)」で繋がれていたものが、階層構造になりました。
ポイント
- パッケージはカテゴリ
一つひとつ意味のある命名にすることはマストですが、 大枠の考え方は「大分類>中分類>小分類」のような、ディレクトリを作成するイメージです! - 階層構造
1つの親に対し、2つ以上の子パッケージが存在する場合は、Eclipseが見た目上の構造を階層構造へ切り替えて表示してくれます。
プロジェクトのファイル (javaファイルなど)は、基本的にはパッケージ直下に作成して管理していきます。
グルーピングすることにより、作業効率とメンテナンス性の向上を図ります!
今後プロジェクトの作成時にはパッケージを作成してもらう機会も出てくるので今のうちにしっかりと作成方法も身に着けましょう!
練習問題
上記のパッケージ作成を元に実際に作ってみましょう。作成したものを【8】の画像と同じになるようにスクリーンショットを撮ってSlackで提出してください。
課題
Java中級からはEclipseでの課題対応となります。
2-9のフォルダの中にプロジェクトがありますので、インポートして以下の画像のように出力されるようにコーディングしなさい。
