オブジェクト指向プログラミングについて

こんにちは!tonです

乙です。
最近のプログラミング言語は大抵オブジェクト指向になっています。オブジェクト指向プログラミングについて記事を書きました。

オブジェクト指向プログラミングとは

object(オブジェクト)とは、「物体」「目的」などと和訳されます。

オブジェクト指向においてはあらゆるものを「物体」として捉えます。「人間」も「パソコン」も「国」なども「物体」です

例えば、「車」を「物体」として捉えてみましょう。

「車」は基本的に以下のような動きを持ちますね。

  • 前に進む
  • 後ろに進む
  • 右に曲がる
  • 左に曲がる

運転手は、車を操作するときに中の仕組みは理解していません。しかし、ハンドル操作やアクセルを踏むことで結果がどうなるかは知っています。

このように、「こういう命令をすればこういう動きをする物体」を作成するのがオブジェクト指向プログラミングになります。

オブジェクト指向プログラミング 基本用語

オブジェクト指向プログラミングには3大基本用語があります。

カプセル化

カプセル化とは中でどのような処理をしているか意識させないことを目的としています。

先ほどの「車」を例にしてみます。

アクセルを踏むという操作をすると車が前に進みます。仕組みとしては以下が参考になります。

とてもわかりやすい説明ですね。・・・しかし!運転手がいちいちそこまで意識する必要があるでしょうか。いやないっ(反語)

プログラムも同様です。他のプログラムがどういう仕組みで結果を返すかなどは意識したくないし、意識されたくないのです。

結果を教えてくれるインタフェースだけ用意してくれるだけで良いのです。このカプセル化を利用することで、プログラム毎の独立性が担保され、プログラムの管理がしやすくなります。

継承

オブジェクトの動きを引き継いで使用することができる機能です。「ショベルカー」というオブジェクトを作ってみます。

「ショベルカー」の動きは以下。

  • 前に進む
  • 後ろに進む
  • 右に曲がる
  • 左に曲がる
  • モノを運ぶ

動きをどこかでみたことないでしょうか。そうです「車」オブジェクトと共通の部分があります

「車」オブジェクトを継承することで、共通の部分をまとめることができます。

「車」オブジェクトを継承した「ショベルカー」はプログラム上は以下の動きだけ定義すればOK

  • モノを運ぶ

継承のメリットは同じような振る舞いを持つオブジェクトが現れたときに、まとめることができます。

多態性

異なるオブジェクトに対して、同じ名前の命令をしたときに、オブジェクト固有の結果が返ってくることを言います。プログラムにおいては、オブジェクトに振る舞いを個別定義することでプログラムの可読性を上げることができます。

まとめ

オブジェクト指向については、僕自身もうまく使いこなせていなかったり、理解度が足りなかったりします。

今後も継続して勉強して、再利用性、可読性の高いブログラムを書ければと思います!

あわせて読みたい

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です