本連載では、UMLでモデリングを行う方法を解説しています。前回は、オブジェクト図を用いて人・役割・場所のモデリングを行いました。今回は、クラス図を用いて物・事にフォーカスしたモデリングを行います。

実のところ、「物」は比較的簡単に見つかります。業務フローから、「荷物」「依頼元控」などの伝票群がクラスとして挙げられます。

それでは「事」とは何でしょう。私たちは日常生活やビジネスの中で目に見えない概念を扱っています。例えば、「注文」や「出荷」などが代表的な例です。注文は売り手と買い手の間で交わされる約束で、商店街の八百屋さんでは言葉で交わされるだけかもしれませんが、会社と会社の間ではその約束を記録に残すために注文書が作成されます。また、出荷は注文された商品を依頼主に納品するために倉庫から出して配送するという活動で、出荷伝票として記録されます。これらの活動や約束などの事象は業務上管理する必要があり、その事象と関連する人、物、役割との関係を整理することもモデリングの重要な目的です。

では、「まいにち宅配便」の業務の中で「事」に当たる概念は何でしょうか。まず挙げられるのが「宅配」というサービスです。宅配便会社は、この宅配によって収益を得ており、小売りで言えば商品に当たります。「宅配」には価格が設定されており、この単位で売上が計上されます。宅配サービスは、普通の荷物の宅配のほか、クール便やゴルフ便などのサービスがあり、そのサービスや宅配する荷物の大きさ、重さによって料金が異なってきます。

図6に「物」「事」を中心にしたクラス図を示しました。先に「物」である「伝票」と「荷物」から見てみましょう。荷物には伝票が添付されています。皆さんも宅配便の伝票を見たことがあると思いますが、複写式になっており、依頼主控や配達票などから構成されています。図6ではこの関係を「コンポジション」と呼ばれる関連で表現しています。コンポジションは、端に黒塗りの菱形が付いた線で表され、菱形のある方のクラスが他方のクラスを包含していることを意味しています。

図1 「物」と「事」を中心としたクラス図

続いて「事」に当たる「宅配」について説明します。宅配と荷物の関係が1対nになっているのは、1回の宅配依頼で複数個口の荷物もあり得るからです。この場合、伝票が張られていない2個目以降の荷物には複数個口用のラベルが張られます。図6の{xor}という標記は「制約」を表しており、どちらかの関連のみが存在することを意味します。制約の書き方は決まっていますが、「ノート」を使って自由に書くことをお勧めします。

「不在票」は他の伝票と異なり、「宅配」と関連付けられています。これは不在票が荷物に添付されるのではなく、届け先が不在の時に配達員によって起票されてポストに投函されるものだからです。また、不在票は何枚も発行されることがあり得るので、多重度が「0..n」になっています。

宅配クラスと△の矢印を介して線で結ばれているクラスがありますが、これらは宅配のバリエーションを表しているものです。このような宅配とクール便のような関係を「汎化」と呼び、クール便は宅配を「継承している」とも言います。言葉通り、クール便は宅配の一種で、クラスとしてその性質を継承していることを表します。この関係は「is-a」関係とも言われ、この関係が成り立つ時は「(継承している)クラスは(継承されている)クラスである」という文書が成り立ちます。図6を例にとれば、「ゴルフ便は宅配である」「クール便は宅配である」となります。

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