オブジェクト指向とは(全体像)
オブジェクト指向とは、プログラムを作るときの考え方(設計思想)のひとつ。関係するデータ(値)と、その処理(メソッド)を、「オブジェクト」というひとつのまとまりにして扱うのが特徴だ。
たとえば「自動車」というオブジェクトに、「速度」などのデータと、「走る・止まる」といった処理を、まとめて持たせるイメージ。バラバラに管理するより、関係するものをひとまとめにできるので、分かりやすく、再利用しやすい。
ここで一番の勘違いポイント。オブジェクト指向は、特定の言語(Javaなど)の名前ではない。あくまで考え方(思想)で、JavaやPython、C++など、いろいろな言語で使える。「オブジェクト指向=Java」と思い込むと誤りになる。
詳しく:3大要素
ここが心臓部。オブジェクト指向の3つの大きな特徴を表で押さえよう。
オブジェクト指向の3大要素
| 要素 | やさしい意味 |
|---|---|
| カプセル化 | データを隠して、決まった窓口(メソッド)経由でだけ使えるようにする |
| 継承 | 親のもつ性質を、子が受け継いで使う(拡張・特化できる) |
| 多態性(ポリモーフィズム) | 同じ呼び出しでも、相手によって違う動きをする |
- カプセル化 … 中のデータを直接いじれないように隠し、決まった窓口を通してだけ使えるようにする。勝手に値を壊されるのを防ぐ。
- 継承 … すでにある親の性質を、子が受け継ぐ。ここで注意。継承は「丸ごとコピー」ではなく、親を土台にして拡張・特化すること。「継承=コピー」と思い込むと誤りだ。
- 多態性 … 同じ命令でも、相手(オブジェクト)によって違う動きをする。たとえば「鳴く」と命令すると、犬は「ワン」、猫は「ニャー」と、相手で動きが変わる。
わかりやすく言い換えると
身近なたとえで整理しよう。
オブジェクト指向は、「モノごとに、データと動きをセットで持たせる」イメージ。自動車なら、速度(データ)と走る・止まる(動き)をひとまとめにする。要するに、関係するものをまとめて扱う考え方だ。
カプセル化は、「中身を勝手にいじらせず、決まったボタンで操作する」こと。継承は、「親のレシピを受け継いで、少しアレンジする」こと(丸写しではない)。多態性は、「同じ『鳴け』でも、犬と猫で違う声になる」こと。
「オブジェクト指向=Java」というのは思い込み。つまり、考え方なので、いろいろな言語で使える、と覚えておこう。
試験のツボ
🔴 一番出る:3大要素
①カプセル化(データを隠し、窓口経由で使う)・継承(親の性質を受け継ぐ)
②多態性(同じ呼び出しでも相手で動きが変わる)
🔴 次に出る:継承はコピーではない
①継承は、親を土台に拡張・特化すること
②「丸ごとコピー」ではない
🟡 押さえると安定:言語ではなく考え方
①オブジェクト指向は、特定の言語の名前ではない
②考え方なので、Java・Pythonなど複数の言語で使える
よくある間違い
①「オブジェクト指向とは、Javaという言語の名前だ」→ ✗ オブジェクト指向は考え方(思想)。Java・Pythonなど複数の言語で使える。
②「継承とは、親のコードを丸ごとコピーすることだ」→ ✗ 継承は、親を土台にして拡張・特化すること。丸ごとコピーではない。
③「カプセル化とは、データを誰でも自由にいじれるようにすることだ」→ ✗ カプセル化は逆で、データを隠し、決まった窓口を通してだけ使えるようにする。
試験での出題パターン
実際の問題でたしかめてみよう。
オリジナル問題1(オブジェクト指向の正体)
オブジェクト指向に関する次の記述のうち、最も適切なものはどれか。
- 社員の出退勤を記録して、毎月の給与を計算するためのしくみのことである
- 取引先へ毎月の請求書を郵送する、決まった事務作業のことを指している
- 完成したシステムを宣伝して、より多く売るための広告活動のことである
- データと処理を、オブジェクトにまとめて一体化して考える設計の考え方
解答は 4 だよ。
オブジェクト指向は、データと処理を、オブジェクトというまとまりに一体化して考える設計の考え方だよ。関係するものをまとめて扱うんだ。
選択肢1は給与計算、選択肢2は請求書の事務、選択肢3は広告で、どれも違うよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 給与計算のしくみではない |
| 2 | ✗ | 請求書の事務の話 |
| 3 | ✗ | 広告活動ではない |
| 4 | ✓ | データと処理をまとめる考え方で正しい |
オリジナル問題2(3大要素)
オブジェクト指向の3大要素として、最も適切なものはどれか。
- 売上・費用・利益という、決算で使う3つの数字のことを指している
- 朝・昼・夜という、1日の3つの時間帯のことを指している言葉である
- カプセル化・継承・多態性(ポリモーフィズム)の3つのことである
- 北・南・西という、3つの方角のことを指している言葉である
解答は 3 だよ。
オブジェクト指向の3大要素は、カプセル化・継承・多態性(ポリモーフィズム)だよ。隠す・受け継ぐ・相手で動きが変わる、の3つだね。
選択肢1の決算の数字、選択肢2の時間帯、選択肢4の方角は、いずれも誤りだよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 決算の数字ではない |
| 2 | ✗ | 時間帯のことではない |
| 3 | ✓ | カプセル化・継承・多態性で正しい |
| 4 | ✗ | 方角のことではない |
オリジナル問題3(言語ではなく考え方)
オブジェクト指向に関する次の記述のうち、最も適切なものはどれか。
- 特定の言語の名前ではなく考え方で、複数の言語で使えるものである
- Javaという1つの言語の名前で、ほかの言語ではいっさい使えない
- 社員の給与を計算する処理だけを指す、経理専用の考え方である
- 取引先へ請求書を郵送する事務作業だけを指す言葉のことである
解答は 1 だよ。
オブジェクト指向は、特定の言語の名前ではなく考え方で、複数の言語で使えるものだよ。「OOP=Java」と思い込まないでね。
選択肢2の「Javaだけ」、選択肢3の給与計算、選択肢4の請求書の事務は、いずれも誤りだよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✓ | 考え方で複数言語で使えるで正しい |
| 2 | ✗ | Javaだけの名前ではない |
| 3 | ✗ | 給与計算の考え方ではない |
| 4 | ✗ | 請求書の事務ではない |
まとめ
押さえどころ
- 🔴 オブジェクト指向 = データと処理を、オブジェクトというまとまりに一体化して考える設計の考え方。
- 🔴 3大要素 = カプセル化(隠す)・継承(受け継ぐ)・多態性(相手で動きが変わる)。継承はコピーではない。
- 🟡 言語ではなく考え方 = 特定の言語の名前ではない。Java・Pythonなど複数の言語で使える。
次に学ぶ
- UML ── システムの構造や動きを図にする共通の表し方。オブジェクト指向の設計を図で表すのに使う。
執筆: SikakuQuest編集部