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

2020年7月29日水曜日

オブジェクト指向

t f B! P L

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

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

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

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

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

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

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

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

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

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

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

カプセル化

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

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

アクセルを踏むという操作をすると車が前に進みます。ブレーキを踏むという操作をすると車が止まります。どのような仕組みで進んだり止まったりするのかは運転手が意識する必要があるでしょうか。いやないっ(反語)

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

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

継承

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

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

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

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

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

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

  • モノを運ぶ

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

多態性

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

まとめ

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

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

自己紹介

Webエンジニアをやっています。日々思ったことや、読書レビュー、IT系の記事などを書き連ねています

広告

[書籍] ティムクック アップルをさらなる高みへと押し上げた天才 感想まとめ

   こういう人におすすめ ティムクックのことを知らないという人 アップル、ジョブズのファン 概要 2011年 ティムクック がAppleのCEOを引き継ぎました。 クック の知名度は低く、批評家たちは ジョブズ なしではAppleは終わりを迎えるだろうと危惧していました。 しか...

QooQ