基本情報技術者 2011年 秋期 午前(科目A) 問46
問題文
オブジェクト指向の基本概念の組合せとして、適切なものはどれか。
選択肢
ア:仮想化、構造化、投影、クラス
イ:具体化、構造化、連続、クラス
ウ:正規化、カプセル化、分割、クラス
エ:抽象化、カプセル化、継承、クラス(正解)
オブジェクト指向の基本概念の組合せとして、適切なものはどれか。 【午前2 解説】
要点まとめ
- 結論: オブジェクト指向の基本概念は「抽象化・カプセル化・継承・クラス」であり、選択肢ではエが正解です。設計の核となる概念が揃っています。
- 根拠: 抽象化は本質表現、カプセル化は内部隠蔽と操作の公開、継承は振る舞いの再利用、クラスは設計単位であるため基本概念に合致します。
- 差がつくポイント: 問題は用語の意味を問う問題なので「データベース用語」や「仮想化」等、OOPの基本に含まれない語を素早く除外するのが得点差になります。
正解の理由
正解は エ です。理由は次の通りです。
- 抽象化: 不要な詳細を取り除き本質的な属性や操作をモデル化する概念で、クラス設計の出発点です。
- カプセル化: データ(属性)とそれを扱う操作(メソッド)をひとまとめにし、内部実装を隠して外部にインターフェースだけを公開する手法です。
- 継承: 既存のクラス(親)から性質や振る舞いを引き継いで新しいクラス(子)を定義し、再利用を促します。
- クラス: オブジェクトの設計図であり、属性と操作を定義する基本単位です。
これら4つはオブジェクト指向の代表的な概念(設計の基礎)であり、選択肢の中で唯一まとまって該当するのがエです。
よくある誤解
- 「クラスがあるからその選択肢が正解」と考え、他の用語がOOPの基本かを確認しないミス。クラスだけでは不十分です。
- 抽象化と正規化を混同する。正規化はデータベース設計の概念であって、抽象化とは目的が異なります。
- カプセル化=単なる「データを隠す」だけと捉え、インターフェース設計(公開する操作)を見落とす誤り。
解法ステップ
- 各選択肢のキーワードを一語ずつ短く定義して頭の中で照合する。
- 「抽象化・カプセル化・継承・クラス」がOOPの代表語かを確認する(Yesなら有力候補)。
- 残りの語(仮想化、正規化、投影、連続、分割、構造化など)がOOPの基本概念かどうかを排除判定する。
- 最も多くOOPの基本概念に一致する選択肢を正解とする。
簡単な覚え方: 「抽(本質)・包(隠蔽)・継(再利用)・ク(設計単位)」と頭文字で連想する。
選択肢別の誤答解説
- ア: 仮想化、構造化、投影、クラス
- 誤りです。クラスはOOPの概念ですが、仮想化(仮想マシン等)や投影(主にデータ処理用語)、構造化(構造化プログラミング)はOOPの基本概念ではありません。
- イ: 具体化、構造化、連続、クラス
- 誤りです。具体化や連続はOOPの代表概念ではなく、構造化も別のパラダイムに関わる用語です。クラスのみ該当しますが不十分です。
- ウ: 正規化、カプセル化、分割、クラス
- 誤りです。カプセル化とクラスは正しい語ですが、正規化はデータベース設計用語、分割も一般的手法であってOOPの「基本概念の組合せ」とは言えません。
- エ: 抽象化、カプセル化、継承、クラス → 正解
- 抽象化・カプセル化・継承・クラスの4つはオブジェクト指向設計の核となる概念で、試験で求められる基本の組合せです。
補足コラム
オブジェクト指向には上記の要素に加えて「多態性(ポリモーフィズム)」も重要です。多態性は継承やインターフェース(抽象クラス)と密接に関係し、同じメッセージに対して異なる振る舞いを実現します。簡単なPython例で概念を確認しましょう。
class Animal: # 抽象化・クラス
def speak(self):
raise NotImplementedError
class Dog(Animal): # 継承
def __init__(self, name):
self._name = name # カプセル化(慣習的な非公開属性)
def speak(self): # 多態性(Animal型を継承して振る舞いを変える)
return f"{self._name}: ワン"
dog = Dog("ポチ")
print(dog.speak()) # 出力: ポチ: ワン
上の例で、Animalが抽象的な概念、Dogが具体的な実装(継承)、_nameがカプセル化の一例、多態性はspeakメソッドのオーバーライドで示されています。
FAQ
Q1: 抽象化と具体化の違いは何ですか?
A1: 抽象化は詳細を省いて本質を表現することで、具体化は抽象的な設計を実際の実装(詳細)に落とし込む行為です。
A1: 抽象化は詳細を省いて本質を表現することで、具体化は抽象的な設計を実際の実装(詳細)に落とし込む行為です。
Q2: カプセル化と情報隠蔽は同じですか?
A2: 実務的にはほぼ同義に扱われます。カプセル化は「データと操作をまとめること」、情報隠蔽はその結果として内部実装を外部から隠すことに重点があります。
A2: 実務的にはほぼ同義に扱われます。カプセル化は「データと操作をまとめること」、情報隠蔽はその結果として内部実装を外部から隠すことに重点があります。
Q3: 継承とポリモーフィズムはどのように違いますか?
A3: 継承はコードや性質を引き継ぐ仕組み、ポリモーフィズムはその上で「同じ操作名で異なる実装を扱える性質」を指します。継承がポリモーフィズムを実現する手段の一つです。
A3: 継承はコードや性質を引き継ぐ仕組み、ポリモーフィズムはその上で「同じ操作名で異なる実装を扱える性質」を指します。継承がポリモーフィズムを実現する手段の一つです。
関連キーワード: オブジェクト指向、抽象化、カプセル化、継承、クラス、多態性、情報隠蔽、抽象クラス、インターフェース、設計原則

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

