🫠

ふわっとオブジェクト指向の概要をまとめた記事

2023/12/24に公開

みなみなみなさま方、こんにちはでございます。

PHPのオブジェクト指向についてちょろっと学んだので、自分の学んだことをざっくりとまとめておこうと思います。

僕と同じく最近オブジェクト指向を学び始めたよって方や、
「これから学ぶぞい!」という、勢い新幹線レベルの皆様が参考にできる記事になっていれば幸いです。

今回はPHPで用いられているオブジェクト指向についてまとめています!
オブジェクト指向にも流派みたいなのがあるそうなので、ほかの言語で共通の認識を持てるかは今のところワカリマセーン!🤪

オブジェクト指向の目的はプログラムを変更しやすくすること

オブジェクト指向とはプログラムを変更しやすくするための開発方法、方針のことです。

オブジェクト指向を学んだ瞬間から、日頃の全ての行いはこの目的のためにあると言っても過言ではないでしょう

プログラムって、一旦使える状態になったからと言って一生そのまま使えるかと言われるとそんなことはないですよね、、、

機能を追加したり、思わぬ不具合を修正したり、、

何も考えずに1つのファイルにすべての機能をぶち込み、知恵の輪みたいなコーディングをしていた日には、1か所の変更が全体に影響を与え、修正が修正を呼び、修正の14連鎖なんて目をつむってでもできそうなもんです。

ぷよぷよだったらプロになれますか?🧐

部品に分けて修理しやすくしよう

じゃあどうやって変更しやすくするのよーっていうことですが

プログラムをいくつかの部品に分けて作ってあげる。
はい!これだけ!

例えば、今自分の目の前にあるPCを見てください。
え、スマホしかない?PCを買って出直してきてください。

本体にキーボードやマウス、モニタ、、いろんなもの刺さってますよね?
こうすればキーボードが壊れたときはキーボードを変えると、、、なんと今までどおりPCが使えます!おめでとうございます!

プログラムも部品に分けておくと、1つの部品に修正、変更を施したときに、ほかの部品への影響がほとんどなくなっちゃうわけです!
また、機能を追加するときも、USBを刺すが如く単におこなえちまうよ!
というのがオブジェクト指向で開発する真髄です。すごいね!

「われわれが日常的に行っていることをプログラムに落とし込んだ」って感じですね!

オブジェクトは「モノ」である。

みなさんもここまで耳に穴があくまでオブジェクトという言葉を聞いてきたと思いますが、
結局オブジェクトってなんやねんて話ですよね。

はい、モノのことです。

大きな意味で、モノ のことです。

(^ω^)

えー、これだとカレー屋さんでよく聞く(聞かない)

「これは何ですか?」
「はい、ナンです」

みたいな話になりそうなので、ちょびっと噛み砕くと、

オブジェクトとは「モノ(概念)」であり、そのモノが持っている「役割」のことです。
「モノ(概念)」としているのは、部長や課長といった役職のように実態を持っていないモノもオブジェクトとしてあらわすことができるからです。🍛

例えば、さっきのPCの例でいうと、
キーボードは文字を入力するという役割を持っているし、
マウスはマウスポインタを動かすという役割を持っています。
また、部長や課長は部下に飲み会で奢るという役割を持っています。

この「役割」を1つの単位として部品(オブジェクト)に担ってもらおう。
というのがオブジェクト指向に則った開発を達成するうえでの大事な考え方になっています。🍻

押し付けすぎないで!一つの部品には一つの役割を!

さて、ここまででオブジェクト指向は、
「部品をつくり、役割を与えて、それを組み合わせてプログラムを作るでやんす!」
という話になってきましたが、
その際に守らなくてはいけない大事な大事なルールがあります。

それは、「1つの部品には、1つの役割だけ持たせよう」

というルールです。単一責任の原則とよばれています。

例えば、もしキーボードとマウスが同じ一つの物体、「マーボード」だったとします。👩‍🍳🍲
マーボードはもちろん、文字を入力する役割とマウスポインタを動かす役割を持っています。
もしこのマーボードを交換、修理するとなったら、一時的にPCの操作はできなくなってしまいますよね。
これはオカンのおなかの中からPCを使ってきた現代人にとっては、死の宣告と言っても過言ではありません。👩‍🍼

ですが、マウスとキーボードのように、マウスポインタを動かす役割と文字入力をする役割が分かれていれば、最悪どちらかが壊れても、ソフトウェアキーボードやショートカットを駆使して何とか最低限のPC操作はできる状態を保つことができます。

つまり、部品が分かれていたとしても、部品ごとに役割を分けていなければ、結局変更に対処しずらいプログラムになってしまう。

ということです。

まとめ

おさらいすると、

  • オブジェクト指向の目的はプログラムの変更を行いやすくすること。

  • そのためにプログラムは役割毎に部品を作ってそれを組み合わせる。

  • 役割を出発点とする開発手法がオブジェクト指向である

ということになります。

「部品を作って役割を考える」ではなく、「役割を考えて部品を作る」のながれでコーディングしていけるようにしたいですね。🫡


以上、オブジェクト指向の概要についてまとめてみました。

実際にオブジェクト指向にのっとってコードを書いてみると、作っているものの全体がよりはっきりとイメージできるようになって開発しやすくなったような気がしました。
上手に使えている

もっとつかいこんで、オブジェクト指向に則った思考で至高のオブジェクトを施工
できるようになりたいなと思います。

レッツみなさんも是非オブジェクト!!💥

Discussion