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

Slides:



Advertisements
Similar presentations
クラス図(1) FM12013 山口 亨. クラスとは 現実に存在する “ 物体 ” (オブジェクト)の 構造や振る舞いなどに着目して注目し抽 象化したもの クラス図を含む UML のほとんどの図で使用 されている.
Advertisements

Chapter1 UML の概要とオブジェクト指向の基本概念 1 情報工学専攻 MFM10004 奥平 健太.
ソフトウェア工学 知能情報学部 新田直也. オブジェクト指向パラダイムと は  オブジェクト指向言語の発展に伴って形成され てきたソフトウェア開発上の概念.オブジェク ト指向分析,オブジェクト指向設計など,プロ グラミング以外の工程でも用いられる.  ソフトウェアを処理や関数ではなくオブジェク.
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
エンティティ・リレーションシップ・モデル
シーケンス図の生成のための実行履歴圧縮手法
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
4 相互作用図 後半 FM13001 青野大樹.
相互作用図 FM11010 田中健太.
Chapter3 クラス図(後半)             FM12014 劉鎧誠.
ソフトウェア工学特論III 第10回 その他の図 情報通信工学専攻 GM11013 堀江 真史
アルゴリズムとプログラミング (Algorithms and Programming)
オブジェクト指向プログラミング(4) 静的分析(2)
クラスその2∽(アドバンス)∽ 福岡工業大学  梶原 大慈       .
第5章 データベースの設計 5.1 データベース設計の概要 5.2 ERモデルとスキーマ設計 5.3 正規化 5.4 一貫性制約.
アルゴリズムとデータ構造1 2007年6月12日
情報伝播によるオブジェクト指向プログラム理解支援の提案
3-5 クラス図の関係その3 福本研究室 神田 祐輔.
CHAPTER1 UMLとオブジェクト指向の基本概念(2)
3-3 クラス図の関係その2.
クラス図(1) 後半 FM13010 村上 太一.
UML入門 UML PRESS vol.1 より 時松誠治 2003年5月19日.
47070 オブジェクト指向モデリング [12] 2002年1月15日.
47070 オブジェクト指向モデリング [4] 2001年10月23日.
オブジェクト指向モデリング [3] 2003年10月14日.
第6回独習Javaゼミ 第6章 セクション4~6 発表者 直江 宗紀.
47070 オブジェクト指向モデリング [1] 2001年10月2日.
第11回 アプリケーションの構成 ~CUI自動販売機の完成!~.
ソフトウェア工学 知能情報学部 新田直也.
第4回JavaScriptゼミ セクション2-8 発表者 直江 宗紀.
Chapter7 その他の図 FM13010  須崎研 村上 太一.
その他の図 Chapter 7.
組込みシステムの外部環境分析のためのUMLプロファイル
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
オブジェクト指向 プログラミング 第十一回 知能情報学部 新田直也.
47070 オブジェクト指向モデリング [7] 2001年11月 12日.
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
暗黙的に型付けされる構造体の Java言語への導入
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
オブジェクト指向モデリング [2] 2003年10月 7日.
UML関係のTIPS 2008年5月26日 2010年5月16日改訂 海谷 治彦.
第1章 実世界のモデル化と形式化 3.地物インスタンスの表現
11.3 酒屋の在庫問題(8) ユースケース 仕入販売支援システム 11. モデリング 受注する 入庫を記録する 在庫を引き当てる 受付係
47070 オブジェクト指向モデリング [3] 2001年10月16日.
データモデリング モデルの基本作法.
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
XMLゼミ 3.5 DTD M2 正木 裕一.
1-3 UMLの図(ダイアグラム) コンポーネント図 システムの物理的な構成を表現 ソフトウェアコンポーネントの依存性を表現
オブジェクト・プログラミング 第8回.
コードクローン分類の詳細化に基づく 集約パターンの提案と評価
UMLの概要とオブジェクト指向の基本概念
オブジェクト指向モデリング [12] 2004年1月13日.
E-R図 井上卓也.
アルゴリズムとプログラミング (Algorithms and Programming)
オブジェクト指向言語論 第十二回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
All Rights Reserved, Copyright © 2004, Kobayashi
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
サブゼミ第7回 実装編① オブジェクト型とキャスト.
47070 オブジェクト指向モデリング [8] 2002年12月 3日.
オブジェクト指向モデリング [11] 2003年12月16日.
18. Case Study : Imperative Objects
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
47070 オブジェクト指向モデリング [3] 2001年10月15日.
ソフトウェア工学 知能情報学部 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
47070 オブジェクト指向モデリング [10] 2001年12月18日.
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
計算機プログラミングI 第10回 2002年12月19日(木) メソッドの再定義と動的結合 クイズ メソッドの再定義 (オーバーライド)
Presentation transcript:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

6.5 関連についての補足 関連に対する制約 短縮意味宣言 {xor} {順序} 静的モデル2 { }制約 { }制約 {xor} {順序} ステレオタイプ <<type>> 制約 {self.noOfStudents > 10} プロパティ  {isAbstract = true} 著作 本 0..* {xor} 雑誌 1 インスタンス図を書いてみよう ステレオタイプはモデル要素のもう一つの分類 制約はモデルが正しくあるための条件 プロパティは制約の一種で,タグ付き値で表現 プロセス ライン * {ordered}

6.5 関連についての補足 関連に対する制約 オブジェクト図 静的モデル2 プロセス ライン 組織 {階層}がないと * プロセス ライン * {ordered} 組織 {階層}がないと どんなオブジェクト図が書けるでしょう 切断: プロセス 扉製造: ライン 塗装: 組立: 梱包: ① ② ③ ④ ステレオタイプはモデル要素のもう一つの分類 制約はモデルが正しくあるための条件 プロパティは制約の一種で,タグ付き値で表現

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

宿題の解答例 6親等までを扱うための型モデルを書いてください 養子縁組はないものとする 離婚,再婚はないものとする 人 静的モデル1 配偶者 兄弟 親 子 兄弟 兄弟 叔父叔母 親 従兄弟 親 配偶者 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.子.子.配偶者)     : <<対称>> /兄弟関係 <<対称>> /叔父甥関係 <<対称>> /従兄弟関係 <<対称>> /はとこ関係

宿題の解答例 6親等までを扱うための型モデルを書いてください 養子縁組はないものとする 離婚,再婚はないものとする 人 静的モデル1 n n 配偶者 子 親 先 先 先 先 <<対称>> /配偶関係 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 <<対称>> /親等関係 元 親等数 *