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

モデリング

モデリングカフェ 第20回(最終回):クラス図をモデリングする

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

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

目次
  1. 前回の問題(印鑑)
  2. 読者解答モデル
  3. 解答例
  4. 今月号の問題 (出題)
  5. 解答
  6. さいごに
  7. 参考文献

1.前回の問題( 印鑑 )

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

【お題19】印鑑

久本くんは「久本」と刻まれた印鑑を持っています。

  • 宅配便が届いたとき、配送記録書に1箇所押印しました。
  • アパートの賃貸契約のとき、契約書に3箇所押印しました。

この状況をモデリングしてください。

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

ポイント解説

どこをモデリングするか、いろいろ考えられるお題です。

印鑑と、押印してできる印の関係に注目するのが最も単純でしょう。 また、押印するという行為(事象、コト)をモデリングすることも考えられます。 その場合、何時、何に押印したのかが重要になってくるでしょう。 ビジネスのワークフローなどをモデリングしていると、何時、誰の押印をもらったかが必要になる場合があるかと思います。 その簡易版のイメージです。

押された印の場合も押印するという行為の場合も、それが持つ意味に注目することも出来るでしょう。 例えば、宅配便の記録書に押印するというのは「荷物を受領した」ことを認めるという意味です。 また、「荷物を届けた」ことの証明という意味にもなるでしょう。 先のワークフローを例にすれば、押印というのは「承認した」という意味などになります。

意味については、いろいろな広がりが考えられます。 例えば、実印(登録印)と認印の違いなどに注目すると、印鑑が持つ社会的な意味などがモデリングの対象になるかもしれません。 ただ、このお題からそこまでをモデリング対象にするのは広げすぎでしょうね。

いずれも場合も、実体としての印鑑そのものと、押印してできる印または押印するという行為を区別することがポイントです。

2. 読者解答モデル

いつものように、当カフェのマスターとヒトクセある!?常連たちと一緒に解答モデルを見ていきましょう。 コーヒーなどを飲みながら、皆様も一緒にわいわいやる感じで考えてみてください。

読者解答1: 楢崎 様

  • コンセプト

    印鑑には所有者を判別できる刻印がある。

    • 印鑑には日付も付加されているものがある。
    • 書類によって押印する回数が異なる。
    • 書類によって押印する場所が決められている。
    • 署名も必要。
    • 印鑑の種類によっては不可となるものがある。(アパートの賃貸契約書はシャチハタ不可)

  • モデル
    • クラス図
      図 1 楢崎 様の解答モデル(クラス図)
      図 1 楢崎 様の解答モデル - クラス図

    • オブジェクト図
      図 2 楢崎 様の解答モデル(オブジェクト図)
      図 2 楢崎 様の解答モデル(オブジェクト図)

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

      関連端名の付け方

    • モデルについて自己評価

      75 点

  • コメント
    久本くん   ふむふむ。所有者が印鑑を書類に押すんですね。
     
    マスター   そうですね。書類は「了承するもの」ということなので、押印して了承する、ということをモデリングされていますね。
     
    吉井さん   きっとそうだろうね。「書類」クラスに「押印○○」という属性が入っているし、「印鑑」クラスに日付が入っているからね。押印することに承認という意味を与えているのは興味深いね。
     
    唐沢さん   しかし、「押印」の表現は改善できます。
     
    久本くん   「印鑑」の属性に「日付」があるのってどういう意味ですか? 印鑑を作成した日でしょうか。
     
    唐沢さん   そこです。もし押印した日付だとすると、「印鑑」クラスにあるのはおかしいです。複数の書類に押印したときに問題になります。
     
    マスター   なるほど。「印鑑」クラスの属性ではなく、例えば「押印」クラスの属性になるということでしょうか。
     
    吉井さん   そう。押印というのは、「印鑑」クラスでもなく「書類」クラスでもなく、その間にある概念だね。
     
    ◇
     
    マスター   「印鑑」クラスの「種類」属性と「書類」クラスの「対応印鑑種別」のところは、同じ概念が複数のクラスに分散しているのではないでしょうか。
     
    唐沢さん   ええ。ノートで「印鑑の種類」として記述されていますが、これも工夫できます。
     
    久本くん   「種類」は「印鑑」それぞれの情報じゃない気がします。
     
    吉井さん   うん。「印鑑種類」というクラスを出せば整理できるんじゃないかな。「実印」とか「シャチハタ」なんかを表すクラスだね。
     
    唐沢さん   そして「書類」と「印鑑種類」の関連で「対応する」ことを表現すれば良いです。
     
    久本くん   なるほどです。
     
    マスター   承認についてや、押印すること、書類には押せる印鑑と押せない印鑑があることなど、目の付け所が良いですね。
     
    吉井さん   そうだね。切り分けて整理すれば良いモデルになるね。
     
    久本くん   ところで、「書類」から見た「印鑑」の多重度が"0"になっていますが・・・きっとミスですね。
     

