今回は、前回取り上げた架空の宅配便会社「まいにち宅配便」の業務について、UML図のうち、構造図に属するオブジェクト図とクラス図を用いて人・役割・場所を中心にモデリングを行っていきます。

オブジェクト図によるモデリング

アクティビティ図は、UMLの図の中では「振る舞い図」に分類されます。次は、振る舞い図と同レベルの分類に相当する「構造図」を用いてモデリングしてみましょう。

今回の例では、業務フローのパーティション(役割単位で分割した領域)に設定されている「依頼主」「配達員」「届け先」などの人(役割)、「取次店」「営業所」「ターミナル」などの場所が構造図のモデリング要素になります(アクティビティ図はこちらで確認ください)。構造図ではこれらモデル要素の構造・関係などをモデリングすることになります。

まずは、構造図のうち、「オブジェクト図」を用いてモデリングします。
人・役割・場所を中心に分析してみると、「まいにち宅配便」のモデル要素間には次のような関係があることがわかります。

  • 全ターミナル間に配送元と配送先の関係がある
  • 営業所からの配送先は特定のターミナルになる
  • 配達員はある特定の営業所に所属する
  • 取次店はある特定の営業所の管轄になる
  • 依頼主は配達員に荷物を取りに来てもらえる
  • 依頼主は任意の取次店・営業所に荷物を持ち込める

これらの関係をオブジェクト図で示したのが図1です。オブジェクト図は上記のような関係をそのままスケッチしたような図で、ある時点でのモデリング要素(インスタンス仕様)と要素間の関連(リンク)を示したものです。このオブジェクト図は後述するクラス図を作成する上での手助けになります。オブジェクト図では、まだ「依頼主」「届け先」とその他のインスタンスの関係が不明ですね。クラス図を作成して、もう少し分析してみましょう。

図1 オブジェクト図による人・役割・場所のモデリング

クラス図によるモデリング

クラスとは同じ性質のオブジェクトを分類したもので、クラスの構造・関係に着目して図にしたものがクラス図です。クラス図は、UMLの図の中で最も使われており、オブジェクト指向の特徴を顕著に表している図になります。

前述の要素をクラス図で示したものが図2です。オブジェクト図では複数存在した営業所が1つになっています。なぜなら、これは個々の営業所を表しているのではなく、営業所という同じ性質を持ったオブジェクトを分類した「クラス」とその他のクラスとの間にどのような関係があるのかを示したものだからです。図2では、営業所とターミナルの間に線が引かれています。この線を「関連」と呼びます。関連の端に「1..*」や「1」などと書かれているのが「多重度」です。図4では、営業所から見るとターミナルは配送先に対して必ず1つは存在し、また、ターミナルから見ると管轄営業所が複数あることを示しています。多重度の書き方は表1を参考にしてください。

図2 クラス図による人・役割・場所を中心としたモデリング

表1 クラス図で指定可能な多重度

標記

意味

1

1

*

0以上

0..1

0か1

0..*

0以上

0..任意の整数

0から指定した任意の整数まで
例:0..3

1..*

1以上

1..任意の整数

1から指定した任意の整数まで

任意の整数..*

任意の整数以上

任意の整数..任意の整数

任意の整数から任意の整数まで

少々紛らわしいのがターミナルからぐるっと自身に向けて引かれた関連でしょう。これは同じターミナルでも異なる場所に存在するターミナルとの関連を示しています。あるターミナルには複数の配送先ターミナルが存在すること、あるターミナルには複数のターミナルから荷物が配送されてくることを示しています。このように関連の意味がわかりにくいものには、関連の端に「関連端名」を付けるべきです。

ところで、図1のオブジェクト図において「依頼主」はどこの場所にも荷物を持ち込めるので、特定のオブジェクトとのリンクを結んでいませんでした。しかし、「依頼主」と「取次店」「営業所」の間には、荷物を持ち込む以外にも関係があります。それは荷物を引き取りに来てもらうという関係です。同じく「届け先」には、営業所から荷物を配達してもらうという関係があります。これらの関係を取り持つクラスが「地域」です。「依頼主」や「届け先」の居住地が営業所の担当範囲に存在するという関係があるので、集荷や配達をしてもらえるのです。これらを反映したクラス図を図3に示します。

図3 「依頼主」を含んだ人・役割・場所を中心としたクラス図

『出典:システム開発ジャーナル Vol.2(2008年1月発刊)
本稿は原稿執筆時点での内容に基づいているため、現在の状況とは異なる場合があります。ご了承ください。