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

Slides:



Advertisements
Similar presentations
オブジェクト指向 言語 論 第八回 知能情報学部 新田直也. 多相性(最も単純な例) class A { void m() { System.out.println( “ this is class A ” ); } } class A1 extends A { void m() { System.out.println(
Advertisements

独習JAVA Chapter 6 6.6 クラスの修飾子 6.7 変数の修飾子 結城 隆. 6.6 クラスの修飾 abstract インスタンス化できないクラス。1つまたは複数のサブクラスで 実装してはじめてインスタンス化できる。 final 継承されたくないことを明示する。これ以上機能拡張 / 変更でき.
All Rights Reserved Copyright © 2004, Takashi Kobayashi 1 ロバストネス分析の演習問題 <問題1> 次の文をよんで問いに答えよ。 顧客は、 ATM により自分の口座から預金を払い出す。 顧客は、 ATM にキャッシュカードを挿入し、個人認証を行う。
ソフトウェア工学特論III 第10回 その他の図 情報通信工学専攻 GM11013 堀江 真史
プログラミング演習3 李 亜民クラス 第2回 ラスタライズ.
オブジェクト指向プログラミング(4) 静的分析(2)
~手続き指向からオブジェクト指向へ(Ⅰ)~
アルゴリズムとデータ構造1 2007年6月12日
CHAPTER1 UMLとオブジェクト指向の基本概念(2)
社会人学習講座 「Javaプログラミング概論」
JavaBeans とJSP データベース論 第5回.
JSFによるWebアプリケーション開発 第6回
第2章 Eclipseと簡単なオブジェクト 指向プログラミング
C#とC++とオブジェクト指向 上甲 健史.
ピカチュウによる オブジェクト指向入門 (新版)
UML入門 UML PRESS vol.1 より 時松誠治 2003年5月19日.
ユースケース オブジェクト指向の要求分析のためのモデル。 スウェーデンのイヴァー・ヤコブソンが1990年代前半に開発。
C++とオブジェクトデータベース入門 8.オブジェクトデータベースとは 森井 喬 Webページ
47070 オブジェクト指向モデリング [12] 2002年1月15日.
47070 オブジェクト指向モデリング [13] 2003年 1月21日.
47070 オブジェクト指向モデリング [4] 2001年10月23日.
オブジェクト指向モデリング [3] 2003年10月14日.
~手続き指向からオブジェクト指向へ[Ⅱ]~
第11回 アプリケーションの構成 ~CUI自動販売機の完成!~.
ソフトウェア工学 知能情報学部 新田直也.
第9章 例外処理,パッケージ 9.1 例外処理 9.2 ガーベッジコレクション.
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十一回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
オブジェクト指向モデリング [2] 2003年10月 7日.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
ソースコード縮退による ソースコード理解 神谷年洋 科学技術振興事業団 さきがけ研究21 オブジェクト指向シンポジウム2003.
All Rights Reserved, Copyright © 2004, Kobayashi
11.3 酒屋の在庫問題(8) ユースケース 仕入販売支援システム 11. モデリング 受注する 入庫を記録する 在庫を引き当てる 受付係
47070 オブジェクト指向モデリング [3] 2001年10月16日.
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト・プログラミング 第8回.
オブジェクト指向モデリング [12] 2004年1月13日.
オブジェクト指向 プログラミング 第九回 知能情報学部 新田直也.
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
C#プログラミング実習 第3回.
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
Javaによる Webアプリケーション入門 第4回
サブゼミ第7回 実装編① オブジェクト型とキャスト.
47070 オブジェクト指向モデリング [8] 2002年12月 3日.
オブジェクト指向モデリング [11] 2003年12月16日.
第5回 プログラミングⅡ 第5回
オブジェクト指向モデリング [9] 2003年12月2日.
JAVA入門⑥ クラスとインスタンス.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
cp-2. 属性,アクセサ (C++ オブジェクト指向プログラミング入門)
47070 オブジェクト指向モデリング [3] 2001年10月15日.
ソフトウェア工学 知能情報学部 新田直也.
フレンド関数とフレンド演算子.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
値渡しと参照渡しについて.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第十回 知能情報学部 新田直也.
計算機プログラミングI 第10回 2002年12月19日(木) メソッドの再定義と動的結合 クイズ メソッドの再定義 (オーバーライド)
Presentation transcript:

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

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

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

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

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

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

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

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

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

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

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

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

:Transaction date=12日 :Transaction date=11日 :Transaction :Selling qtty=3 バーガー :Product :Selling getTotalQuantity(11日) :Selling qtty=1 $getTotalQuantity(バーガー, 11日) $getSoldDate(this) 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;

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

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

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