第7章 ファイル分割について
7.1 ファイル分割について
機能を追加していくとプログラムはどんどん大規模になっていきます。その際複数のプログラマーで作業を分担するのが当然になります。このとき、これまでのように複数のクラスを同じファイルに記述しているととても不便になります。そこでこの章では最初に複数のクラスで構成されているJavaファイルを、1つのクラス単位でファイル分割する方法について学習します。
7.1.1 これまでのクラス記述とファイル分割したクラスの違い
これまでは学習してきた内容は1つのjavaファイル内に複数のクラスを記述していましたが、そのような書き方は行わず「1つのjavaファイルに対して、1つのクラスを記述」する方法でファイル分割を行います。
その違いを以下の図に簡単に示します。
図 7.1.1:ファイル分割
図のようにファイルを分割すれば、1つのクラスの規模が大きくなっても複数のクラスが混在しているファイルより管理や修正が容易になります。これにより大規模になってくるプログラムを複数のプログラマーで分担していくこともできるようになります。多くのクラスを扱う大規模なプログラムを作成する場合には、ファイルを分割することが不可欠になります。
ポイント
- 基本的には複数のクラスを1つのjavaファイルにまとめて記述するのではなく、分割して記述することが望ましい。
ではファイル分割したプログラムを次項より紹介していきます。
7.1.2 ファイル分割したプログラム
1つのjavaファイルに複数定義したクラスを分割しても、そのクラスにアクセスできることを確認します。
① ソース・フォルダー: myproj_basic/src
② パッケージ: jp.co.f1.basic.ch07
③ 名前: Computer1
① ソース・フォルダー: myproj_basic/src
② パッケージ: jp.co.f1.basic.ch07
③ 名前: TwoJavaFile
④ 作成するメソッド・スタブの選択:public static void main(String[] args) にチェックを入れる
上記で示したソースコードの左側はこれまでの学習でよく目にしてきた形の、ファイル分割を行わないクラスの記述方法です。そしてその右側で示している2つのソースコードが、左側のTwoJavaFile.javaに記述された2つのクラスを、各々のクラス名のファイルとして分割したソースコード「Computer1.java」と「TwoJavaFile.java」になります。
実行結果
mainメソッドがあるTwoJavaFile.javaを実行します。
解説
ファイルが分割されてもTwoJavaFileクラスからComputer1クラスへアクセスできます。実行結果から分かるように問題なくオブジェクト生成されshow()メソッドが呼び出せています。
ファイル分割をしてもTwoJavaFileクラスからComputer1クラスへアクセスできるのは、3章「アクセス修飾子とカプセル化」で学習したアクセス修飾子と、これまで詳しく触れて来なかったクラスの1行目に記述されているパッケージ名が深く関わっています。
package jp.co.f1.basic.ch07;
このパッケージがクラスに記述されていると、ファイル分割を行ってもアクセスが可能になり、これまでのようにオブジェクト生成が行えます。このパッケージの仕組みについては次の節で詳しく説明を行います。
図 7.1.2: ファイル分割クラスのアクセス
これからはこの項で学習したファイル分割方法でプログラムを紹介していきますので、ファイル分割の仕組みを覚えておいてください。