Javaオブジェクト指向プログラミング(1) - クラスとインスタンス

プログラミング、サーバー、ネットワーク、IT用語、ハマったときのトラブルシューティングなど様々なIT関連の話題をひたすら書いていく技術ブログです。

2017年2月12日日曜日

Javaオブジェクト指向プログラミング(1) - クラスとインスタンス


このシリーズではJavaでオブジェクト指向プログラミングの考え方を簡単なサンプルプログラムを使って勉強していこうと思います。

クラスを定義してオブジェクトを作り出す

Javaでは、クラスを定義して、オブジェクトを作り出します。そのオブジェクトを直接作り出したり、定義したりすることはできません。そもそもクラスとオブジェクトは何が違うのでしょうか?

クラス・・オブジェクトを作り出す設計図のようなもの
オブジェクト・・設計されたクラスから生み出されるもので、プログラム上で実際に動作するもの。インスタンス(instance)とも呼ばれます。ここからなるべくインスタンスと呼びます。

プラモデルを思い描くと分かりやすいかもしれません。プラモデルを買ってきて箱を開けると、関連部品ごとにまとまっている状態になっていると思います。ただし、まとまっているだけで、まだ組み立てられた状態ではありません。プログラムに当てはめるとその状態がクラスです。そして部品を組み立てて、実際に使える状態にする組み立てプロセスことをプログラムに当てはまるとインスタンス化(new)、プラモデルができたら、そのプラモデルがインスタンスです。

なぜクラスからオブジェクトを作り出すのか?

Javaではオブジェクト/インスタンスを定義することはできません。定義できるのはクラスだけです。面倒ですね。なぜこんなプロセスがあるのでしょうか?いろいろあると思いますが、1つ大きな理由として考えられるのは、現実世界では同じオブジェクトを大量に作る必要があるからです。

例えば会員登録するプログラムがあったとします。会員登録には名前、住所、電話番号、メールアドレス...といった情報があり、ほぼどの会員も同じような情報が必要です。この場合、オブジェクト(インスタンス)を会員ごとに作成していては仕事が終わりません。それを設計図や型であるクラスに定義しておけば、インスタンス化するだけで、必要なだけ簡単にオブジェクトを生み出すことができます。

Javaプログラムを動かすクラス

上記で説明したようにインスタンスを作り出すクラスは必要なのですが、それだけではプログラムは動きません。オブジェクト指向プログラミングに限ったことではないですが、クラスをインスタンス化して使える状態にする呼び出し側のプログラムが必要です。原理的には、インスタンスを生み出すクラスに指示するためのプログラムを書くこともできますが、プログラムの可読性がなくなってしまうため、あまりオススメしません。

◯「Javaオブジェクト指向プログラミング(2) - クラスの定義」はこちら
◯「Javaオブジェクト指向プログラミング」シリーズの記事一覧はこちら



最近の投稿