オブジェクト指向の書き方

ここではオブジェクト指向の書き方をお伝えしていきます。2020年現在、オブジェクト指向の書き方が一般的です。
そもそもオブジェクト指向とはなんぞや、という感じですね。

オブジェクト指向の概念

そもそもオブジェクト指向の定義は以下になります。(参照:IT用語辞典
オブジェクト指向とは、コンピュータプログラムの設計や実装についての考え方の一つで、互いに密接に関連するデータと手続き(処理手順)をオブジェクト(object)と呼ばれる一つのまとまりとして定義し、様々なオブジェクトを組み合わせて関連性や相互作用を記述していくことによりシステム全体を構築していく手法。

要は、オブジェクト指向は以下の手順で行います。
  • オブジェクト指向は機能や分野ごとにクラスを作成する
  • 作成したクラスのオブジェクトをインスタンス化する
  • そのインスタンス化したオブジェクトのメソッドや変数を使う
  • それらを必要に応じてオブジェクトをインスタンス化して使い分ける

オブジェクト指向のたとえ

オブジェクト指向は、人間の身体に例えると以下のようになります。
プログラム 飲食店 役割の概要
クラス 各ポジション(厨房、ホールなど) 構成要素
メンバ変数 様々(厨房なら材料、メニューなら料理の値段など) クラスの設定値
メソッド 各ポジションの仕事内容 クラスの処理

オブジェクト指向のメリット

最近ではオブジェクト指向は一般的になりました。オブジェクト指向は以下のようなメリットがあります。
  • 可読性
  • 役割を表すクラスごとにプログラムのファイルを分けることでプログラムが読みやすくなる。
  • 再利用
  • 似たところでプログラムを使いまわすことでプログラムの全体量が減り、開発の手間も省ける。

オブジェクト指向の特徴

継承

特定のクラスを継承することで、その継承元のクラスで定義した定数やメソッドなどを使用することができます。

カプセル化

クラスを外部から見えないようにすること。そして、必要最低限の部分のみ外部から見えるようにすること。
こうすることで、複雑な処理を考えずに、必要な機能を使うことができます。
例えるなら、スマホ。内部の構造も詳しくわからず、どの部品がどう働いてネットにアクセスできるなど、専門家しか知りません。ですが、世界中の人が使いこなせています。それは、スマホの内部がカプセル化され、必要最低限の部分がわかるだけで全体を使いこなせるように設計されているからです。

ポリモーフィズム

一つのインターフェースで異なる処理を実装することです。オーバーライドを参照。

実例

以下は、Sampleクラス内でTest1クラスをインスタンス化してhomework1メソッドを呼び出しています。
(今回はあまり実用性のない例ですが、今後よりわかりやすい例で修正予定)
import homeWork.Test1;

public class Sample {
	
	public static void main(String[] args) {
		Test1 test1 = new Test1();
		test1.homework1();
	}
	
	static void ifSentence() {
		int testPoint = 80;
		
		if (testPoint > 80) {
			System.out.println("あなたは合格しました。");
		} else {
			System.out.println("不合格です。");
		}
	}
}
package homeWork;

public class Test1 {
	public void homework1() {
		int x = 10;
		System.out.println("homework1問1");
		System.out.println("x = " + x);
	}
}