Skip to content

パターン編(1) 注文書を表現するヘッダー明細パターン


業務上非常によく出てくるパターンとして「ヘッダー明細」を取り上げます。基本編(1) まずはクラス図の「顧客ー注文」の先にあるものです。


[スクリプト]
モデリングしてますか?

このビデオシリーズ、パターン編の第1回目は、ヘッダー明細パターンというのを、やってみたいと思います。
このパターンは非常に、よく使われるので、色々な場面で出てきます。


AYM「注文」のパターンを考える


今回は、前回基礎編でご説明した「クラス図」で出てきた、「顧客」やそれに対する「注文」がありましたね。
その「注文」を、詳しくみていきたいと思います。

前回の通り、「顧客」には「名前」と「メールアドレス」があって「注文」には、「日付」があり「金額」がありますね。
このような描き方になっていますが、一般的に、「注文」というのは複数の商品からなっていますよね。

「注文書」を思い浮かべてください。

a

よくビジネスで使われているので、皆さん、当然見た事があると思いますが、注文書には、お客さまの名前、件名があり、金額があります。メールアドレスや電話番号もあると思います。そして上部には、注文の日付がありますね。それから注文の番号があります。

次に、自分の会社の名前があって、下部には合計金額の内訳があります。内訳として、品名、単価、数量、金額があります。

つまり、この例でいくと、「ロゴマークデザイン」というデザイン料として単価が1万円、数量が1ケ、金額が1万円となり、「タオル」の単価が1000円が10ケで2万円となっています。それで、金額の欄を足したものが、合計の金額となっているわけです。


AYM注文書をモデリングしてみる


非常によく出てくるフォーマットと思いますので、これをモデリングしてみたいと思います。

この「注文」の中に「金額」がありますが、「金額」の下をみていくと、1行1行クラスとして表現しています。
その1行の事を、「注文行」という事もありますし、「注文明細」と呼ぶ事もありますね。そこには、「単価」があって、「数量」があります。「注文」は、「注文明細」を保持していますよね。b

もし「注文」がなくなれば、「注文明細」の意味が無くなるわけですから、正確に描くと、「注文」の多重度は1になります。
「注文」には、複数の「注文明細」があり、そして「注文明細」に「単価」と「数量」があり、これを掛け算したものが、1つの行の
商品に対する金額になります。

これを足し合わせたものが、注文全体の金額になるというパターンになっています。この強い保持している関係を、UMLでは「コンポジット」という黒い四角で表します。

このように全体があって、部分が行に分かれていて、それぞれの行の合計が、全体になっている、というのをヘッダー明細パターンと
呼んで、注文も、注文明細も、例えば見積もりや、売上に対して、このようなパターンが成り立ちます。

もう1度、先ほどの注文書で復習すると、1行1行書かれているものが、注文明細になるんですね。
「商品」という概念があって、「商品」との関係を描くことによってもう少し注文書全体を、細かくみていきたいと思います。


AYMまとめc


このようなUMLを使ったパターンは、多く本が出ていますので、また次回紹介したいと思います。
例えば、細川さんが書かれた、「UMLによる一気通貫DBシステム設計 (DB Magazine SELECTION)」という本でも、パターンについて紹介されています。

今回のようなパターンを知っておくと、実際のモデリングに、非常に役立つと思います。
では、次回、全体像を見ていきましょう。それでは。

Advertisements

1 Comment »

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s

%d bloggers like this: