1 / 23

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

47070. オブジェクト指向モデリング [6]. 2001 年 11 月 13 日. オブジェクト指向モデリング. 前回 静的モデル 1. 5.1 型の認識 5.2 関連 5.3 属性と操作 5.4 汎化関係. 人. 氏名: String 身長: Real. 人. 氏名. 氏名: String. 1..*. 人. String. 氏名. 1..*. 夏目漱石. 島崎藤村. 芥川龍之介. 氏名. 人. 静的モデル 1. 型の認識. 型 概念 名前を持つ 境界を持つ 定義 属性 ユニークであること 別名でない

lars
Télécharger la présentation

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

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 オブジェクト指向モデリング[6] 2001年11月13日

  2. オブジェクト指向モデリング 前回 静的モデル1 5.1 型の認識 5.2 関連 5.3 属性と操作 5.4 汎化関係

  3. 氏名:String 身長:Real 人 氏名 氏名:String 1..* 人 String 氏名 1..* 夏目漱石 島崎藤村 芥川龍之介 氏名 人 静的モデル1 型の認識 • 型 • 概念 • 名前を持つ • 境界を持つ • 定義 • 属性 • ユニークであること • 別名でない • 属性でない • 集合 • 属性か型かは非常に微妙 • 基本型 • UoD,文脈,視点

  4. 著書 本 is a copy of 0..* 1..1 1冊め 実践ファンクション   ポイント法 2冊め 3冊め リファクタリング UMLを使って 著書 本 静的モデル1 多重度 • インスタンスどうしの対応(リンク)数 • 対応の方向 • 0,1,* • 関連はリンクの集合 • 関連の意味 • メッセージパス • 生成 • 参照 • ナビゲーション 最小値..最大値

  5. オブジェクト指向モデリング 第6回 静的モデル2 6.1 概念レベルでの特殊な表現 6.2 リファクタリング 6.3 オブジェクト図 6.4 関連についての補足 6.5 型についての補足 6.6 依存性 6.7 パッケージ 6.8 知識レベル テキスト 第5章 テキスト 第6章

  6. 顧客 個人 制約 個人顧客 {完全} 法人 顧客 弁別子 (discriminator) 法人顧客 個人顧客 一般 <<多重>> <<動的>> 重要 重要度 ステレオタイプ 重要顧客 一般顧客 静的モデル2 6.1 概念レベルでの特殊な表現 • 汎化 • 多重分類 • 動的分類 • 区画 • 完全区画 • 不完全区画

  7. 個人顧客 {完全} 顧客 法人顧客 個人顧客 個人顧客 {完全} <<多重>> <<動的>> 顧客 重要度 法人顧客 個人顧客 重要顧客 一般顧客 <<多重>> <<動的>> 重要度 重要顧客 一般顧客 静的モデル2 6.2 概念レベルでの特殊な表現 • 汎化の記法

  8. 一般法人 一般個人 重要法人 重要個人 静的モデル2 6.2 概念レベルでの特殊な表現 • 開発過程における型モデル • 型モデルからクラスモデルへ • モデルの観点 • 概念レベル・・・・・・型モデル • 多重分類 • 動的分類 • 仕様レベル・・・・・・シグニチャ • 実装レベル・・・・・・クラスモデル • 単一分類 • 静的分類 顧客

  9. 静的モデル2 6.3 リファクタリング • リファクタリング • クラス構造の再構築 • 責任の再割付 • システム全体の機能を変えない • 自動テスト • 進化的発展 • 最初から理想的な型/クラス構造は作れない • 悪構造であることをどう知るか 不吉なにおい  コードの重複,長すぎるメソッド,巨大なクラス,多すぎる引数,変更の発散,変更の分散,属性・操作の横恋慕,データの群れ,基本データ型への執着,スイッチ文,パラレル継承,怠け者クラス,疑わしき一般化,一般的属性,メッセージの連鎖,仲介人,不適切な関係,クラスのインタフェース不一致,未熟なクラスライブラリ,データクラス,相続拒否,コメント • ボトムアップの段階的改善 実装レベル

  10. ユーザインタフェース アプリケーション(機能) ドメイン(概念の世界) 永続化 静的モデル2 演習問題 • 1. クラス名はなぜ単数形? • 2. モデルの観点を形式的に判定できるか? • 3. ドメイン以外のクラスがあってもよいのはいつ? 概念レベル 仕様レベル 実装レベル

  11. 制約 型 関連名 個人顧客 多重度 {完全} 関連名の方向 商品種類 顧客 注文する 0..* 0..* 法人顧客 注文対象 注文主 個人顧客 関連 <<多重>> <<動的>> 重要度 弁別子 (discriminator) ロール ステレオタイプ 重要顧客 一般顧客 静的モデル2 型図

  12. 実践ファンクションポイント法: 著書 実践ファンクションポイント法 リファクタリング: 著書 リファクタリング UMLを使って: 著書 UMLを使って 「著書」型 静的モデル2 6.4 オブジェクト図 • インスタンス インスタンス名:型名

  13. * B A * B A C D 型C A1 A1 B1 C1 A2 A2 B2 D1 A3 A3 型A 型A 型B 型B 型D c1:C b1:B a1:A a1:A d2:D b2:B 静的モデル2 6.4 オブジェクト図 • インスタンスのコラボレーション

  14. 勘定 記入 取引 2..* * 勘定科目名 /残高 金額 取引日 摘要 a:勘定 1:記入 旅費交通費 11000円 旅費交通費 8000円 3000円 1:取引 2001.11.6 つくば b:勘定 2:記入 クレジット 0円 クレジット -5000円 クレジット 2000円 -3000円 1:記入 5000円 2:取引 2001.11.31 精算 c:勘定 2:記入 現金預金 45000円 現金預金 50000円 -5000円 静的モデル2 6.4 オブジェクト図 • 型(クラス)図の理解

  15. 静的モデル2 6.5 関連についての補足 • 集約 • 集約 • 部分-全体関係 • 関連名(is a part of)は省略 • コンポジション(集約) • 強い所有 • 弱いエンティティ(weak entity) 概念レベルでは区別をしない 優等コース 授業科目 1..* 6..* ボード マス 1 9

  16. 請求先 * 顧客 注文 商品 1 1 * 納入先 * 1 請求先 * 顧客 注文 1 商品 1 * 納入先 * 1 静的モデル2 6.5 関連についての補足 • ナビゲーション可能性(navigability)の明示 • 双方向 • 単方向 演習問題46 ナビゲーション可能性はいつ決定されるべきか

  17. 静的モデル2 6.5 関連についての補足 • 限定子つき関連(qualified association) • 多重度を1にする • 限定子によって一意になるという制約を示す • 辞書などによる実装を暗示 ボード マス 位置 1 9 * 行 列 1 ボード マス 1 位置 行:{1,2,3} 列:{1,2,3} Class ボード { public マス getSquareMark(int 行, int 列); : }

  18. 著書 * /borrows is a copy of * 本 会員 borrows * 静的モデル2 6.5 関連についての補足 • 導出関連(derived association) • 計算で導き出せる関連 • 冗長 • 理解 • 導出型 • 導出属性 • 導出ロール UML FP 「/」でマーク 「著書」型 1 2 3 4 「本」型 「会員」型

  19. ライン プロセス {ordered} * 本 著作 0..* 1 0..* {xor} 雑誌 1 静的モデル2 6.5 関連についての補足 • 関連に対する制約 • 短縮意味宣言 • { }制約 • {xor} • {順序} ステレオタイプ <<type>> 制約 {self.noOfStudents > 10} プロパティ  {isAbstract = true} インスタンス図を書いてみよう

  20. ライン プロセス {ordered} * ① 扉製造:ライン 切断: プロセス ② 塗装: プロセス ③ 組立: プロセス 梱包: プロセス ④ 静的モデル2 6.5 関連についての補足 • 関連に対する制約 • オブジェクト図 {階層} * 組織 {階層}がないと どんなオブジェクト図が書けるでしょう

  21. 勘定 記入 取引 2..* * 勘定科目名 /残高 金額 取引日 摘要 inv: self.the借方->sum(金額)   = self.the貸方->sum(金額) 借方 貸方 静的モデル2 6.5 関連についての補足 • 制約 • 詳細意味宣言 • ノート • OCL(Object Constraint Language)

  22. 静的モデル1 宿題の解答例 • 6親等までを扱うための型モデルを書いてください • 養子縁組はないものとする • 離婚,再婚はないものとする 親 子 子 兄弟 親 配偶者 親 従兄弟 兄弟 兄弟 叔父叔母 親 配偶者 2 0..1 人 0..1 子 * はとこ 子 0..* 配偶者 * 従兄弟 self 子 叔父叔母 * 兄弟 * * * * inv: self.親=self.兄弟.親 and self.親.親->intersection(self.従兄弟.親.親)->notEmpty and self.親.親.親->intersection(self.はとこ.親.親.親)->notEmpty and self.子.親->includes(self, self.配偶者) and self.子.子.親->includes(self.子, self.子.配偶者) and self.子.子.子.親->includes(self.子.子, self.子.子.配偶者)     : <<対称>> /兄弟関係 <<対称>> /叔父甥関係 <<対称>> /従兄弟関係 <<対称>> /はとこ関係

  23. 静的モデル1 宿題の解答例 • 6親等までを扱うための型モデルを書いてください • 養子縁組はないものとする • 離婚,再婚はないものとする 子 親 配偶者 先 先 先 先 <<対称>> /配偶関係 n n n n-1 n-1 親 配偶者 2 0..1 元 人 0..1 self 子 * 先 1 inv: self.~元(親等関係)->select(p|p.親等数=0).先=self.配偶者 and Integer.allInstances->select(n|0<n<7)->forAll(n | self.~元(親等関係)->select(p|p.親等数=n).先= self.~元(親等関係)->select(p|p.親等数=n-1).先.子) ->union(self.~元(親等関係)->select(p|p.親等数=n-1).先.親) ->union(self.~元(親等関係)->select(p|p.親等数=n).先.配偶者) ) * 1 <<対称>> /親等関係 元 親等数 *

More Related