読者解答2:きのっち 様

  • コンセプト
    • 持ち主は、印鑑を複数 or 0 個所持している
    • 状況によって、書類を選ぶ
    • 書類には押印箇所がある(ex 1箇所、2箇所)
  • モデル
    • クラス図
      図 3 きのっち 様の解答モデル(クラス図)
      図 3 きのっち 様の解答モデル(クラス図)

    • オブジェクト図
      図 4 きのっち 様の解答モデル(オブジェクト図)
      図 4 きのっち 様の解答モデル(オブジェクト図)

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

      状況をモデリングするというところが難しかったです。 コンセプトがなかなか決めにくかったです。

    • モデルについて自己評価

      50 点(100 点中)

  • コメント
    マスター   状況によって書類を選ぶ、というのが変わっていますね。
     
    吉井さん   そうだね。「状況」は何を表しているのかな。
     
    久本くん   印鑑を使う状況ってことですよね。
     
    唐沢さん   それはそうですが、例えば何かを承認する状況、契約する状況などが考えられるのではないでしょうか。
     
    マスター   オブジェクト図を見る限りですが、多少、漠然としている印象を受けますね。
     
    久本くん   やっぱり、印鑑を使う状況のことですよ。
     
    吉井さん   「状況」というと漠然としてしまうけど、注目しているのは何かをはっきりさせると良さそうだね。
     
    唐沢さん   承認や契約というのであれば、印にはどのような意味があるかという視点になります。
     
    マスター   押印という行為、もしくはコトに注目することもできるのではないでしょうか。
     
    久本くん   感想に『状況をモデリングするというところが難しかったです。 コンセプトがなかなか決めにくかったです。』とありますし、苦労されたんですね。
     
    吉井さん   そうだろうね。でも、そこに気付いているというのはすばらしいことだよ。
     
    唐沢さん   ええ。どういう「状況」だと何が大切なのか、注目すべきはどこなのかを考えることができます。
     
    マスター   なるほど。モデリングが難しいところは、漠然としたままになっていることが多いですね。裏を返せば、そこをしっかり検討すれば良いモデルになるということですね。
     
    ◇
     
    久本くん   「押印という行為」に注目したときって、「持ち主」が「書類」に「押印」するという関係になるんでしょうか?
     
    マスター   そうなるでしょうね。
     
    唐沢さん   モデルの抽象度という点で引っかかりがあります。
     
    久本くん   どういうことですか?
     
    吉井さん   「持ち主」が「内容」を「承認」するのが意味するところで、それを具象化したら「印鑑」を「書類」に「押印」するになるんじゃない?
     
    唐沢さん   ええ、そういうことです。意味するところと具体的なものが混在している印象を受けます。
     
    マスター   「押印という行為」と見る場合には、「持ち主」クラスの位置は少し違うかもしれませんね。
     
    久本くん   「印鑑」と「状況」(押印)に関連があるといいのかな。
     
    吉井さん   そうかもしれないね。
     

