オブジェクト指向とは

※この記事は「2020年7月31日」に更新しました。

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

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

Python(パイソン)無料学習でも少し触れましたが、もう少し詳しく解説していきたいと思います。

オブジェクト指向とは

オブジェクト指向とは

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

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

C言語が手続き指向型です。

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

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

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

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

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

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

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



クラスとは

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

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

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

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

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

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

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

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

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

クラスとインスタンス

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

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

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

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

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

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

継承(インヘリタンス)

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

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

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

こういう場合、空を飛ぶ機能だけ差分プログラムを行うわけです。

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

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

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

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

カプセル化

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

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

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

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

最後に

いかがでしょうか。

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

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

その方が開発効率が良いからです。

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

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