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

モデリング

モデリングカフェ 第15回:おせちをモデリングする

モデリングカフェ「Square」~UMLでモデリングを愉しもう~
オージス総研 組み込みソリューション部
田中恒
2008年1月10日

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

目次
  1. 前回の問題(百貨店のフロア)
  2. 読者解答モデル - 本文で紹介できなかった解答モデル
  3. 解答例
  4. 今月号の問題 (出題)
  5. 解答モデルの送付について
  6. 参考文献
  7. Elapiz (いらぴす)当選者発表

1.前回の問題(百貨店のフロア)

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

【お題14】百貨店のフロア

百貨店「角井」のフロアガイドは以下のようになっています。

11Fレストラン和食 中華料理
10Fレストランフレンチ イタリアン
9F催事場各種催し物
8Fスポーツスポーツ レジャー
7F紳士服スーツ フォーマル
6F紳士服ヤング ミドル
5F婦人服キャリア フォーマル
4F婦人服ミセス コンテンポラリー
3F婦人服ヤング カジュアル
2F婦人雑貨シューズ バッグ 帽子
1Fファッションジュエリー アクセサリー 化粧品
B1F食品生鮮食料品 惣菜 ベーカリー 和・洋菓子

お題(百貨店のフロア)

各フロアには専門店が入っています。 百貨店のフロアをモデリングしてください。

不足する情報は適宜補っていただいて結構です。補った情報は、コンセプトに記述してください。 解答はクラス図で表現して下さい。クラスには必要な属性を、関連には多重度を明記するのがポイントです (解答時間の目安は15分~30分です)。

ポイント解説

このお題では多重度で悩まれた方が多いのではないでしょうか。

まずはお題を簡略化して素直に考えてみましょう。 3F~5F の婦人服売り場にのみ注目すると次のようになっています。

図 1 婦人服売り場(オブジェクト図)
図 1 婦人服売り場(オブジェクト図)
図 2 婦人服売り場(クラス図)
図 2 婦人服売り場(クラス図)

一見よさそうに見えます。 ですが、例えば以下のようなケースを考えるとどうでしょうか?

  • 4F は何を売っているのか知りたい。
  • フォーマルは何階で売っているのか知りたい。

もし、フロアガイドの利用者の立場から考えるのであれば、上記のようなケースを表現することは重要です。 でも、このモデルでは何も表現できていないと言えるでしょう。 図 1 でリンクを辿ってみてください。 「フロア」と「カテゴリ」のインスタンス間の関係は表現されておらず、互いを特定することはできません。

このモデルでの「フロア」「カテゴリ種別」「カテゴリ」に相当する概念の関係をどう整理するかが、このお題のポイントです。

2. 読者解答モデル

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

読者解答1:優雅さ30% 様

  • コンセプト
    • フロアには区画があり、その区画を占有するサービス提供場所があります。
    • 具体的なサービス提供内容としては、店、トイレ、階段などが挙げられます。
    • 以上のような、フロア-区画-サービス提供場所-店、というような階層構造。

    を意識してみました(後付けです)。

  • モデル
    • クラス図
      図 3 優雅さ30% 様の解答モデル(クラス図)
      図 3 優雅さ30% 様の解答モデル(クラス図)

  • 感想
    • 難しかったところ

      抽象化してみたものの、サービス提供場所の名前に困りました。 フロアとサービス提供場所の関連線は、視点によっては要らないかとも思います。

    • 自己評価

      ロール名もそれなりに書けたので、80 点です。

  • コメント
    マスター   物理的な側面に注目されているようですね。
     
    唐沢さん   ええ。「フロア」の属性に「広さ」がありますし、それを「区画」で区切っているとモデリングしています。
     
    久本くん   「トイレ」や「階段」を出されているのはうれしいですね。よくトイレを探すのにフロアの地図を見ます。
     
    マスター   百貨店は広いものですから、私もよく迷子になります。
     
    吉井さん   うん。「フロア」の地図に登場しそうなモノに注目してモデリングされているね。
     
    唐沢さん   ところで、「サービス提供場所」は場所で良いのでしょうか? 「区画」が場所の概念を含んでいるように思いますが。
     
    久本くん   「サービス提供場所」の属性に「広さ」があるから、面積があるものを表しているんですよね。
     
    マスター   言われてみれば、「サービス提供場所」には物理的な意味合いを強く感じますし、「サービス提供場所」のサブクラスが「店」というのは違和感がありますね。
     
    吉井さん   確かにそうだね。「区画」を占有するものだから、その「区画」にある設備なんかを表しているんだろうね。場所という名前は少し分かりにくくしているかもしれない。
     

     
    唐沢さん   婦人服や紳士服などを「フロア」クラスの「コンセプト」属性としているのはどう思われますか?
     
    マスター   フロアの別名やラベルのような位置付けかと思います。
     
    唐沢さん   フロアにどんな店を配置できるか、「コンセプト」属性と「店」クラスの「専門」属性の間にもう少し強く制約があるのではないでしょうか。
     
    マスター   紳士服のフロアは、紳士服に分類される「専門」しか扱わないということですね。
     
    吉井さん   その制約を表現するなら、「コンセプト」や「専門」をクラスにして「サービス提供場所」や「店」などとの関係を示した方が良いだろうね。
     
    久本くん   でも、モデルで表現しなければならない程、強い制約じゃないかもしれませんよ。実際の百貨店でもそんなに厳密じゃないですし。だいたいの目安程度で捉えても良いのではないですか?
     
    唐沢さん   そうですね。ラベルのような位置付けで捉えて良さそうです。
     

