1 / 16

オブジェクト指向モデリング [7]

47070. オブジェクト指向モデリング [7]. 2001 年 11 月 12 日. オブジェクト指向モデリング. 前回 クラス図を書いてみよう. 6.0 ファーストフード店 6.1 販売の記録を残す 6.2 オブジェクト図で確認 6.3 毎日の商品別売上が必要 6.4 それをカテゴリ別にも 6.5 少しだけ商品を作りおきするとして 6.6 入庫と出庫 6.7 鮮度が命 6.8 利益はどうなっているの 6.9 ちょっとかっこよく 6.10 これで何が書けたことになるか. インスタンス:  バーガー  ドリンク      :.

zilya
Download Presentation

オブジェクト指向モデリング [7]

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 47070 オブジェクト指向モデリング[7] 2001年11月 12日

  2. オブジェクト指向モデリング 前回 クラス図を書いてみよう 6.0 ファーストフード店 6.1 販売の記録を残す 6.2 オブジェクト図で確認 6.3 毎日の商品別売上が必要 6.4 それをカテゴリ別にも 6.5 少しだけ商品を作りおきするとして 6.6 入庫と出庫 6.7 鮮度が命 6.8 利益はどうなっているの 6.9 ちょっとかっこよく 6.10 これで何が書けたことになるか

  3. インスタンス:  バーガー  ドリンク      : メソッド:  日を引数とし,the商品.the売上とナビゲートして得られる売上オブジェクトの集合のうち,それぞれの日が引数の日と一致する分について,the売上.売上金額を合計したものを返す カテゴリ 名称 売上集計() 1 * 商品 販売 まとめ 1 1 * * {導出} 商品名 単価 数量 /金額 販売日 /合計金額 1 この関連は,必要な都度,導出すればよい。 * 導出:  この売上金額は,the商品.the販売とナビゲートして得られる販売オブジェクトの集合のうち,それぞれのtheまとめオブジェクトの販売日が,この売上オブジェクトの日と一致するものについて,金額を合計して得る * /売上 日 /売上金額 静的モデル3 6.4 ファーストフード店の概念モデル

  4. オブジェクト指向モデリング 第7回 概念モデルから実装まで 7.1 実装作業の概要 7.2 ユースケース 7.3 実装レベルのクラス図 7.4 シーケンス図 7.5 実装のクラス図 7.6 ソースプログラム

  5. 方向づけ 推敲 構築 移行 分析 設計 制作 検査 静的モデル4 7.1 実装作業の概要 • ドメインの実装 • 機能の実装 • アーキテクチャの実装 • レイヤー構造 • 役割の分担 ユーザインタフェース アプリケーション(機能) アプリケーション(機能) ドメイン(概念の世界) ドメイン(概念の世界) 永続化 概念レベル 実装レベル

  6. 静的モデル4 7.2 ユースケース(1) • ユースケースは要求記述 現実の世界 ①窓口で客がメニューに基づいて商品を 注文する ②受注担当が注文を聞いて,キッチン担 当に渡す ③客は注文品ができるまで,窓口で待つ ④受注担当は,料金を計算し,請求する ⑤客は料金を支払う ⑥客はできあがった商品を受け取る ユースケースの例 名称:販売する アクタ:受注担当 事前条件:その商品は販売された記録はない 基本系列:  ①アクタがこのユースケースを起動する  ②システムはアクタに注文を入れるよう促す  ③アクタはシステムに商品名と数量を提示する  ④システムはそれが販売されたことを記録する 事後条件:その商品を販売したことが記録されて いる 備考:  ①1度の取引に複数の商品が関わることがある ②注文が終わると,システムは料金を表示する

  7. 販売する 受注担当 商品別に売上集計する カテゴリ別に売上集計する 店長 製造する キッチン担当 静的モデル4 7.2 ユースケース(2) • ユースケースによる型モデルの検証 • シーケンス図,協調図の始点

  8. カテゴリ 名称 売上集計() 1 * Category 商品 販売 まとめ 1 1 * * 商品名 単価 数量 /金額 販売日 /合計金額 _name 1 * * /売上 日 /売上金額 * Product Transaction Selling _name _price * * * * _date _product _quantity * * /Sales _date _product * * 静的モデル4 7.3 実装レベルのクラス図(1) • クラス名

  9. a:Transaction = :Category :Product :Selling :Transaction 1:Category 1:Product 1:Selling 1:Transaction :Transaction _date=021112 2:Product 2:Selling 2:Category 3:Product 3:Selling 4:Selling 2:Transaction 静的モデル4 7.3 実装レベルのクラス図(2) • インスタンスの生成と管理 • クラスオブジェクト • インスタンスオブジェクト • 可視性の方向

  10. $sellingList $transactionList :Selling :Transaction 1:Selling 1:Transaction _sellingList 2:Selling Category 4:Selling 2:Transaction _name _productList $categoryList * Selling Transaction Product _product _quantity $sellingList _date _sellingList$transactionList _name _price $productList * * * * * * /Sales _date _product * * 静的モデル4 7.3 実装レベルのクラス図(3) • リンクの実装 public class Transaction{ private Vector _sellingList; private static Vector $transactionList = new Vector(); public Transaction( Date date ){ _date = date; _sellingList = new Vector(); $transactionList.add(this); }

  11. theActor 販売:Usecase : Transaction : Selling : Product 注文 new 商品,数量 $getProduct(商品) new(theProd, date) addSelling (theSelling) [注文あり] 精算 getSoldProductNames( ) [注文なし] getProduct( ) getName( ) getQuantity( ) sumSales( ) getSales( ) getPrice( ) 静的モデル4 7.4 シーケンス図(1) • メッセージ(インタフェース)の設計 • ユースケース「販売する」

  12. theActor 売上:Usecase : /Sales : Product : Selling : Transaction 商品別集計 new(prod.,date) そのprodを参照しているsellingを取り出して getProduct( ) getName( ) getSales( ) getTotalQuantity(date) $getTotalQuantity(this, date) $getSoldDate(selling) getPrice( ) [sellingあり] そのsellingの日がdateと等しければ [forAll] そのsellingの数量を累積する その累積数量に単価を掛ける 静的モデル4 7.4 シーケンス図(2) • メッセージ(インタフェース)の設計 • ユースケース「商品別に売上集計する」

  13. $getSoldDate(this) :Selling :Transaction $getTotalQuantity(バーガー, 11日) getTotalQuantity(11日) バーガー:Product :Sellingqtty=3 :Transactiondate=11日 :Sellingqtty=1 :Sellingqtty=1 :Transactiondate=12日 public class Product{ public int getTotalQuantity(Date date){ return Selling.$getTotalQuantity(this, date); } public class Selling{ private Product _product; private int _quantity; private static Vector $sellingList = new Vector(); public static int $getTotalQuantity(Product product, Date date){ int _totalQuantity = 0; Iterator iter = $sellingList.iterator(); while(iter.hasNext()){ Selling _selling = (Selling)iter.next(); if( _selling._product == product && Transaction.$getSoldDate(_selling).equals(date) ) _totalQuantity += _selling._quantity; } return _totalQuantity; }

  14. : /Sales theActor 売上:Usecase : Category カテゴリ別集計 getName( ) getTotal( date) new(prod.,date) getSales( ) [forAllProduct] [forAllCategory] 静的モデル4 7.4 シーケンス図(3) • メッセージ(インタフェース)の設計 • ユースケース「カテゴリ別に売上集計する」

  15. 7.5 実装のクラス図 Category _id _name _productList : Vector $categoryList : Vector Category() getName() add() getTotal() * * Product Transaction _id Selling _name _date _product _price _sellingList : Vector _quantity $productList : Vector $transactionList : Vector $sellingList : Vector Product() addSelling() Selling() getId() getDate() getSales() * * * * getName() sumSales() getProduct() getPrice() getSoldProductNames() getQuantity() getTotalQuantity() $getSoldDate() $getTotalQuantity() $getProduct() $getSize() $getItems() * * Test /Sales _date main( ) _product * * sell() setDate() Sales() getSales() init() getProduct() getDate() 静的モデル4

  16. 7.6 ソースプログラム http://www.crew.sfc.keio.ac.jp/lecture/2002objmodel/text/resource.html の下にあります。 静的モデル4

More Related