読者解答3:松田政博 様

  • コンセプト
    • 印鑑ごとに、本人認証、契約、受領確認などの用途種別がある。
    • 用途種別に対して、実際の使用場面が対応する。
    • 使用場面によっては、特定の印鑑を使わなければならない。
    • 印鑑を押す対象と個数は考慮しなかった。
  • モデル
    • クラス図
      図 5 松田政博 様の解答モデル(クラス図)
      図 5 松田政博 様の解答モデル - クラス図

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

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

      コンセプトがなかなか決まらなかった。

    • モデルについて自己評価

      印鑑を押す対象や個数を考慮すると、違ったモデルになったのでしょうね。

  • コメント
    マスター   モデルに書類がないのが特徴的です。
     
    久本くん   本当だ。コンセプトに『印鑑を押す対象と個数は考慮しなかった。』とありますね。
     
    吉井さん   そうだね。印鑑がどう使われるかに注目しているんだね。
     
    唐沢さん   「用途種別」クラスは深いと感じます。
     
    マスター   確かにそうですね。「本人であることの確認」のために印鑑が必要な場合や、「受領を確認した」印として印鑑が必要な場合があります。ただ、「契約」については少しすっきりしないものを感じませんか?
     
    唐沢さん   例えば、「内容に同意した」ではどうでしょう。
     
    マスター   それなら、他のインスタンスと一致するように思います。
     
    久本くん   「使用場面」クラスが分かるような分からないような・・・
     
    吉井さん   「契約」という場面で「内容に同意する」という用途で「印鑑」を使う、というのだとどう?
     
    久本くん   そういうことですか。
     
    ◇
     
    唐沢さん   「印鑑」クラスの「種類」属性は、「印鑑」クラスから切り出した方が良いと感じます。
     
    吉井さん   うん。検討の余地はあるね。
     
    久本くん   実際、印鑑には銀行印とか実印とかってありますよ。
     
    吉井さん   でも「印鑑」そのものに「銀行印」ですって書いてある訳じゃないよね。
     
    唐沢さん   口座を作るときに使ったから「銀行印」なのであって、「印鑑」そのものの性質ではないということです。
     
    マスター   なるほど。実印も、役場に登録することで初めて実印になりますね。
     
    久本くん   でも、「ゴム印」などは「印鑑」の属性として相応しくないですか?
     
    唐沢さん   印鑑の材質という意味なら相応しいです。用途によっては、特定の材質の印鑑は駄目などがありますから。
     
    吉井さん   そうそう。ちなみに、実印に使える印鑑にはいろいろと条件があるよ。印影の大きさとか材質とか。
     
    マスター   実印は本人であることの証明という意味がありますが、そこに注目すると証明にもいろいろありそうですね。
     
    久本くん   宅配便のときも本人が受け取ったという証明になりませんか?
     
    唐沢さん   ええ。しかし、本人の証明にも必要とされるレベルがあるということです。
     
    吉井さん   やっぱり、用途が重要になってくるね。
     
    マスター   そうですね。用途に注目されたというのはすばらしいと思います。
     

読者解答4:猫娘 様

  • コンセプト
    • 物理的な印鑑は人の所有物であり、承諾行為を行うための道具である。(道具には他にボールペンなどがある。)
    • 印は印鑑による生成物であり、承諾表現の1つである。(承諾表現には他にサインなどがある。)
    • どのような承諾表現が可能かは道具により決まる。道具は 0 個以上の承諾表現を生成できる。
    • 書類には 0 個以上の承諾表現が記される。
  • モデル
    • クラス図
      図 7 猫娘 様の解答モデル(クラス図)
      図 7 猫娘 様の解答モデル - クラス図

    • オブジェクト図
      図 8 猫娘 様の解答モデル(オブジェクト図)
      図 8 猫娘 様の解答モデル - オブジェクト図

  • 感想
    • 難しかったところ
      • 書類に押される「印」と人との関係をどう表現するかが難しかったです。

        物理的な「印鑑」と書類上の表現の「印」を分けて考えましたが、「印」に"種類"(認め印や銀行印)の属性を持たせ、統合しても良いような気がしました。 操作を考えたとき特にそう感じました。

      • うまくテーマの世界を絞れなかったところが難しかったです。

        「印鑑」の世界ではなく、「契約」のような世界を表現してしまった感じがしました。

    • モデルについて自己評価

      クラスの定義に疑問が残る点と、発散している点を考えて 60 点。

  • コメント
    マスター   「印鑑」と、それによって生み出される「印」が区別されていますね。
     
    吉井さん   そうだね。ちゃんと区別されていて良いね。
     
    久本くん   書類に押されるのは「印」であって、「印鑑」そのものが書類にくっつく?訳じゃないですね。
     
    マスター   感想にも『物理的な「印鑑」と書類上の表現の「印」を分けて』とあり、すばらしいと思います。
     
    唐沢さん   ただ、少し抽象化しすぎているかもしれません。筆で絵を生み出す、彫刻刀で彫刻を生み出すのように、何にでも当てはまってしまって、「印鑑」の性質を表すという範囲を超えています。
     
    久本くん   「道具」を使って「表現」を生み出すということですか。すごく哲学的ですね。
     
    吉井さん   そうだね。ただ、「印鑑」の特徴なのか?というと、少し疑問もあるよね。
     
    マスター   「道具」クラスというのが、一般化しすぎたのでしょうか。
     
    唐沢さん   恐らくそうです。
     
    ◇
     
    吉井さん   「承諾」という行為に着目しているのも面白いね。
     
    マスター   「承諾表現」として「印」や「サイン」があるというのはなるほどと感じました。特に西洋では「サイン」がよく用いられるようですし。
     
    久本くん   そういえば、映画とかでもあまり印鑑を押しているのを見ない気がします。さらさらっとサインするシーンはよく見る気がするのに。
     
    唐沢さん   そうですね。ところで、このモデルでは、2つの事柄がモデリングされていると感じます。
     
    久本くん   「印」と「サイン」ですか?
     
    マスター   違うのではないでしょうか。
     
    唐沢さん   「承諾」という行為と、承諾を表す「表現」をどうやって生み出すかです。
     
    吉井さん   そうだね。「承諾」とは何かということと、「印鑑」もしくは「印」というのは何かというのを切り分けて整理したら良さそうだね。
     
    唐沢さん   表現である「印」と、「承諾」という意味での「印」が混ざってしまったのでしょう。
     
    マスター   感想の『「印鑑」の世界ではなく、「契約」のような世界を表現してしまった感じがしました』というのは、そこから来ているんですね。
     
    久本くん   なるほど~。でも、切り分けるって難しいですよね。
     

