この記事はJavaとPythonを基礎から学びたい私のための Advent Calendar 2024の7日目の記事です。
まったく知識がないので今更ですが学習します。
オブジェクト指向とは
明確な答えは無いようです。自分なりの答えにはなりますが、おそらく下に書いた感じのやつです⇩
"順番にひとつひとつ処理を書いていくのとは違い、処理を分割してあたかも人間の動きのように処理をすること"
のようです。
動きは変わらないけど、処理ごとにまとめることで書きやすく、見やすくするといった感じでしょうか。
手続き型プログラミング
先ほど述べた、 "順番に一つ一つ処理を書いていく" 処理は手続き型と呼ばれるようです。
例) 一日の流れ
目を開ける→時計のほうを向く→時間を確認する→上半身を起こす→立つ→布団を整える→朝ご飯を準備する→繰り返し(ご飯を食べる→味噌汁を飲む→おかずを食べる)→もし・・・
とこんな感じで延々と続く考え方が手続き型プログラミングの特徴のようです。処理を一つ一つまとめて書いていくので、延々とかかります。しかも、朝食・昼食・夕食で処理はほとんど変わらないのに同じことを繰り返し書くことになります。
見にくいし、すぐに理解することもできません。
オブジェクト指向
これに対してオブジェクト指向ではこんな感じになるようです。
例) 一日の流れ
① 処理をまとめる
A 起きる
目を開ける→時計のほうを向く→時間を確認する→上半身を起こす→立つ→布団を整える
B ご飯
朝ご飯を準備する→繰り返し(ご飯を食べる→味噌汁を飲む→おかずを食べる)→もし食べ終わったら片す
C 身支度
歯を磨く→着替える→荷物を準備する
とこんな感じでまとめられます。これらひとつひとつは部品というそうです
② まとめたものを並べる
A 起きる→B ご飯→C 身支度
こんな感じで並べることができます。さっきよりも見やすくなったのがわかると思います。
まとめると、こんな感じです。
三大機能
三大要素とか三大機能とか言われるものが存在しているようです。
継承
部品を流用し、似た部品を作ることができる機能です。
多態性
別物の部品でも、大体同じなら同じようなものだとする考え方です。
カプセル化
特定のクラスからしかアクセスできないようなクラスを作る、制約を設けるものです。意図しない挙動を防ぐために使われているみたいです。
まとめ
手続き型とオブジェクト指向の2種類が存在する。手続き型は処理を並べたもので、見にくい。これに対してオブジェクト指向では処理をまとめて、それぞれのまとまりをつなげる方法。処理がどのように行われているかわかりやすい。また、オブジェクト指向には継承・多態性・カプセル化の3つの機能が含まれていた。
参考文献