先頭に戻る

7.オブジェクト指向とは

7-1 「オブジェクト指向とは?」

はじめに

本章では、オブジェクト指向についての解説をしていきます。現実の世界のモノともの同士の関係をそのままソフトウェアで表現することです。 次章の8章で学習する「クラス」はオブジェクト指向プログラミングを支える大切なものになります。 「クラス」の学習をする前にオブジェクト指向が何なのかを知っておきましょう。


オブジェクトとは

オブジェクト(object) という単語を辞書で調べると「(1)もの、(2)対象、(3)目的」の3つの意味があります。 下の絵を見てみて下さい。

このようにを取り巻くすべてのモノがオブジェクトと言えます。私自身もオブジェクト、もオブジェクト、学校もオブジェクトと言えます。 私の親私の通う学校というように現実の世界のモノ(=オブジェクト)とモノ同士のつながり(=関係)に着目し、 個々のオブジェクトに作業を割り振り、オブジェクト同士お互いに作業を依頼しながら機能するのがオブジェクト指向プログラミングです。

以上のことからオブジェクト指向は実世界からのイメージした自然な発想で考えることができます。以下の動画を見てみましょう。


オブジェクト指向で用いられる基本的用語

次に、オブジェクト指向で用いられる基本的用語について説明をします。

●カプセル化

オブジェクトは属性(データ)として固有の値を持ちます。「人」なら「名前、生年月日、年齢」「車」なら「メーカー、車種、ナンバー」など、 それぞれ具体的な属性値を持ちます。 また、オブジェクトにはそれぞれ仕事を任すことができます。下の絵を見てみて下さい。 Aさんの役職は「営業」です。営業職のAさんはお客様からの仕事を獲得するということが仕事のため、 受け付けた仕事のシステムの開発をしたり、デザインを考えたりということは行いません。 また、Bさんの役職は「エンジニア」のため、システム開発の仕事を行います。営業の仕事はエンジニアのBさんは行いません。


このように、オブジェクトは属性値仕事(機能)を持っています。仕事(機能)にはその仕事を遂行するという行動が伴います。 属性と仕事(機能)をセットに考える事をカプセル化といいます。 このカプセル化により、データとそれを操作する手続きを一体化して「オブジェクト」として定義し、 オブジェクト内の細かい仕様や構造を外部から隠蔽することができます。このことにより、プログラムの保守性が向上し、 プログラムを部分的に利用するといった、プログラムの再利用ができるようになります。

<<カプセル化(隠蔽)のメリット>>
社員のデータは一定ではなく、「昇給する」「辞める」「結婚して名前が変わる」などと変化し続ける。 オブジェクト指向では、オブジェクトのデータが時間の経過に伴って変化することをオブジェクトの状態が変化するという。 オブジェクトの状態を変化させるにはデータを直接書き換える方法がある。しかし欠点があり、 入力ミスによってオブジェクトの状態に矛盾が生じる可能性がある(給与の設定をミスするとか)。カプセル化をすることにより、、
・オブジェクト外部から,オブジェクト内部のデータに直接アクセスすることは好ましくな い。よってデータをオブジェクト内に隠蔽し、外部から直接アクセスできないようにする。
・外部にはメソッドの仕様だけを公開し、メソッド経由でデータにアクセスさせる。
・これにより単純な数値設定ミス等を防ぐ。

というメリットが生まれる。

●クラス

クラスとは同じ特性を持つオブジェクトをひとまとめにしたものです。クラスはオブジェクトの 特性を抽象化したものです。クラスは一般的に単語の頭文字は大文字、2文字以降は小文字の名詞で表します。 クラスは、その意味や属性、操作の差異に注目して分類することができます。 分類されたクラスを元のクラスのサブクラス元のクラスをスーパークラスと呼びます。下の絵を見てみて下さい。


「食べ物」クラスは「米」、「麺」、「パン」というサブクラスに分けられます。ちなみに、スーパークラスは「食べ物」です。


●インスタンス

クラスに属するオブジェクトをインスタンスと呼びます。詳しくは下の図のように表せます。


クラス「食べ物」のインスタンスはおにぎりやカレー、クラス「会社」のインスタンスは A社、B社となります。

●クラスとインスタンスの違い

クラスとインスタンスは似たような意味で使われることが多いですが、はっきりとした違いがあります。 下の図を見てみて下さい。


たこ焼きは、たこ焼き器により作られます。一度たこ焼き器を買っておけば、いつでもたこ焼きを焼くことができます。 しかし、たこ焼き器がなければたこ焼きを作ることはできません。ここでいう、たこ焼き器がクラスで、たこ焼きがインスタンスとなります。

今回たこ焼き器とたこ焼きに例えたように、クラス(たこ焼き器)が設計図で、その設計図どおりに作った製品がインスタンス(たこ焼き)となります。 たこ焼き器の設計図を書いただけではたこ焼きを作ることはできず、その設計図を元にたこ焼き器を作り、 できたたこ焼き器でたこ焼きを焼けば、たこ焼きを食べることができます。クラスとインスタンスの関係は 次章でも解説していきます。