オブジェクトの広場は株式会社オージス総研グループのエンジニアによる技術発表サイトです

モデリング

モデリングカフェ 第5回:すごろくをモデリングする

モデリングカフェ「Square」~UMLでモデリングを愉しもう~
(株)オージス総研 組み込みソリューション部
赤坂英彦
2006年4月6日

毎回、身近にあるモノや出来事など、簡単な【お題】を出題し、皆様にモデリングをして頂きます。次回の記事で、皆様の解答モデルの中から3つほど取り上げて、コメントを付けていくかたちで進めていきます。

目次
  1. 前回の問題(タイムテーブル)
  2. 読者解答モデル
  3. 解答例
  4. 今月号の問題 (出題)
  5. 解答モデルの送付について
  6. 参考文献
  7. Elapiz (いらぴす)当選者発表

1.前回の問題(タイムテーブル)

前回の問題をもう一度確認しておきましょう。

【お題04】タイムテーブル

2006 年 4 月 7 日(金)にダイエットセミナーが開催されます。 プログラムは次の通りです。

時間 「運動」トラック
( A 会場)
「食事」トラック
( B 会場)
「医療」トラック
( C 会場)
10:00 【A-1】脂肪を燃焼させる効果的な運動方法

奥下 博則 氏
【B-1】油の摂取量の上手なコントロール

高平 智恵子 氏
【C-1】体脂肪率と糖尿病の相関

東神 博 氏
12:00 -昼食- -昼食- -昼食-
13:00 【A-2】運動を継続する~生活の中の自然な運動

野岡 太郎 氏
【B-2】満腹感から満足感へ~食事の量を抑えるコツ

巻 栄二 氏
【C-2】摂食障害と心の病気

羽田 隆子 氏
15:00 【A-3】体脂肪率の変化と体重の増減

尾河 厚一郎 氏
【B-3】食事リハビリテーション

多上 恵子 氏
【C-3】生活習慣病のセルフチェック

出本 貞幸 氏

※全てフィクションです。実在の人物、研究、発表、その他とは一切関係ありません。

この例を参考に、セミナーのタイムテーブルをモデリングしてください。 不足する情報は適宜補っていただいて結構です。補った情報は、コンセプトに記述してください。

解答はクラス図で表現して下さい。クラスには必要な属性を、関連には多重度を明記するのがポイントです (解答時間の目安は15分~30分です)。

2. 読者解答モデル

今回も読者の皆様からたくさんの解答モデルを頂きました。ありがとうございます。 これまでと同じように、3つの解答モデルをピックアップして、当カフェのマスターとヒトクセある!?常連たちと一緒に見ていきましょう。 コーヒーなどを飲みながら、皆様も一緒にわいわいやる感じで考えてみてください。 また、残念ながら紹介することができなかった解答モデルはこちらに掲載しますので、 オブジェクトの広場 メーリングリストなどで意見交換していただければ幸いです。

読者解答1:松田 政博 様

コンセプト

  • ある時間とあるトラックに対して予定枠がある
  • セミナーも他予定も予定枠である
  • 予定枠に対してセミナーや、昼食のような予定を当てはめる

モデル

クラス図

図 1 松田 政博 様の解答モデル(クラス図)
図 1 松田 政博 様の解答モデル(クラス図)

オブジェクト図

図 2 松田 政博 様の解答モデル(オブジェクト図)
図 2 松田 政博 様の解答モデル(オブジェクト図)

感想

  • 難しかったところ
    • セミナーではない昼食のような予定の扱いをどのようにするか悩みました。
  • 自己評価
    • タイムテーブルを表現できていると思います。

コメント

マスター   タイムテーブルの縦軸(トラック)と横軸(時間)、セルがクラスになっていて、素直なモデルですね。
 
久本くん   シンプルで分かりやすいですね。
 
吉井さん   オブジェクト図がとても自然な感じです。タイムテーブルそのものに見えます。
 
唐沢さん   コンセプトについてはどうでしょう?
 
久本くん   コンセプトもシンプルですね。1文目がテーブルの特徴を言い当ててる気がします。
 
唐沢さん   そうだね。でも、最後の文章(3文目)がその前(2文目)とちょっと矛盾していないかな?
 
