【おぶじぇくとしこう】

オブジェクト指向 とは?

最終更新:
💡 「モノ」を中心にプログラムを組み立てる

データ(属性)と処理(メソッド)をひとまとめにした「オブジェクト」を中心にプログラムを設計する手法。

📌 このページのポイント
オブジェクト指向でよく使う考え方 カプセル化口座:内部の残高入金()・出金()公開した操作を通す継承動物犬猫親の性質を子が受け継ぐポリモーフィズム共通の操作:鳴く()犬なら「ワン」猫なら「ニャー」抽象化車の運転必要な操作に着目するクラスを使う方式で説明した、代表的な考え方
データと操作をまとめ、内部と公開する操作を分けて設計する。継承などの実現方法は言語によって異なる。
ひよこ ひよこ
オブジェクト指向って何がいいの?
ペンギン先生 ペンギン先生
関係するデータと振る舞いをまとめ、役割ごとにプログラムを考えやすくするよ。クラスを使う説明なら、「犬」に名前や「鳴く」という処理を定義し、「ポチ」「タロウ」という別々のインスタンスを作る例で考えられるね。
ひよこ ひよこ
カプセル化って何?
ペンギン先生 ペンギン先生
内部データと外部向けの操作を分けることだよ。銀行口座なら残高を直接書き換えず、「入金」「出金」で条件を確認して変更する設計にできる。操作の約束を保てれば内部の変更の影響を抑えやすいけれど、それだけで安全や影響ゼロが保証されるわけではないよ。
ひよこ ひよこ
継承って必要?
ペンギン先生 ペンギン先生
Javaなどでは、親クラスの状態や振る舞いを子クラスが受け継げるよ。ただ、何でも親子にすればよいわけではない。別のオブジェクトを部品として持つ方法もあるので、表したい関係や変更のしやすさに合わせて考えよう。
ひよこ ひよこ
ペンギン先生 ペンギン先生
たとえば犬にも猫にも「鳴く」という操作を用意すると、呼び出す側は共通の操作を使い、実際の振る舞いは「ワン」「ニャー」と変えられるよ。図は、このような代表的な考え方を並べているんだ。
ひよこ ひよこ
オブジェクト指向は必ずクラスを使うの?
ペンギン先生 ペンギン先生
Javaなどのクラスを使う方式では、クラスからインスタンスを作るよ。一方、JavaScriptではクラスを別に定義せずオブジェクトを作れ、共通の参照先オブジェクトを通して機能を共有する仕組みもある。全言語をクラスの説明だけで捉えないようにしよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「オブジェクト指向」って出てきたら「データと処理をセットにしたオブジェクトを中心に組み立てる考え方」と思えばだいたいOK!
📖 おまけ:英語の意味
「Object-Oriented Programming(OOP)」 = オブジェクト指向プログラミング
💬 Object(モノ)をOriented(中心にした)Programming(プログラミング)だよ

参考資料

← 用語集にもどる