作成日 2010/10/17
最終更新日 2010/12/28

問題1.17(問題タイトル:限定子)

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

問題タイトル:限定子
重要度:★★★★☆(やや重要)
難易度:★★★☆☆(普通)


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


1.問題

問題タイトル:限定子
重要度:★★★★☆(やや重要)
難易度:★★★☆☆(普通)

問題:  以下のプログラム(JavaまたはVBA)があるとき、それに対するクラス図として最も適切なものをa〜dのうちから1つ選べ。

プログラム(Java)
/** 健康診断結果リスト */
public class HealthResultList {
    /**
     * 健康診断結果
     * キー:受診者の番号(no)(文字列)
     * 値:受診結果(Healthオブジェクト)
     */

    private java.util.Map healthResult;

    // ※getter,setterは省略
}

/** 健康診断結果 */
public class Health {
    /** 身長 */
    private int height;
    /** 体重 */
    private int weight;
    /** 視力 */
    private int eyesight;
    /** 聴力 */
    private int hearing;
    /** 最大血圧 */
    private int systolicBloodPressure;
    /** 最低血圧 */
    private int minimalPressure;
    /** 血糖値 */
    private int bloodSugarLevel;

    // ※getter,setterは省略
}


プログラム(VBA)
HealthResultList(クラスモジュール)
'' 健康診断結果リスト
'

Option Explicit

''
' 健康診断結果
' キー:受診者の番号(no)(文字列)
' 値:受診結果(Healthオブジェクト)

Private healthResult As Collection

' ※getter,setterは省略
Health(クラスモジュール)
''健康診断結果
'

Option Explicit

'' 身長
Private height As Integer
'' 体重
Private weight As Integer
'' 視力
Private eyesight As Integer
'' 聴力
Private hearing As Integer
'' 最大血圧
Private systolicBloodPressure As Integer
'' 最低血圧
Private minimalPressure As Integer
'' 血糖値
Private bloodSugarLevel As Integer

' ※getter,setterは省略

 a.
  
   ※VBAの場合はHealthResultListクラスのhealthResult属性の型はCollection。それと、その他、intとか、細かいところは目をつぶってください。
 b.
  
 c.
  
 d.
  

問題文終わり

このページのトップへ












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

2.解答・解説

解答:d
解説:
 限定子は意外と使用されます。この問題は限定子の意味を正しく理解しているかを確認する問題です。
 ちなみに、Javaのバージョンが5以上であればMapはMap<String,Health>と書けますが、あえてやってません。

 a:問題タイトルに「限定子」と書いたので、限定子を使用していないこの図を選択した人はいないと思うが・・・。
  この図は意味的には間違っていないです。しかし、適切かどうかというと、そうではないのでダメです。
  ちなみに、これ、ソースからクラス図を描かせると、本当にこのように書く人がいる。
  これだと、クラス間の関連が見えなくなるからダメなんです。

 b:これも、限定子を使用していないので、選択した人はいないと思いますが・・・。
  意味的に間違っていませんが、Javaの場合Mapかどうかわかりません(VectorでもOKになってしまう)。キーに関する情報も消えています。
  VBAの場合、Collectionは連想配列ではなく可変表配列としても使用できるのですが、連想配列として使用することが伝わりません。

 c:これは意味的に間違っている。多重度が「0..*」だと、1つのキーに複数のオブジェクトが関連するという意味となってしまうのでダメです。

 d:正しいし、a,bよりも適切。

 ちなみに、今回の図は誘導可能性が未定義になっていますが、入れると以下のようになります。
(何でこの図を出すかと言うと、誘導可能性はクラス図の読みやすさと言う点から、結構重要だから)
 
このページのトップへ

3.参考文献

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

番号

リンク先の名称

リンク先の説明

リンクした日

1 配列 - だるまのエクセルVBA 使用頻度の高い固定長配列、可変長配列、連想配列について説明しています。 2010/10/17

番号

著者名

書籍名

ISBN

1 オージス総研オブジェクトの広場編集部、山内 亨和 その場でつかえるしっかり学べるUML2.0 978-4798012391


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の商標または登録商標です。
Sun、Sun Microsystems、サンのロゴマーク、Java、及び、Sun/Solaris/Java に関連するすべての商標およびロゴマークは米国 Sun Microsystems, Inc. の米国およびその他の国における商標または登録商標です。
その他、社名および商品名、システム名称などは、一般に各社の商標または登録商標です。

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