久本くん   2文目はセミナー、他予定が予定枠の種類だということですよね。
 
吉井さん   3文目は、予定枠に対してセミナー(など)を当てはめるとありますね。
 
唐沢さん   2文目では継承を用いて種類を表現することにつながるんだけど、
3文目では予定枠とセミナーが関連で結ばれそうな表現だね。
 
マスター   おそらく、予定枠のところはセミナーや昼食といったインスタンスになるという ことを言いたかったのだと思うよ。
 
吉井さん   たぶん、そうでしょうね。
 
唐沢さん   予定枠とセミナー(や他予定)を別の概念としても良いかもしれないですね。
 
マスター   それについては、マスターの解答例を参考にしてみてください。
それはさておき、シンプルでタイムテーブルの特徴をよく表現できているモデルでしたね。 

読者解答2:884 様

コンセプト

  • セミナは、1日で実施する。
  • トラック内のセッション(講演)は、同一会場で開催する。
  • 前のプログラムが終了したら、次のプログラムが開催される。
  • 昼食はプログラムの一部。休憩の一種として考える。

モデル

クラス図

図 3 884 様の解答モデル(クラス図)
図 3 884 様の解答モデル(クラス図)

オブジェクト図

図 4 884 様の解答モデル(オブジェクト図)
図 4 884 様の解答モデル(オブジェクト図)

感想

  • 難しかったところ
    • 連続するプログラムがかさならないように、前のプログラムの終了時刻が、 次のプログラムの開始時刻になるように表現するのが難しかった。
  • 自己評価
    • プログラムの時間的なつながりが、オブジェクト図でも再現できたので、 自分なりに満足できた。
    • 会場はトラックの属性でも良かったかもしれない。
    • 昼食は、休憩の属性に名前があれば、それで十分だったかもしれない。

コメント

久本くん   先ほどのモデルとは違うクラス構成になっていますね。
 
マスター   そうだね。セミナーを構成するトラック、プログラムという構造で表現されているね。
 
吉井さん   テーブルを縦に見ているんですね。
 
唐沢さん   きっとトラックを重視したんでしょうね。
 
マスター   それに「プログラムの時間的なつながり」を表現したモデルになっているね。
 
唐沢さん   プログラムの自己関連のところですね。
 
久本くん   これもセミナースケジュールが分かりやすいモデルですね。
 
吉井さん   「難しかったところ」のコメントにあるように、連続するプログラムを表現することで、 同一トラック内のプログラムの時間が重ならないことを表現しているんですね。
 
久本くん   なるほど~。着目しているところの違いがモデルの違いになっているんですね。
 
 
 
久本くん   ところで、このモデルにはプログラムの開始時間や終了時間が表現されていない気がします・・・。
 
唐沢さん   トラックの開始時間と、連続するプログラムの所要時間から求めらますよね。
派生属性として書いておいてもいいかもしれないですね(表記は「/開始時間」)。 

読者解答3:ピロイケ 様

コンセプト

  • 全体のタイムテーブルは会場ごとのタイムテーブルの寄せ集めである。
  • 数日間に渡って行われるセミナーのタイムテーブルを扱うことができる。
  • 休憩は昼食以外にも間に入れることがある。
  • 講演の開始時間は固定ではない(開催時期によって変わることがある)。

モデル

クラス図

図 5 ピロイケ 様の解答モデル(クラス図)
図 5 ピロイケ 様の解答モデル(クラス図)

オブジェクト図

図 6 ピロイケ 様の解答モデル(オブジェクト図)
図 6 ピロイケ 様の解答モデル(オブジェクト図)

感想

  • 難しかったところ
    • 講演の開催時間、場所が被らないことをどのように表現するのか
  • 自己評価
    • 講演の開催時間、場所が重ならないということまでは表現できていない。
      それ以外はタイムテーブルの内容を表現できていると思う。70点

コメント

吉井さん   このモデルは、会場(あるいはトラック)ごとの タイムテーブルの集まりとして表現されているんですね。
 
マスター   タイムテーブルの縦(列)の情報を中心に表現したものですね。
 
唐沢さん   横(行)の情報については、タイムテーブル同士の関係で表現されているんですね。
でも、タイムテーブル同士の関係ってあるんでしょうか?
 
