📖 設問文(ITパスポート 令和3年 問41)
クラスや継承という概念を利用して,ソフトウェアを部品化したり再利用することで,ソフトウェア開発の生産性向上を図る手法として,適切なものはどれか。
ア:オブジェクト指向
イ:構造化
ウ:プロセス中心アプローチ
エ:プロトタイピング
💡 解説
正解は 「ア:オブジェクト指向」 です。
オブジェクト指向(Object-Oriented Programming, OOP)は、クラス と 継承 を使うことでソフトウェアを「部品」として設計し、繰り返し利用できるようにする考え方です。これによって、開発の効率と保守性が大きく向上します。
🏫 例1:学校の先生と生徒
- クラス(Class)=設計図
「人間」というクラスを作ると、名前・年齢・話すといった共通の性質を持たせられます。 - 継承(Inheritance)=性質を引き継ぐ
そこから「先生クラス」と「生徒クラス」を作れば、両方とも「話す」や「名前を持つ」など人間としての特徴を引き継ぎます。
さらに「先生クラス」には「授業をする」、「生徒クラス」には「勉強する」といった追加の特徴を定義できます。
👉 こうすれば「人間」の基本部分を何度も書き直す必要がなく、効率的にプログラムを組み立てられます。
🏠 例2:家電(冷蔵庫と洗濯機)
- 「家電クラス」 に「電源を入れる」「電源を切る」といった共通機能を定義。
- そこから「冷蔵庫クラス」「洗濯機クラス」を継承すると:
- 冷蔵庫には「冷やす」、洗濯機には「洗う」といった固有の機能を追加できる。
👉 家電全体の共通部分をまとめて管理でき、あとから「電子レンジクラス」を追加するときもスムーズ。
🐕 例3:動物(犬と猫)
- 「動物クラス」 に「食べる」「寝る」という共通の性質を定義。
- 「犬クラス」と「猫クラス」を継承すると:
- 犬には「吠える」、猫には「鳴く」といった特徴を追加可能。
👉 「動物クラス」のコードを再利用できるため、同じ処理を繰り返し書く必要がない。
🔁 再利用性のメリット
- 効率化:共通部分を一度書けば何度も使える。
- 保守性向上:共通部分を直せば、派生クラスにも自動で反映される。
- 拡張性:新しい種類(家電や動物など)を追加するときも簡単。例えば、新しい「留学生クラス」を作るときも、「人間クラス」を継承して追加機能を定義するだけ
✅ 選択肢比較
- ア:オブジェクト指向 → 正解!
クラスや継承を使って部品化・再利用できる。 - イ:構造化 → プログラムを整理する考え方だが、継承の仕組みはない。
- ウ:プロセス中心アプローチ → 流れ(プロセス)に注目するが再利用性とは違う。
- エ:プロトタイピング → 試作品を作ってユーザーに見せる手法で再利用性とは関係が薄い。
🎯 まとめ
オブジェクト指向は、
- 学校(先生と生徒)
- 家電(冷蔵庫と洗濯機)
- 動物(犬と猫)
といった身近な例で考えるとイメージしやすくなります。
共通部分をまとめ、必要に応じて拡張することで、ソフトウェア開発の効率と品質が大幅に向上します。