【Java初心者】クラス/ソースファイルを分割利用する方法とメリット

この記事では、ソースコードを複数のクラス/ソースファイルに分割する方法と、
それを呼び出す方法について、図や実際のコードを用いて説明していきます!

併せて、クラスを分割して利用することによるメリットも説明していきます。

クラスとソースファイル

クラスとは、「命令文や条件分が入っているメソッド」を
複数入れることができる大きな入れ物です!

ソースファイルは、クラス、メソッド、命令文を記述している
クラス名.java」ファイルのことを示します。

Javaには、クラスとソースファイルについて大事なルールが存在しています。

それは、1つのソースファイルにつき1つのクラスファイル
しなければならないという決まりです。
つまり、クラス分割=ソースファイルの分割ということになります。

1つのクラスの中にいくつも記述することのできるメソッドとは違い、
クラスを分割した数だけソースファイルの数も増えていくと覚えてください。

メソッドについて詳しく知りたい方は併せて以下の記事も読んでみてください!

【Java初心者】メソッドの使い方と利点

クラスを分割するメリット

クラスは、メソッドと同じように複数に分割して利用することができます。
分割基準についても、メソッドと同様に機能ごとに分割するといいでしょう!

イメージとしては、以下のように
いくつか似たような処理を行っているメソッドを1つのクラスにまとめるような感じです。

クラス分割のイメージ

クラスを機能ごとに分割することで、1人で開発する際にも
複数人で開発する際にもいくつもメリットがあります。

複数人開発では開発作業を分担できる!

クラスを機能ごとに分割した場合、ソースファイルごとに機能を分割することになります。

そのため、それぞれの機能を別の人が担当すれば、同時に開発が進むため、
複数の機能をもったプログラムもあっという間に完成します。

例えば、電卓のプログラムを1つのクラスで開発しようとすると、
以下の機能を上から順に作っていくことになると思います。

  • 入力を受け付ける機能
  • 画面に出力する機能
  • 計算する機能

しかし、複数クラスであればそれぞれを同時進行で進められるため、
単純に考えてしまえば開発にかかる時間が3分の1になり、
飛躍的に開発効率が上がります!

作業を分担

ただ、クラスごとに開発を分担する際には、連携しながら進めないと、
必要な引数の数が違う」「戻り値の型が違う」など
想定外の食い違いによって手戻りが発生する可能性もありますので
十分注意してください!

クラス名だけで何をしているかわかる!

メソッドを分割することのメリットとしても挙げた点ですが、
クラスを分割することによる大きなメリットとして、
クラス名を見ただけで中でどんな処理をしているのか大まかにわかるという点です。

Javaでは、クラス名はソースファイル名と等しいため、
ファイルをわざわざ開かなくてもファイル名を見ただけで処理の内容がわかります!

そのため、特定の機能のメンテナンスや機能追加などを行いたい場合に、
さっと目的地にたどり着くことができるため、メンテナンスもしやすいです!

クラスを分割する方法

実際にクラスを分割してそれぞれの機能ごとにメソッドを分けて
利用する方法について解説していきます。

今回は、もともと以下の1つのソースファイルに記載していたコードを
複数ファイルに分割する形で説明していきます!

public class Sample1 {                                     ⇦クラス名

	public static void main(String[] args) {
		int a = 1;
		int b = 2;
		int plusResult = 0;
		int minusResult = 0;
		plusResult = plus(a,b);
		minusResult = minus(a,b);
		System.out.println(plusResult);
		System.out.println(minusResult);
	}
	public static int plus(int a,int b) {
		int c = 0;
		c = a + b;
		return c;
	}
	public static int minus(int a,int b) {
		int d = 0;
		d = a - b;
		return d;
	}
}

この1つのソースコードから計算機能である[plus]メソッドと
[minus]メソッドを抜き出して、1つのクラスを作成します。

mainメソッドからは[plus][minus]を呼び出しており、
この2つのメソッドは計算の仕組みであるため、
今回は[Calculation][CalculationLogic]の2つのクラスに分けます。

メソッドの呼び出し方については、
下の項の[他のクラス内メソッドを呼び出す]にて説明いたします。

public class Calculation {

	public static void main(String[] args) {
		int a = 1;
		int b = 2;
		int plusResult = 0;
		int minusResult = 0;
		plusResult = CalculationLogic.plus(a,b);
		minusResult = CalculationLogic.minus(a,b);
		System.out.println(plusResult);
		System.out.println(minusResult);
	}

}

ご覧いただいたいている通り、
機能ごとのクラス名をつけて中のソースコードを分けただけで完成です。

public class CalculationLogic {

	public static int plus(int a,int b) {
		int c = 0;
		c = a + b;
		return c;
	}
	public static int minus(int a,int b) {
		int d = 0;
		d = a - b;
		return d;
	}
}

他のクラス内メソッドを呼び出す

他のクラス内にあるメソッドを呼び出して利用する方法について説明していきます!

すでに前の項のソースコード内に登場していますが、
同じクラス内の時のメソッド呼び出し文の前にクラス名をつけるだけです!

他クラスメソッドの呼び出し方

違うクラスのメソッドを呼ぶというのは、難しく考える必要はありません。

例えば、「パトリオット屋という会社に勤務する坂田 銀時
という人物がいたとします。

彼を同じ会社に勤める人(同一クラス内)が呼ぶ場合には、
名前を呼ぶだけで彼であることを特定できます。

しかし別の会社に勤務する人(違うクラス)が彼を呼ぶ場合には、
会社名や役職をつけなければどこの会社に属している
坂田銀時」であるかを特定できませんよね?

別のクラスのメソッドを呼び出す際には、
メソッドの肩書きであるクラス名をつけて丁寧な呼び方をする必要がある
と覚えておいてください!

メソッド名の前にクラス名

実際のコードでは以下のように記載し、戻り値がある場合は、
同一クラス内のメソッドを呼び出すときと全く同様に変数で受け取ります

               int plusResult = 0;
		int minusResult = 0;
		plusResult = CalculationLogic.plus(a,b);
		minusResult = CalculationLogic.minus(a,b);

メソッドの分割について知りたいという方はぜひ以下の記事にも目を通してみてください!

【Java初心者】メソッドの使い方と利点

まとめ

ここまで、Javaでクラスを分割する方法とメソッドについて説明してきました。

クラスを分割することは、ソースファイルを分割することだということや、
クラスを分割することで機能ごとにメンテナンスを行いやすくなるということも
ご理解いただけたかと思います。

クラスを分割することは非常に便利ですが、細かく分割しすぎると
ソースファイルが増えすぎて逆に扱いづらくなってしまったり、
似たような機能を無駄に増やしてしまうなどの落とし穴もありますので
注意してうまくクラスを使い分けてみてください!

他にもJavaの基本について解説しておりますのでぜひ、他の記事もご覧ください。