応用情報技術者 2011年 秋期 午前2 問45
問題文
オブジェクト指向プログラムにおいて、実行時にメッセージとメソッドを関連付けることを何と呼ぶか。
選択肢
ア:カプセル化
イ:静的結合
ウ:多重継承
エ:動的結合(正解)
オブジェクト指向プログラムにおける実行時のメッセージとメソッドの関連付け【午前2 解説】
要点まとめ
- 結論:実行時にメッセージとメソッドを関連付けることは「動的結合」と呼ばれます。
- 根拠:動的結合は実行時に呼び出すメソッドを決定し、柔軟な多態性を実現します。
- 差がつくポイント:静的結合との違いを理解し、動的結合が多態性やオーバーライドに不可欠な仕組みであることを押さえましょう。
正解の理由
選択肢「エ: 動的結合」が正解です。オブジェクト指向では、メッセージ(メソッド呼び出し)を送った際に、どのメソッドを実行するかは実行時に決まります。これを動的結合(Dynamic Binding)と呼び、ポリモーフィズム(多態性)を実現する重要な機能です。静的結合はコンパイル時に決まるため、実行時の柔軟性がありません。
よくある誤解
動的結合とカプセル化を混同しやすいですが、カプセル化はデータと処理の隠蔽を指し、メソッドの結合時期とは異なります。
解法ステップ
- 問題文の「実行時にメッセージとメソッドを関連付ける」という表現に注目する。
- 「実行時に決まる」=「動的」な結合であることを理解する。
- 選択肢の意味を確認し、動的結合が該当することを判断する。
- 静的結合はコンパイル時に決まるため除外。
- カプセル化や多重継承は関連しない概念であることを確認。
選択肢別の誤答解説
- ア: カプセル化
データやメソッドを一つにまとめて外部から隠す技術であり、メッセージとメソッドの結合時期とは無関係です。 - イ: 静的結合
メソッドの呼び出し先がコンパイル時に決まる結合で、実行時の柔軟性がありません。 - ウ: 多重継承
複数の親クラスから継承することであり、メッセージとメソッドの結合時期の説明には該当しません。 - エ: 動的結合
実行時にメッセージとメソッドを関連付ける仕組みで、多態性を実現するための正しい用語です。
補足コラム
動的結合はポリモーフィズムの基盤であり、オーバーライドされたメソッドを実行時に正しく呼び出すために不可欠です。JavaやC++など多くのオブジェクト指向言語で採用されています。これに対し、静的結合はパフォーマンスは良いものの柔軟性に欠けます。
FAQ
Q: 動的結合と遅延バインディングは同じ意味ですか?
A: はい、動的結合は遅延バインディングとも呼ばれ、実行時にメソッドを決定する仕組みです。
A: はい、動的結合は遅延バインディングとも呼ばれ、実行時にメソッドを決定する仕組みです。
Q: 静的結合はどんな場合に使われますか?
A: 静的結合はコンパイル時にメソッドが決まるため、パフォーマンス重視の場面やオーバーヘッドを避けたい場合に使われます。
A: 静的結合はコンパイル時にメソッドが決まるため、パフォーマンス重視の場面やオーバーヘッドを避けたい場合に使われます。
関連キーワード: 動的結合、ポリモーフィズム、オブジェクト指向、メッセージ送信、多態性

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

