オブジェクト指向とは【基本概念を解説】

※この記事は「2023年3月15日」に更新しました。

オブジェクト指向という考え方について。

プログラミングを学習してきた方なら、なんとなく聞いたことがあるかと思います。

私が初めて聞いたのは、Java を学習したときです。

タカフミ
記事を書いている管理人の経歴は、以下の通りです。
  • 基本情報技術者資格所有者(ソフト開発の国家資格)
  • WordPress歴、10年以上
  • パソコン販売歴、約5年

オブジェクト指向とは【基本概念】

オブジェクト指向とは

オブジェクト指向とは、ソフトを構成する一つの部品を様々なアプリケーションで共通的に利用できるようにプログラミングする考え方です。

オブジェクト指向と比較されるのが、手続き指向型のプログラミング言語です。

タカフミ
例えば、C言語は手続き指向型です。

手続き指向型は、システムを細分化して、順番に考えていくようなイメージです。

この場合、似たようなシステムを組むときは最初からコードを書き直したりしていました。

もちろん、関数レベルで再利用できるように努力をしていましたが、それでも限界がありました。

オブジェクト指向は、実際に存在するものをコンピュータ上でそのままオブジェクト(物)として考えます。

これがクラスとして表現されます。

タカフミ
クラスの利用者は、内部構造や詳細を知らなくても使えたりします。

既存の共通部品を利用することができるので、プログラマーが書かなければいけないコードが激減するというわけです。



クラスとは

クラスは、プロパティ(属性)とメソッド(振る舞い)で構成されます。

タカフミ
例えば、人間クラスというものを作ってみましょう。

プロパティには、どんな値が考えられるでしょうか?

名前、性別、年齢、身長、体重などが設定できそうです。

メソッドには、歩く、走る、話す、座る など、色々設定できそうです。

タカフミ
次に、車クラスというものを考えましょう。

プロパティには、色、車名などが考えられます。

メソッドには、走る、止まるなどが考えられます。

ちなみに実際に存在するものをクラスとして表現することを抽象化といったりします。

クラスとインスタンス

先程、説明したクラスをコンピュータ上で動かすには、クラスからインスタンスというものを生成する必要があります。

タカフミ
インスタンスというのは、実際に動作するオブジェクトのことです。

クラスは、設計書のようなものだと考えて下さい。

一歩進んだオブジェクト指向の考え方

先程説明したのは、基本的なオブジェクト指向の概念です。

タカフミ
これから説明するのは、一歩進んだオブジェクト指向の考え方です。

継承(インヘリタンス)

オブジェクト指向には、継承(インヘリタンス)という素晴らしい考え方があります。

継承を利用すると、既に存在するクラスを拡張して、新しいクラスを作成することができます。

例えば、乗り物クラスというものがあったとして、空を飛ぶ機能が追加したかったとしましょう。

タカフミ
こういう場合、空を飛ぶ機能だけ差分プログラムを行います。

既存のコードをなるべく再利用して、新規にコードを書く手間をなるべく少なくするという考え方です。

多様性(ポリモーフィズム)

同じ名前のメソッドを持っていても、動作を実現する方法が異なるようなオブジェクトを上手く共通的に扱うことを多様性(ポリモーフィズム)といったりします。

少し難しいのですが、これのおかげで細かい内容がわからなくても、なんとなく使うことができるというわけです。

カプセル化

オブジェクト指向では、基本的にクラスの外部からメンバ変数へ直接アクセスすることは推奨されていません。

タカフミ
必ずメソッドを経由して、アクセスしなければいけません。

つまり、利用する場合、そのための処理を書く必要があるということです。

このことをカプセル化といいます。

最後に

今回は、オブジェクト指向について解説しました。

最近のプログラミング言語のほとんどがオブジェクト指向を取り入れています。

タカフミ
その方が開発効率が良いからです。

完全に理解するのは、難しいかもしれませんが、なんとなく覚えておくと良いかと思います。

プログラミング学習を進めていくと理解が深まっていきます。