作成日 2011/1/3
最終更新日 2011/1/3

問題2.8(問題タイトル:継承)

オブジェクト指向設計についての問題(中級レベル)です。

問題タイトル:継承
重要度:★★★★☆(やや重要)
難易度:★★★★☆(やや難しい)


1.問題
2.解答・解説
3.参考文献


1.問題

問題タイトル:継承
重要度:★★★★☆(やや重要)
難易度:★★★★☆(やや難しい)

問題: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.スーパークラスに各あるサブクラスが共通で使いそうな操作を定義すると、スーパークラスのの強度(凝集度)が悪くなりがちなので注意が必要である。

問題文終わり

このページのトップへ












注意:これ以上、下にスクロールすると解答・解説が見えちゃいます。

2.解答・解説

解答:c,d,f,g
解説:
 継承を正しく理解し設計しているかを問う問題です。
 継承を使用して設計するには、
 1.実装言語のサポート範囲
 2.継承機構の正しい理解
 3.継承のデメリット(メリットだけではなく)の理解
が欠かせません。

 a.間違い。
 b.間違い。VBAでは、そもそも継承がサポートされていない。(インタフェースの継承はサポートされている)
 c.正しい。
 d.正しい。言語はJavaとなっているのですが、一般に他の言語でも同様です。
 e.間違い。言語はJavaとなっているのですが、一般に他の言語でも同様です。
 f.正しい。スーパークラスとサブクラス間ではデータの可視性(情報隠蔽)が他と比べて甘くなるので結合度があがります。
 g.正しい。結構見かける実装ですが、クラスの強度(凝集度)を考えると良くない設計です。操作の共通化はユーティリティクラスで行う、コンポジションを使うなどしてください。

このページのトップへ

3.参考文献

 このページを作成する際に参考にしたページや、もっと勉強したい人向けの資料です。

番号

リンク先の名称

リンク先の説明

リンクした日

1 継承 - だるまのエクセルVBA オブジェクト指向の3大要素の1つである継承について使用上の注意です。 2011/1/3
2 オブジェクト指向とモジュールの凝集度、モジュールの結合度 - だるまのエクセルVBA オブジェクト指向を理解するうえで、凝集度と結合度の理解は欠かせません。 2011/1/3

Prev Up Next  Top
このページのトップへ


このページの利用によって発生した、いかなる損害について、このホームページの作成者は責任を負いません。
このページの間違いや嘘を見つけた方、このページに書いて欲しい情報がある方はメールをお願いします。

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の商標または登録商標です。
その他、社名および商品名、システム名称などは、一般に各社の商標または登録商標です。

このホームページの作成者はこれらの会社とはいっさい関係がありません。