![]() ![]() ![]() ![]() |
オブジェクト指向のプログラミング概念(入門書) |
実世界では、同じ種類の多くのオブジェクトが存在する。 例えば、あなたの自転車は世界中の多くの自転車の1つである。 オブジェクト指向の技術用語を使 用すると、あなたの自転車オブジェクトは自転車として知られているオブジェクトのクラスのインスタンスであると言う。 すべての自転車は共通に状態(現在のギア、現在のペダルをこぐ速度、2つの車輪)と振る舞い(ギアの変更、 ブレーキ)を持つ。 しかし、それぞれの自転車の状態は独立していて、他の自転車とは異なる。自転車を製造する時、メーカは自転車が特徴を共有するという事実を利用して、同じ設計図から自転車を大量に製造する。生産する自転車ごとに設計図を作るのは、非効率的である。
オブジェクト指向のソフトウェアでも、矩形、社員記録、ビデオクリップなどのような特徴を共有する同じ種類の多くのオブジェクトを持つことが可能である。 自転車メーカのように、同じ種類 のオブジェクトが類似しているという事実を利用して、これらのオブジェクトの設計図を作成することができる。 オブジェクトのソフトウェアの設計図は、クラスと呼ばれる。
定義: クラスは、ある種のオブジェクト全てに共通する変数とメソッドを定義したテンプレートまたはプロトタイプである。
例えば、現在のギア、現在のペダルをこぐ速度などを含むいくつかの変数を宣言する自転車クラスを作成することができる。 乗り手がギアを変更したり、ブレーキをかけたり、ペダルをこぐ速度を変更するメソッドの宣言と実装も含む。
変数の値は、クラスの各インスタンスによって提供される。 自転車クラスを作成した後、そのクラスを使用する前に、インスタンス化(インスタンスを作成する)しなければならない。 クラスのインスタンスを作成する時、クラスで宣言されている変数がメモリ上に 割り当てられる。 これで変数に値を割り当てるためにインスタンスのメソッドを使用することができる。同じクラスのインスタンスはメソッドの実装を共有する。
"Object ”という用語
オブジェクトとクラスの図は、互いによく似ていることに気づいたであろう。 実際に、クラスとオブジェクトの 違いは、しばしば混乱の原因になる。現実世界では、自転車の設計図が自転車ではないようにクラスはそのクラスが記述しているオブジェクトそのものではないことは明らかである。 しかし、ソフトウェアでクラスとオブジェクトを区別することは少し難しい。 これはある意味では 、ソフトウェアオブジェクトが現実世界のオブジェクトの電子モデルかまたは抽象的な概念に過ぎないためである。 しかし、多くの人が矛盾して「オブジェクト」という用語を使用したり、クラスとイン スタンスの両方を示すものとして使用してるからでもある。上の図において、クラスのメソッドと変数は、まだ存在していないので、色付けされていない。 メソッドを呼び出したり、 変数に値を入れる前に、クラスからインスタンスを作成しなければならない。図を比較してみると、オブジェクトが実際に存在し、使用可能であることを表すために、オブジェクトのメソッドと変数が色付けされている。 オブジェクトにメッセージを送信すると、そのオブジェクトはメソッドを実行 したり変数の値を変更したりして応答する。
クラスの利益
オブジェクトはモジュール性と情報隠蔽という利益を提供する。 クラスは再使用できるという利益を提供する。 自転車メーカはたくさんの自転車を製造するために、繰 り返し同じ設計図を利用する。 ソフトウェアプログラマは多くのオブジェクトを作成するために、繰り返し同じクラスを使用する。
![]() ![]() ![]() ![]() |
オブジェクト指向のプログラミング概念(入門書) |