オブジェクト指向による 分析と設計

静的モデル3
戻る
6.1 販売の記録を残す
 まずは,販売から
商品
1
商品名
単価
導出:
金額
=the商品.単価×数量
*
明細
インスタンス:
ナックバーガー
ビッグナック
ナックシェーク
:
販売
*
数量
/金額
導出:
合計金額=Σ金額
販売日
/合計金額
まとめ
販売日
/合計金額
商品名
単価
1
*
販売
数量
/金額
客
{導出}
*
1
*
商品
1
*
*
1
客
1
静的モデル3
戻る
6.2 オブジェクト図で確認
 具体例を考えて
:商品
商品名= ナックバーガー
単価=90
:商品
商品名= ナックポテトS
単価=150
:商品
商品名= ナックシェーク
単価=200
:販売
数量=2
金額=180
:まとめ
販売日=021105
/合計金額=530
1:客
:販売
数量=1
金額=150
:販売
数量=1
金額=200
:販売
数量=1
金額=90
:まとめ
販売日=021106
/合計金額=290
2:客
:販売
数量=1
金額=200
2
静的モデル3
戻る
6.3 毎日の商品別売上が必要(1)
 ある日の商品別売上合計を計算する
 日別の「売上」型を設ける
 「売上」は導出型
商品
商品名
単価
1
*
販売
数量
金額
*
1
まとめ
販売日
/合計金額
1
*
/売上
日
/売上金額
導出:
この売上金額は,the商品.the販売とナビ
ゲートして得られる販売オブジェクトの集合の
うち,それぞれのtheまとめオブジェクトの販売
日が,この売上オブジェクトの日と一致するも
のについて,金額を合計して得る
3
静的モデル3
戻る
6.3 毎日の商品別売上が必要(2)
 オブジェクト図
:/売上
:商品
日=021105
/売上金額=180
商品名= ナックバーガー
単価=90
:/売上
:商品
日=021106
/売上金額=90
商品名= ナックポテトS
単価=150
:商品
商品名= ナックシェーク
単価=200
:販売
数量=2
金額=180
:まとめ
販売日=021105
/合計金額=530
:販売
数量=1
金額=150
:販売
数量=1
金額=200
:販売
数量=1
金額=90
:まとめ
販売日=021106
/合計金額=290
:販売
数量=1
金額=200
4
静的モデル3
戻る
6.4 それをカテゴリ別にも(1)
 ある日の商品別売上をカテゴリ別に集計する
インスタンス:
バーガー
ドリンク
:
メソッド:
日を引数とし,the商品.the売上とナビゲートして
得られる売上オブジェクトの集合のうち,それぞれ
の日が引数の日と一致する分について,the売上.
売上金額を合計したものを返す
カテゴリ
名称
売上集計()
1
*
商品
{導出}
商品名
単価
1
*
販売
数量
/金額
*
1
まとめ
販売日
/合計金額
1
この関連は,必要な都度,導
出すればよい。常にカテゴリ
が/売上を知っていなければ
ならないわけではないので冗
長
*
*
/売上
日
/売上金額
導出:
この売上金額は,the商品.the販売とナビ
ゲートして得られる販売オブジェクトの集合の
うち,それぞれのtheまとめオブジェクトの販売
日が,この売上オブジェクトの日と一致するも
のについて,金額を合計して得る
5
静的モデル3
戻る
6.4 それをカテゴリ別にも(2)
 オブジェクト図
売上集計(021105)
:/売上
:商品
日=021105
/売上金額=180
商品名= ナックバーガー
単価=90
:client
1:カテゴリ
名称=フード
result=330
:/売上
日=021105
/売上金額=150
:商品
商品名= ナックポテトS
単価=150
:/売上
日=021106
/売上金額=300
:商品
商品名= ナックシェーク
単価=200
2:カテゴリ
名称=ドリンク
6
静的モデル3
6.5 少しだけ商品を作りおきするとして
 作りおきがあれば,そこから出庫する
戻る
カテゴリ
名称
売上集計()
1
*
商品
在庫を導出の型とすることも
あるが,このケースでは,現
時点での在庫量がわかれば
よいので,商品の導出属性と
する
商品名
単価
/在庫
1
*
販売
数量
/金額
*
1
まとめ
販売日
/合計金額
1
*
/売上
日
/売上金額
導出:
この在庫は,新たな販売オブジェクト
が生成されたときに,以前の在庫値か
らthe販売.数量を差し引いたもの
7
静的モデル3
戻る
6.6 入庫と出庫
 現時点での在庫がわかるように
 入庫の情報を加える
一度に複数の商品を作りだ
めしようとする場合は要る
カテゴリ
名称
売上集計()
製造
* 数量
1
商品
商品名
単価
/在庫
1
製造まとめ
*
1
まとめ
製造日
製造日
1
*
*
1
*
販売
数量
/金額
販売日
/合計金額
1
*
/売上
日
/売上金額
導出:
この在庫は,販売オブジェクトが生成さ
れたときに,以前の在庫数量からthe販売.
数量を差し引いたもの,また,製造オブ
ジェクトがときに,以前の在庫数量にthe製
造.数量を加えたもの
8
静的モデル3
戻る
6.7 鮮度が命
 作りおき分は10分経っても売れなければ捨てる
 現物の管理
 期限の管理
 販売予測
カテゴリ
この関連が導出されるので,
the商品.在庫の導出ルール
はそのままでよい
名称
売上集計()
1
*
/売上
日
/売上金額
*
1
商品
1 {導出} *
商品名
単価
/在庫
1
1
*
ロット番号
/賞味期限
数量
1 /金額
*
1
まとめ
販売日
/合計金額
{導出}
*
*
現物
導出:
賞味期限は,the製造の
製造日時+10分
販売
*
1
製造
数量
製造日時
廃棄は,マイナス数
量で表すことで,在
庫のつじつまを合わ
せる
どれを廃棄するかを見定めるため,1つひと
つの商品を区別する必要が出てきた
9
静的モデル3
戻る
6.8 利益はどうなっているの
 利益(粗利)は売上高から製造原価を引いたもの
導出:
この製造原価は,the商品.the製造とナビ
ゲートして得られる製造オブジェクトの集
合のうち,それぞれの製造日時の日が,こ
の売上オブジェクトの日と一致するものに
ついて,その数量を合計したものにこの原
価を乗じて得る
カテゴリ
名称
売上集計()
1
*
商品
/売上
日
/売上金額
/製造原価
/利益
*
1 {導出} *
商品名
単価
原価
/在庫
1
1
導出:
利益=売上金額-製造原価
数量
/金額
{導出}
*
1
まとめ
販売日
/合計金額
廃棄をマイナス数量で表す
ことにすると,製造原価が減
ることになって,おかしい
*
*
現物
ロット番号
/賞味期限
販売
*
1
製造
数量
製造日時
10
静的モデル3
戻る
6.9 ちょっとかっこよく
 汎化も使ってみて
導出:
この製造原価は,the商品.theEntryとナビ
ゲートして得られるEntryオブジェクトの集
合のうち,それぞれのtheTransactionのタイ
プが「製造」または「廃棄」で,その日時の
日が,この売上オブジェクトの日と一致す
るものについて,その数量を合計したもの
にこの原価を乗じて得る
カテゴリ
名称
売上集計()
1
*
商品
/売上
日
/売上金額
/製造原価
/利益
1
1 {導出} *
商品名
日 単価
原価
/在庫
移動量
数量
/金額
*
1
できごと
日時
1
1
消費税はどうす
る
限定子を使ってみた
*
現物
ロット番号
/賞味期限
*
廃棄
製造
販売
/合計金額
11