読者解答2:ロングテイル 様

  • コンセプト
    • 百貨店内にはカテゴリづけされたフロアが複数存在します。それらは、独自の時間帯に営業しています。
    • フロアは複数の店で構成されており、専門に応じた商品を販売しています。
  • モデル
    • クラス図
      図 4 ロングテイル 様の解答モデル(クラス図)
      図 4 ロングテイル 様の解答モデル(クラス図)

  • 感想
    • 難しかったところ

      物理的な構造ばかりなモデルになってしまった気がします。

    • 自己評価

      75 点です。

  • コメント
    マスター   先程と同様に、婦人服や紳士服を「フロア」クラスの「カテゴリ」属性で表現されています。
     
    吉井さん   うん。「店」クラスの「専門」属性も同じように考えているね。
     
    唐沢さん   「カテゴリ」と「専門」の関係が明示されていない点も同じです。
     
    久本くん   「フロア」に複数の「店」がある、この関係はとってもわかりやすいですね。
     
    唐沢さん   ええ。この「フロア」と「店」の関係は、最もシンプルで本質的な特徴でしょうね。まず、大きく変わることはないでしょう。
     

     
    マスター   「店」クラスの「店員数」属性や「フロア」クラスの「営業時間」属性など、ユニークで面白いですね。
     
    久本くん   「営業時間」って「百貨店」の属性じゃないですか?
     
    吉井さん   普通のフロアは夜8時まで営業で、レストランフロアだけ夜10時まで営業という場合もあるよ。
     
    久本くん   なるほど。そうですね。
     
    唐沢さん   モデル全体として、属性が雑多な印象を受けます。
     
    マスター   物事をいろいろな側面から見れているということでしょうか。
     
    吉井さん   その点は良いね。でも、モデルで押さえておきたいのはどの側面なんだろう?
     
    マスター   誰に何を伝えたいか、何を説明したいのか、ですね。
     
    唐沢さん   ええ。それを考えれば必要な属性と不要な属性が出て来るはずです。
     
    久本くん   そして、モデリングの途中でブレないように、コンセプトにしっかりと書いておくんですよね。
     

読者解答3:大元聡 様

  • コンセプト
    • 各フロアの専門店の構成をモデリングする。
    • フロア同士の構成をモデリングする。
    • フロアと専門店は、何らかのカテゴリ(食品とか化粧品とか)に属することをモデリングする。
  • モデル
    • クラス図
      図 5 大元聡 様の解答モデル(クラス図)
      図 5 大元聡 様の解答モデル(クラス図)

    • オブジェクト図
      図 6 大元聡 様の解答モデル(オブジェクト図)
      図 6 大元聡 様の解答モデル(オブジェクト図)

  • 感想
    • 難しかったところ

      時間をかけずになるべくシンプルに作ろうとしましたが、どうでしょうか。。

    • 自己評価

      カテゴリ、というか単なるラベルを持っているだけなのが良いのか悪いのか、自分でもわかりませんでした。

  • コメント
    唐沢さん   「フロア」「カテゴリ」「専門店」の関係ということは、何階で何を売っているのかに注目されているんですね。
     
    久本くん   そうですよね。百貨店のエレベーターで「6 階、紳士服売り場です」のようなアナウンスがありますね。
     
    マスター   「フロア」と「カテゴリ」の関係でそれが表されていますね。
     
    吉井さん   しかし、多重度に矛盾があるのが気になるなぁ。
     
    唐沢さん   ええ。ある「フロア」の「専門店」が複数の「カテゴリ」を扱っているなら、その「フロア」には複数の「カテゴリ」があることになるはずです。
     
    久本くん   「フロア」と「カテゴリ」の多重度がおかしいのではないでしょうか。
     
    吉井さん   クラス図からはそう見えるね。でも本当の問題はそこじゃないかもしれない。オブジェクト図を見てみよう。
     
    マスター   婦人雑貨やファッション、バッグやアクセサリ、両方とも「カテゴリ」クラスのインスタンスになっています。
     
    唐沢さん   つまり、「カテゴリ」クラスに2つの意味を持たせてしまっているということですね。
     
    マスター   これらは違うものと見るのが自然ではないでしょうか。それに、オブジェクト図のインスタンスの配置からは両者を区別しているように見えます。
     
    久本くん   そうですね。分けた方が良い気がします。
     
    吉井さん   うん。「カテゴリ」クラスが何を表すものなのか曖昧になっていて、それがクラス図の多重度の矛盾に出ているね。
     

     
    マスター   ある「専門店」が複数の「カテゴリ」を持つことがあるんですね。
     
    久本くん   確かに、シューズやバッグ、アクセサリなどいろいろなものを売っているお店がありますね。
     
    吉井さん   「カテゴリ」が複数の「フロア」にまたがる可能性が出てくるね。例えば、婦人服のフロアの店だけど一緒にバッグや帽子なども売っている場合なんかかな。バッグや帽子が婦人雑貨フロアと婦人服フロアにまたがる。その場合はまた難しくなるね。
     

