作成日 2011/1/3 最終更新日 2011/1/3
問題2.8(問題タイトル:継承)
オブジェクト指向設計についての問題(中級レベル)です。
問題タイトル:継承
重要度:★★★★☆(やや重要)
難易度:★★★★☆(やや難しい)
問題タイトル:継承
重要度:★★★★☆(やや重要)
難易度:★★★★☆(やや難しい)
問題:a〜gは継承についての記述である。a〜gのうち正しいものを全て 選択せよ。
a.Java言語ではUML2.0と同じように多重継承がサポートされている
b.VBAではUML2.0と同じように多重継承がサポートされている
c.スーパークラスに定義されている操作をサブクラスでオーバライドする場合、その操作はリスコフの置換原則に従う必要がある
d.Java言語において、スーパークラス Class1があり、aaaメソッド(publicメソッドとする)があるとする。サブクラス Class2中でaaaメソッドをオーバライドした場合、Class2.aaaからClass1.aaaを呼ぶことは可能である。
e.Java言語において、スーパークラス Class1があり、aaaメソッド(publicメソッド)があるとする。サブクラス Class2中でaaaメソッド(public staticメソッド)は定義可能である。
f.継承は、スーパークラスとサブクラス間でのクラス間の結合度が高くなるので、注意すべきである。
g.スーパークラスに各あるサブクラスが共通で使いそうな操作を定義すると、スーパークラスのの強度(凝集度)が悪くなりがちなので注意が必要である。
問題文終わり
注意:これ以上、下にスクロールすると解答・解説が見えちゃいます。
解答:c,d,f,g
解説:
継承を正しく理解し設計しているかを問う問題です。
継承を使用して設計するには、
1.実装言語のサポート範囲
2.継承機構の正しい理解
3.継承のデメリット(メリットだけではなく)の理解
が欠かせません。
a.間違い。
b.間違い。VBAでは、そもそも継承がサポートされていない。(インタフェースの継承はサポートされている)
c.正しい。
d.正しい。言語はJavaとなっているのですが、一般に他の言語でも同様です。
e.間違い。言語はJavaとなっているのですが、一般に他の言語でも同様です。
f.正しい。スーパークラスとサブクラス間ではデータの可視性(情報隠蔽)が他と比べて甘くなるので結合度があがります。
g.正しい。結構見かける実装ですが、クラスの強度(凝集度)を考えると良くない設計です。操作の共通化はユーティリティクラスで行う、コンポジションを使うなどしてください。
このページを作成する際に参考にしたページや、もっと勉強したい人向けの資料です。
このページの利用によって発生した、いかなる損害について、このホームページの作成者は責任を負いません。
このページの間違いや嘘を見つけた方、このページに書いて欲しい情報がある方は
メール をお願いします。
Microsoft 、Windows 、Visual Basic および Excel は米国Microsoft
Corporationの米国およびその他の国における登録商標または商標です。
ここではExcel® をエクセル、Visual Basic® for Applications をVBAと表記する場合があります。
Mac 、Mac OS
、Mac OS
X は米国Apple
Computer,Inc.の登録商標または商標です。
OMG、UML、Unified Modeling Languageは、Object Management Groupの商標または登録商標です。
その他、社名および商品名、システム名称などは、一般に各社の商標または登録商標です。
このホームページの作成者はこれらの会社とはいっさい関係がありません。