吉井さん   右隣、左隣というロール名からすると、テーブルの物理的な関係を表現したかったんじゃないかな? 
 
マスター   もし、トラック同士に何か意味があるならこの形になるよね。
例えば、「運動トラック」を先に受講しないと「食事トラック」は受講できないみたいな関係があるとか。
 
久本くん   先ほどのモデルでは、セミナーという上位概念で複数のトラックを扱っていましたね。
 
吉井さん   そうですね。全体を示す概念を出すかどうかの違いですね。
 
 
 
久本くん   オブジェクト図をみるとすっきりして分かりやすいです。
 
吉井さん   うん。必要な情報が揃っている感じがします。
 
唐沢さん   でも、タイムテーブルとプログラムを開始時間がつないでいるのがちょっと気になります。
 
吉井さん   開始時間は単なるデータ要素なので「モノ-コト-モノ」の関係にはならないですね。
 
マスター   タイムテーブルが開始時間をキーにしてプログラムを引き当てる感じかな?
 
吉井さん   そうそう。開始時間(あるいは時間帯)を限定子で表現するといいかもしれないです。
 
図 7 限定子を使った表現(クラス図)
図 7 限定子を使った表現(クラス図)
 

3. 解答例

解答例としまして、当カフェのマスターのモデルを紹介致します。 コンセプト次第でモデルは変わりうるものですから、 正解としてではなく、1つの考え方としてご覧ください。

コンセプト

  • タイムテーブルは、時間帯とトラックによってコマが決まるもの
  • プログラムはコマに割り当てられる
  • タイムテーブル(を構成するトラック、時間帯、コマ)とプログラムは独立した概念と考えた

前提条件

  • 会場はトラックによって決まるものとして、トラックの属性とした
  • お昼休みなどの休憩時間については、プログラムが割り当てられていないコマで表現した

モデル

オブジェクト図

図 8 解答例 オブジェクト図
図 8 解答例のオブジェクト図
 

クラス図

図 9 解答例 クラス図
図 9 解答例のクラス図
 

4. 今月号の問題 (出題)

今月の問題です。モデリングの進め方については、第 1 回のモデリングの進め方を参照してください。

【お題05】すごろく

すごろくをモデリングしてください。

不足する情報は適宜補っていただいて結構です。補った情報は、コンセプトに記述してください。

お題(すごろく)
お題(すごろく)

解答はクラス図で表現して下さい。クラスには必要な属性を、関連には多重度を明記するのがポイントです (解答時間の目安は15分~30分です)。

5. 解答モデルの送付について

解答モデルの送付についてをご覧ください。
なお、今月号は第 5 回です。 締め切りは 2006 年 5 月 11 日 (木) です。

次号は、お休みします。解答例掲載は 6 月号 ( 6月上旬 ) になります。じっくりモデリングしてください。

読者プレゼント ~Elapiz (いらぴす) 要ります?キャンペーン~

先月号に引き続き、UML モデリングツールをお持ちでない方向けの読者プレゼントを実施しています。
弊社の UML モデリングツールである Elapiz スタンダードエディション の Elapiz Basic の正規ライセンス(\15,750 相当)を、 解答モデルをご送付いただいた方の中から、抽選で 3 名の方にプレゼントいたします。

解答モデルの送付についてをご覧いただき、是非ご応募ください。

現在、応募していただいた方の当選確率は、なんと 90 %です!

6.参考文献

本連載では、文献[1]をベースに、より気軽にモデリングを愉しんでいただけるテイストにしております。モデリングに関するしっかりした解説が欲しい場合には、以下の書籍をご覧になると良いと思います。

  1. 「思考系UMLモデリング即効エクササイズ モデ力を鍛える13の自主トレメニュー」、渡辺博之他、翔泳社
  2. 「UMLによるオブジェクト指向モデリングセルフレビューノート」、荒井玲子著、ディーアート
  3. 「UMLモデリングの本質」、児玉公信著、日経BP社

7. Elapiz(いらぴす)当選者発表

先月号の Elapiz Basic の正規ライセンスの当選者を発表いたします。おめでとうございます!!

  • どぅーしー 様

なお、当選者の方には、後日改めてメールにてご連絡いたします。お楽しみに!!

改訂履歴

  • サイトテンプレート変更に伴う変更(2018年3月)