3. 解答例

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

  

解答例

  • コンセプト

    「書類」にできる「印」は「印鑑」によって形が規定されると考える。

    • 「印」は複数箇所に押されることがあるが、その形は1つの「印鑑」によって決まる
    • 「書類」には複数の「押印箇所」がある(1つもない場合もある)
    • 「押印箇所」に「印」が押印される

  • モデル
    • オブジェクト図
      図 9 解答例のオブジェクト図
      図 9 解答例のオブジェクト図

    • クラス図
      図 10 解答例のクラス図
      図 10 解答例のクラス図

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

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

【お題20】クラス図

クラス図をモデリングしてください。

クラス図には、クラスやクラスの関係を記述します。

  • クラス図はシステム(物事)の静的側面を表したものです。
  • ・・・
  • クラスはシステム(物事)の静的要素を分類し、定義するものです。
  • クラスには属性があります。
  • ・・・
  • クラスの関係には関連や汎化があります。
  • ・・・

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

5. 解答

きっと、すぐにピンときた方もいらっしゃるでしょう。 このお題の解答は UML(のクラス図)のメタモデルとなります。 ここで言うメタモデルは、UML とはどういうものかを表したモデルということです。

さて、肝心の解答ですが、ここでは示しません。 以下をご参照ください。

また、メタモデルについて興味のある方は、以下もご覧下さい。

クラス図とは何か、クラスとは何かを考えることで、より一層モデリングへの理解が深まれば幸いです。

6. さいごに

3 年にわたって連載してきましたモデリングカフェ「Square」ですが、今回をもって終了いたします。 読者の皆様のご投稿によって支えられ、連載をここまで続けることができました。 この場をお借りして御礼を申し上げます。本当にありがとうございました。

連載は終了いたしますが、モデリングを練習する題材は身近にたくさん見つけられるかと思います。 本質的な特徴、変わらぬ構造は何か? 立場を変え、見方を変えれば変化するところはどこか? と考えることで、モデリングの力を伸ばすことが出来るでしょう。 そして、UMTP の試験などにぜひチャレンジしてみてください。 (ちょうど、今月号には『UMTP L3 試験いよいよ始動』という記事がありますね。)

また、モデリングの力を実務に役立てていただければ本当にうれしく思います。 "違い"に目を向けるのではなく"同じ"に目を向ける力、さまざまな視点から物事を見る力などは、いろいろなところで役立つことでしょう。

さいごに、もう一度お礼を申し上げます。ありがとうございました。

7.参考文献

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

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

改訂履歴

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