オブジェクト指向モデリング [6] 2003年11月 4日 5. オブジェクト図 5.2 オブジェクト図(2) クラス図を理解する 多重度を手がかりにして 顧客 氏名 生年月日 1 * 注文 注文日 数量 * 1 商品 商品名 単価 a:顧客 1:注文 氏名=小泉純一 生年月日= 注文日=03.11.21 数量=3 b:顧客 2:注文 科目名=クレジット 氏名=間尚人 /残高= 生年月日= -2000円 注文日=03.11.21 数量=1 c:顧客 3:注文 氏名=田中まきお 科目名=現金預金 生年月日= /残高= 50000円 注文日=03.11.21 数量=2 d:顧客 4:注文 氏名=児玉公信 科目名=現金預金 生年月日= /残高= 50000円 注文日=03.11.21 数量=10 1:商品 商品名=フライパン 単価=2000円 2:商品 商品名= ピーターパン 単価=6000円 3:商品 商品名= カレーパン 単価=150円 2 6. 高度な関連 6.1 関連に対する制約(1) 関連に対する制約 タイトル 許される関連 短縮意味宣言 1 * {xor} 1 { }制約 {xor} {ordered} * 1 路線 詳細意味宣言 本 {ordered} * 雑誌 駅 ノート OCL(Object Constraint Language) 勘定 勘定科目名 /残高 1 * 仕訳記入 金額 2..* 1 取引 取引日 摘要 不変表明: inv: self.the仕訳記入.金額->sum 取引にリンクする仕訳記入の金 額の合計は0であること =0 3 6. 高度な関連 6.1 関連に対する制約(2) 関連に対する制約 路線 1 {ordered} * 駅 {DAG} 1 inv: 路線 駅 let 駅順:Sequence(駅)=self.the駅 * let scan(s:駅)=forAll(index:Integer| if 駅順->at(index)=s then result=index) in 山手線(外回り) 大崎:駅 i:Integer=駅順->scan(s:駅) :路線 next(s:駅):駅=if i=駅順->size then result=駅順->at(1) 五反田:駅 else result=駅順->at(i+1) 目黒:駅 ) prev(t:駅):駅=if i=1 then result=駅順->at(駅順->size) else result=駅順->at(i-1) 恵比寿:駅 ) Sequence 山手線(外回り) :路線 大崎:駅 ① 五反田:駅 ② 目黒:駅 ③ : 大崎:駅 4 オブジェクト指向モデリング シラバス 授業計画 回 1 2 3 4 5 6 7 8 9 10 11 12 13 月日 9月 30日 10月 7日 10月14日 10月21日 10月28日 11月 4日 11月11日 11月18日 12月 2日 12月 9日 12月16日 1月13日 1月20日 内容 オリエンテーション:モデルとは何か。 モデリング言語:UMLの概要 静的モデル1:概念とクラス 静的モデル2:関連 静的モデル3:オブジェクト図 静的モデル3:オブジェクト図(続き),モデリング 機能モデル1:ユースケース 機能モデル2:ユースケース記述,シナリオ 動的モデル:協調図,シーケンス図,状態図,活動図 実装モデル:実装モデルとプログラム モデリング1:モデル図の理解:アナリシスパターン,事例 モデリング2:モデル図の作成,モデルの評価基準 モデリング3:例題によるモデル図の作成 5 問題解決からビジネスモデリングへ 6. 高度な関連 6.1 関連に対する制約 6.2 関連型 6.3 属性型 6.4 知識レベル 6.5 型についての補足 6.6 型図の演習 6 6. 高度な関連 6.2 関連型(3) 演習7 関連を含んだ簡単な型図を書いてみましょう。 「ものーことーもの」で表される概念構造で,できるだけユニーク なものを考えてみてください。ロールに気をつけて。 7 6. 高度な関連 6.3 属性型 属性かどうか決められない概念 型として書いておく 基本型 人 人 人 氏名 * 1 * 氏名 1 文字列 文字列 人の集合 氏名の集合 氏名 生年月日 血液型 身長 体重 8 6. 高度な関連 6.4 知識レベル(1) べき集合(power set) カテゴリ化 タイトルと本 ジャンル 頭の中にあるオブジェクト インスタンス: 技術職タイプ 営業職タイプ ○○タイプ, ○○種, ○○名 従業員タイプ 営業職の集合を 意味するメンバ 型 1 従業員タイプの集合 技術職の集合を 意味するメンバ * 従業員 技術職の 集合 営業職 技術職 営業職の 集合 従業員の集合 9 6. 高度な関連 6.4 知識レベル(2) 知識レベルの実装 従業員タイプ 1 * 従業員 従業員 従業員タイプ * 従業員タイプ +型 1 「クラスによる タイプコードの置き換え」 技術職タイプ 営業職タイプ 実装 * 従業員 技術職 1 営業職 従業員 タイプ 「サブクラスによる タイプコードの置き換え」 「State/Strategyによる タイプコードの置き換え」 「フィールドによる サブクラスの置き換え」 従業員 概念モデル 技術職 営業職 10 6. 高度な関連 6.5 型についての補足 ステレオタイプ モデル要素の分類 《type》 《interface》 《history》 学生 学生 学生 事前定義 新たな分類 《use》 制約 《include》 オブジェクトの存在条件 {self.noOfStudents > 10} inv: self.the借方.金額->sum = self.the貸方.金額->sum コンテキスト self:任意のインスタンス プロパティ モデル要素のプロパティ タグ付き値 isXxxxxxx 取引 取引日 摘要 {isAbstract = true} {abstract} 11 6.高度な関連 6.6 型図の演習(1) 演習8 ファーストフード店の窓口業務のモデルを書いてみる。 ファーストフード店 窓口で客がメニューに基づいて商品を注文する 受注担当者が注文を聞いて,キッチン担当に渡す 客は注文品ができるまで,窓口で待つ 受注担当者は,料金を計算し,請求する 客は料金を支払う 客はできあがった商品を受け取る …という,普通のプラクティス 12 6.高度な関連 6.6 型図の演習(2) 手順 基本定義から基本課題を発明 する 基本課題からユー スケースを発明する ワークフローを書い て,隠れたユース ケースを洗い出す 初期の概念モデルを書く モデルを揺さぶる 疑問点を考える 本質的な概念モデルを導く 13 6.高度な関連 6.6 型図の演習(3) 初期の概念モデルを書く 手順 対象領域における概念を取り出す 重要な概念を他の概念との関係で記述する ロールを識別する 包含する概念(スーパータイプ)か,包含される概念(サブタイプ)か 知識レベルの概念か 属性か 「もの-こと-もの」で書いてみる 多重度を考える 次に重要そうな概念を取り上げて,繰り返す 名詞抽出法 14
© Copyright 2024 ExpyDoc