47070 オブジェクト指向モデリング [5] 2001年10月29日 オブジェクト指向モデリング 前回 静的モデル1 5.1 型の認識 5.2 関連 5.3 属性と操作 5.4 汎化関係 2 静的モデル1 型の認識 人 型 氏名:String 身長:Real 概念 名前を持つ 境界を持つ 定義 属性 人 氏名 氏名:String 1..* 人 ユニークであること 氏名 String 1..* 別名でない 属性でない 属性か型かは微妙 基本型 夏目漱石 島崎藤村 集合 ユニークなメンバをもつ UoD,文脈,視点 芥川龍之介 人 氏名 3 静的モデル1 多重度 インスタンスどうしの対応(リンク)数 対応の方向 0,1,* 関連はリンクの集合 最小値..最大値 関連の意味 メッセージパス 生成 参照 ナビゲーション 本 is a copy of 0..* 1..1 著書 1冊め 実践ファンクション ポイント法 2冊め 3冊め リファクタリング UMLを使って 本 著書 4 質問カードから 関連の意味はわかるが,多重度の値そのものは意 味がないのでは 数字として意味があるのは,0,1,* です。 詳細は次ページ。 集合図とオブジェクト図 UMLのオブジェクト図の表現では,部分集合のイメージが 十分表現できません。 顧客 顧客 A: 一般顧客 一般 重要度 一般顧客 重要顧客 B: 重要顧客 B 重要 A 5 静的モデル1 多重度の意味 プログラミングレベル 最小値..最大値 リンクの意味 メッセージパス(ターゲット) 生成(new)する先 参照先,ナビゲーション先 is a copy of 蔵書 0..* 1..1 著書 それが繰り返されることを暗示 必ずある(必須;mandatory) あるかも知れない(任意;optional) * カテゴリ 概念レベルでの意味 構造の意味を暗示 こと-もの-こと 範囲 属性 カテゴリ 木 会員 * * 貸出 * * * 蔵書 * から まで 名前 日時 6 オブジェクト指向モデリング 第5回 静的モデル2 5.1 概念レベルでの特殊な表現 5.2 リファクタリング テキスト 5.3 オブジェクト図 5.4 関連についての補足 5.5 型についての補足 5.6 依存性 5.7 パッケージ テキスト 5.8 知識レベル 第5章 第6章 7 静的モデル2 5.1 概念レベルでの特殊な表現 汎化 顧客 多重分類 動的分類 区画 一般 完全区画 不完全区画 個人 重要 制約 {完全} 個人顧客 法人 顧客 弁別子 (discriminator) 個人顧客 法人顧客 重要度 <<多重>> <<動的>> ステレオタイプ 重要顧客 一般顧客 8 静的モデル2 5.2 概念レベルでの特殊な表現 汎化の記法 {完全} 個人顧客 顧客 個人顧客 法人顧客 重要度 {完全} <<多重>> <<動的>> 個人顧客 顧客 重要顧客 個人顧客 法人顧客 一般顧客 重要度 重要顧客 <<多重>> <<動的>> 一般顧客 9 静的モデル2 5.2 概念レベルでの特殊な表現 開発過程における型モデル 型モデルからクラスモデルへ モデルの観点 概念レベル・・・・・・型モデル 多重分類 動的分類 仕様レベル・・・・・・シグニチャ 実装レベル・・・・・・クラスモデル 単一分類 静的分類 重要法人 顧客 重要個人 一般法人 一般個人 10 静的モデル2 5.3 リファクタリング リファクタリング クラス構造の再構築 責任の再割付 システム全体の機能を変えない 実装レベル 自動テスト 進化的発展 最初から理想的な型/クラス構造は作れない 悪構造であることをどう知るか 不吉なにおい コードの重複,長すぎるメソッド,巨大なクラス,多すぎる引数,変更の発散,変更 の分散,属性・操作の横恋慕,データの群れ,基本データ型への執着,スイッチ文, パラレル継承,怠け者クラス,疑わしき一般化,一般的属性,メッセージの連鎖,仲 介人,不適切な関係,クラスのインタフェース不一致,未熟なクラスライブラリ,デー タクラス,相続拒否,コメント ボトムアップの段階的改善 11 静的モデル2 演習問題 1. モデルの観点を形式的に判定できるか? 2. ドメイン以外のクラスがあってもよいのはいつ? ユーザインタフェース 概念レベル 仕様レベル 実装レベル アプリケーション(機能) ドメイン(概念の世界) 永続化 12 静的モデル2 クラス図 制約 型 関連名 多重度 関連名の方向 商品種類 0..* 注文する 注文対象 0..* {完全} 顧客 注文主 個人顧客 法人顧客 関連 ロール 区別子 (discriminator) 個人顧客 重要度 重要顧客 <<多重>> <<動的>> ステレオタイプ 一般顧客 13 静的モデル2 5.4 オブジェクト図 インスタンス インスタンス名:型名 実践ファンクション ポイント法: 著書 実践ファンクションポイント法 リファクタリング UMLを使って リファクタリング: 著書 UMLを使って: 著書 「著書」型 14 静的モデル2 5.4 オブジェクト図 インスタンスのコラボレーション A A * * B B C D 型C A1 A1 B1 A2 型A A2 B2 A3 型B a1:A C1 b1:B b2:B 型A D1 A3 型B a1:A 型D c1:C d2:D 15 静的モデル2 5.4 オブジェクト図 型(クラス)図の理解 勘定 勘定科目名 /残高 * 記入 2..* 取引 取引日 摘要 金額 a:勘定 旅費交通費 8000円 11000円 b:勘定 クレジット 2000円 -5000円 0円 1:記入 3000円 2:記入 1:取引 2001.11.6 つくば -3000円 1:記入 5000円 c:勘定 現金預金 45000円 50000円 2:記入 2:取引 2001.11.31 精算 -5000円 16 静的モデル2 5.5 関連についての補足 集約(aggregation) 集約 部分-全体関係 関連名(is a part of)は省略 概念レベルでは 区別をしない 合成集約(composition) 強い所有 弱いエンティティ(weak entity) 優等コース ボード 1..* 1 6..* 9 授業科目 マス 17 静的モデル2 5.5 関連についての補足 ナビゲーション可能性(navigability)の明示 双方向 単方向 顧客 顧客 請求先 1 納入先 1 請求先 1 納入先 1 * 注文 * 注文 * 1 商品 * * 1 商品 * 演習問題46 ナビゲーション可能性はいつ 決定されるべきか 18 静的モデル2 5.5 関連についての補足 限定子つき関連(qualified association) 多重度を1にする 限定子によって一意になるという制約を示す 辞書などによる実装を暗示 ボード 1 1 ボード 位置 9 マス 1 マス * 位置 行 列 行:{1,2,3} 列:{1,2,3} Class ボード { public マス getSquareMark(int 行, int 列); : } 19 静的モデル2 5.5 関連についての補足 UML 導出関連(derived association) 計算で導き出せる関連 「著書」型 冗長 「/」でマーク 理解 ルール(制約) 1 導出型 導出属性 導出ロール 導出ルール: FP 2 3 4 * 著書 「会員」型 「本」型 /borrows is a copy of * 会員 borrows * 本 20 静的モデル2 5.5 関連についての補足 関連に対する制約 短縮意味宣言 ステレオタイプ 《type》 制約 {self.noOfStudents > 10} プロパティ {isAbstract = true} { }制約 {xor} {ordered}{順序} 本 0..* 0..* 1 著作 オブジェクト図を 書いてみよう {xor} 1 雑誌 路線 {ordered} * 駅 21 静的モデル2 5.5 関連についての補足 関連に対する制約 オブジェクト図 {階層} * 路線 東海道線: 路線 {ordered} * ① ② ③ 駅 東京: 駅 人 子 親 {階層}がないと どんなオブジェクト 図が書けるでしょう 新橋: 駅 品川: 駅 ④ 川崎: 駅 … 22 静的モデル2 5.5 関連についての補足 制約 詳細意味宣言 ノート(注釈) OCL(Object Constraint Language) 勘定 勘定科目名 /残高 * 記入 2..* 金額 借方 貸方 取引 取引日 摘要 inv: self.the借方->sum(金額) = self.the貸方->sum(金額) 23 静的モデル2 宿題の解答 兄弟(性別問わず)関係はどう表現する? 24
© Copyright 2025 ExpyDoc