基本情報 平成26年度 秋期 問47:テクノロジ系に関する問題
オブジェクト指向に基づく開発では, オブジェクトの内部構造が変更されても利用 者がその影響を受けないようにすることができ, それによってオブジェクトの利用者 がオブジェクトの内部構造を知らなくてもよいようにすることができる。これを実現 するための概念を表す用語はどれか。
- aカプセル化。正答
- bクラス化
- c構造化
- dモジュール化
AI解説(初心者・標準・上級)
理解度に合わせて3レベルの解説を無料で読めます。
答えは a「カプセル化」 です。
カプセル=薬の入れ物のように、中身を“包んで見えなくする”ことです。
たとえばテレビ。リモコンのボタンを押せば映りますよね。中の電子回路がどう動いてるかは知らなくてもOK。これがカプセル化の発想です。
プログラムも同じで、中身が変わっても外から使う人には関係ないようにできます。
👉 覚え方:カプセル=包む=中身を隠す。
ほかの選択肢:b クラス化=設計図にまとめる/c 構造化=順番に整理する/d モジュール化=部品ごとに分ける。どれも似てるけど「中身を隠す」は a だけ。
なぜこれが正解か
正解は a。カプセル化(Encapsulation)はオブジェクト指向の三大特性の一つで、データ(属性)と操作(メソッド)を1つのオブジェクトに包み、内部実装を外部から隠蔽する概念。これにより内部構造を変更しても、公開インタフェース(メソッドシグネチャ)が変わらなければ利用側のコードは影響を受けない(情報隠蔽:Information Hiding)。
各選択肢の解説
- b クラス化:オブジェクトの設計図(クラス)を定義すること。隠蔽の概念ではない。
- c 構造化:制御構造を順次・選択・反復に限定する旧来手法(構造化プログラミング)。
- d モジュール化:機能単位で分割する考え方。カプセル化と近いが、内部隠蔽の概念は含まない。
覚え方・ひっかけ注意
オブジェクト指向の3特性は「カプセル化 / 継承 / 多態性(ポリモーフィズム)」。カプセル化は「中身を隠す=アクセス修飾子(private/public)」と直結。モジュール化との違いは「データと操作をまとめる」点。
理論的背景
カプセル化はパルナス(David Parnas)の情報隠蔽原則(1972年論文「On the Criteria To Be Used in Decomposing Systems into Modules」)を起源とし、Smalltalk以降のOOP言語で「アクセス制御(public/protected/private)」と「ゲッター・セッター」で具現化された。SOLID原則のうち「O:Open/Closed Principle」「D:Dependency Inversion Principle」とも深く関連する。
実務での使われ方
Java・C#・Pythonでは `private` フィールド+ `getter/setter` でデータ隠蔽。最近はimmutable設計(Kotlin `val`、Java `record`)で「変更不可な公開」が主流。マイクロサービスでは「Bounded Context」内のデータベースを隠蔽し、API(REST/gRPC)経由のみアクセスさせるのが現代版カプセル化と言える。
試験での位置づけ
基本情報・応用情報の頻出語。継承・多態性との3点セットで毎期出題される。応用情報以上ではデザインパターン(Strategy・Adapter・Facade)との関連、「Tell, Don't Ask」原則、ドメイン駆動設計(DDD)の「集約(Aggregate)」など、上位概念との接続が問われる。
選択肢の発展補足
- 継承(Inheritance)は再利用を促すが過度な継承は脆い設計(Fragile Base Class問題)を生む。現代では「合成 over 継承(Composition over Inheritance)」が推奨。
- 多態性(Polymorphism)は同名メソッドが受信側で異なる動作をする性質。インタフェース/抽象クラスで実現。
- 構造化(c)と比較するとOOPは「データ中心」、構造化は「処理中心」というパラダイムの差がある。
出典:IPA(情報処理推進機構)公式 基本情報技術者試験 平成26年度 秋期 問47/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。