3. 解答例

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

  

解答例1(基本形)

  • コンセプト

    フロアガイドの利用者の視点から、百貨店のフロアをモデリングする。 具体的には次の通り。

    • 「フロア」から、その「フロア」で販売している商品の「カテゴリ」が分かる。
      • 催事場の「フロア」など、「カテゴリ」がない「フロア」もある。
      • ある「フロア」が使用されていない状況(例えば、改装中)もある。

        → 「フロア」から見た「カテゴリ」の多重度が 0 の場合がある。

    • その逆に、購入したい商品の「カテゴリ」(シューズやカジュアルなど)から、それを販売している「フロア」(1F、2Fなど)が特定できる。
      • ある「カテゴリ」の「専門店」(1軒1軒のお店)は 1 つの「フロア」に集められているとする。つまり、「カテゴリ」は複数の「フロア」にまたがらない。
      • 婦人服と紳士服のヤングは異なるとする(婦人ヤングと紳士ヤング)。

        → 「フロア」の特定には婦人服や紳士服などは必要ない。「カテゴリ」が分かれば「フロア」が一意に特定できる。

    その他、以下を考慮する。

    • 各「専門店」には、それが扱う商品の「カテゴリ」が 1 つ設定されているとする。
    • 「フロア」は上下に 1 列に連なっている。一番上と一番下がある。

  • モデル
    • クラス図
      図 7 解答例1(基本形)のクラス図
      図 7 解答例1(基本形)のクラス図
    • オブジェクト図
      図 8 解答例1(基本形)のオブジェクト図
      図 8 解答例1(基本形)のオブジェクト図

  

解答例2(発展形)

  • コンセプト

    解答例1のコンセプトに加え、以下を考慮する。

    • スーツは紳士服である、のように、「カテゴリ」とその上位分類である「カテゴリ種別」(紳士服や婦人服、レストランなど)がある。

  • モデル
    • クラス図
      図 9 解答例2(発展形)のクラス図
      図 9 解答例2(発展形)のクラス図
    • オブジェクト図
      図 10 解答例2(発展形)のオブジェクト図
      図 10 解答例2(発展形)のオブジェクト図

  

解答例3(最終形)

  • コンセプト

    解答例2(発展形)のコンセプトに加え、さらに以下を考慮する。

    • 「フロア」には「カテゴリ種別」が設定されている。
      • ある「カテゴリ種別」が複数の「フロア」にまたがることがあるが、ある「フロア」に「カテゴリ種別」は 1 つとする。

        → 「カテゴリ種別」から「フロア」を見た場合、「カテゴリ」を特定しないと「フロア」が一意に決まらない場合がある。

        → 「フロア」-「カテゴリ」-「カテゴリ種別」の関連と同様の意味になるよう(矛盾しないよう)、限定子を用いる。

  • モデル
    • クラス図
      図 11 解答例3(最終形)のクラス図
      図 11 解答例3(最終形)のクラス図
    • オブジェクト図
      図 12 解答例3(最終形)のオブジェクト図
      図 12 解答例3(最終形)のオブジェクト図

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

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

【お題15】おせち

我が家のおせちは、毎年、次のようになっています。

一の重黒豆
数の子
ごまめ
紅白かまぼこ
いくら
二の重海老

昆布巻き
伊達巻き
栗きんとん
三の重サトイモ
たたきごぼう
金時人参
蓮根
こんにゃく
高野豆腐
しいたけ
お題(おせち)

余談ですが、それぞれの料理には願いが込められています。代表的なものは次の通りです。

黒豆無病息災の願い
数の子子孫繁栄の願い
ごまめ豊年豊作の願い
たたきごぼう開運の願い
昆布巻き慶事の願い
海老長寿の願い
きんとん財産、富を得る願い

以上を読んで、おせちをモデリングしてください。

不足する情報は適宜補っていただいて結構です。補った情報は、コンセプトに記述してください。 解答はクラス図で表現して下さい。クラスには必要な属性を、関連には多重度を明記するのがポイントです (解答時間の目安は15分~30分です)。

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

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

解答例掲載は 2008 年 3 月号 ( 2008 年 3 月上旬 ) を予定しています。

6.参考文献

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

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

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

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

  • 優雅さ30% 様
  • ロングテイル 様

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

改訂履歴

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