戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2009年 秋期 午前(科目A)46


問題文

オブジェクト指向でシステムを開発する場合のカプセル化の効果はどれか。

選択肢

オブジェクトの内部データ構造やメソッドの実装を変更しても、ほかのオブジェクトがその影響を受けにくい。(正解)
既存の型に加えてユーザ定義型を追加できるので、問題領域に合わせてプログラムの仕様を拡張できる。
子クラスとして派生するので、親クラスの属性を子クラスが利用できる。
同一メッセージを送っても、受け手のオブジェクトによって、それぞれが異なる動作をするので、メッセージを受け取るオブジェクトの種類が増えても、メッセージを送るオブジェクトには影響がない。

カプセル化の効果【午前2 解説】

要点まとめ

  • 結論: カプセル化はオブジェクトの内部実装を隠蔽して公開インタフェースだけを残すことで、変更が外部に伝播しにくくなり保守性が高まります。
  • 根拠: 情報隠蔽によりアクセス経路が制限されるため、内部データ構造やメソッド実装を自由に変更しても他オブジェクトの影響を最小化できます。
  • 差がつくポイント: 「公開インタフェース」と「実装の分離」を理解し、アクセス制御(例: getter/setter、アクセサ)でどこを固定しどこを変更可能にするか設計できることが重要です。

正解の理由

選択肢はア、イ、ウ、エのうち、カプセル化の効果を正しく述べているのは です。
カプセル化(information hiding)はオブジェクトの内部状態や実装を隠し、外部には定められたインタフェースのみを公開する設計原理です。これにより実装変更がクライアント(他オブジェクト)へ伝播しにくくなり、影響範囲を限定できます。選択肢アはこの核心を直接表現しています。

よくある誤解

  • カプセル化と継承や多態性を混同して、すべてをカバーする機能だと誤解する人が多いです。
  • カプセル化はデータを「隠す」だけでなく、公開インタフェースを明確にして依存を減らす設計思想です。

解法ステップ

  1. 問題文で問われている用語(ここでは「カプセル化」)の定義を脳内で即座に確認する。
  2. 各選択肢が「定義に合致しているか」を短いフレーズで判定する(実装の隠蔽、型の追加、継承、ポリモーフィズム)。
  3. 定義に合致する選択肢を1つに絞る。該当するのは「実装隠蔽による影響範囲の限定」を述べたもの。
  4. 残りの選択肢を用語ごとに切り分け(イ: 型拡張、ウ: 継承、エ: 多態性)して誤りの理由を確認する。

選択肢別の誤答解説

  • : 正解。オブジェクトの内部データ構造やメソッド実装を隠蔽することで、実装変更が外部に及ぼす影響を小さくできる点を正確に述べています。
  • イ: 誤り。既存の型にユーザ定義型を追加する話は「拡張」や「型の追加」に関するもので、カプセル化の直接的な効果ではありません。
  • ウ: 誤り。子クラスが親クラスの属性を利用できるのは「継承」の説明であり、カプセル化とは別概念です。
  • エ: 誤り。複数の受け手で同じメッセージが異なる動作をするのは「多態性(ポリモーフィズム)」の効果であり、カプセル化の説明とは異なります。

補足コラム

  • カプセル化はオブジェクト指向の三大特徴(カプセル化、継承、多態性)の一つで、特に「情報隠蔽」に重点があります。設計上は「高凝集・低結合」を目指す際の基本手法です。
  • 実装例(Python): 実際の言語ではアクセス制御が言語仕様により異なりますが、設計パターンとしては以下のようにプロパティを使って公開インタフェースを制御します。
class Account:
    def __init__(self, balance):
        self._balance = balance  # 非公開に相当

    @property
    def balance(self):
        return self._balance

    def deposit(self, amount):
        if amount > 0:
            self._balance += amount
このように内部表現を隠し、公開メソッドでのみ状態変更を許すと実装を後から変えやすくなります。
  • カプセル化はAPI安定化やリファクタリングの容易さに直結します。公開インタフェースを安定させれば内部実装を安全に改善できます。

FAQ

Q: カプセル化と情報隠蔽は同じ意味ですか?
A: 基本的に同義に使われます。どちらも内部実装を隠し外部にはインタフェースだけを公開する考え方です。ただし文脈で微妙に強調点が変わることがあります。
Q: カプセル化だけでソフトウェアの品質が保てますか?
A: いいえ。カプセル化は重要ですが、設計全体には継承や多態性、モジュール分割、テスト、ドキュメンテーションなど他の要素も必要です。
Q: カプセル化と多態性はどう区別すればよいですか?
A: カプセル化は「内部を隠すこと」、多態性は「同一のメッセージに対してオブジェクトが異なる振る舞いをすること」です。用途も効果も異なります。

関連キーワード: カプセル化、情報隠蔽、公開インタフェース、アクセス制御、高凝集低結合、継承、ポリモーフィズム、リファクタリング、API安定性
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について