オブジェクト指向モデリング
TRANSCRIPT
![Page 1: オブジェクト指向モデリング](https://reader036.vdocuments.pub/reader036/viewer/2022062513/556609e6d8b42aa6628b4fec/html5/thumbnails/1.jpg)
1
オブジェクト指向モデリング
20 12/10/26日本 XPユーザーグループ関西
![Page 2: オブジェクト指向モデリング](https://reader036.vdocuments.pub/reader036/viewer/2022062513/556609e6d8b42aa6628b4fec/html5/thumbnails/2.jpg)
2
アジェンダ•自己紹介•オブジェクト指向の歴史•モデリング•モデリング実習
–車をモデリングしてみよう–ゲームをモデリングしてみよう
•クロージング
![Page 3: オブジェクト指向モデリング](https://reader036.vdocuments.pub/reader036/viewer/2022062513/556609e6d8b42aa6628b4fec/html5/thumbnails/3.jpg)
3
自己紹介• 名前:西 丈善• 学歴:大阪電子計算機専門学校• 経験: 19年• 業務:組込系• 活動: XPJUG関西、 PFP関西 Web「アジャイル・ニュース・フラッシュ」運営 電子書籍「サムライ・エピソード」執筆
![Page 4: オブジェクト指向モデリング](https://reader036.vdocuments.pub/reader036/viewer/2022062513/556609e6d8b42aa6628b4fec/html5/thumbnails/4.jpg)
4
オブジェクト指向の歴史
![Page 5: オブジェクト指向モデリング](https://reader036.vdocuments.pub/reader036/viewer/2022062513/556609e6d8b42aa6628b4fec/html5/thumbnails/5.jpg)
5
オブジェクト指向の歴史• ソフトウェア設計手法の歴史
– 1. 無手順(暗黒時代)… 1955 年~• 小リソースのため、小さく速いプログラムが必要• 職人芸、開発者以外メンテナンス不可能
– 2. 構造化設計… 1966 年~• バグ削減、職人芸の排除、保守性/再利用性の向上• GoTo レス• 「機能指向」な方法論
– 3. オブジェクト指向設計… 1995 年~• 保守性/再利用性の更なる向上、修正範囲の局所化• システムを「オブジェクト」で表現
![Page 6: オブジェクト指向モデリング](https://reader036.vdocuments.pub/reader036/viewer/2022062513/556609e6d8b42aa6628b4fec/html5/thumbnails/6.jpg)
6
オブジェクト指向の歴史• CPUの歴史1960年代 ・マイクロップロセッサ登場前
・真空管の演算器が主流・ Intel, ADM創業
1970年代 前半 ・マイクロプロセッサ登場後半 ・パソコン用 CPUが登場
1980年代 前半 ・ 32BitCPUの登場後半 ・ RISC CPUの登場
1990年代 前半 ・ 64Bit RISC CPUの登場後半 ・ CPUクロック競争
2000年代 ・ CPUクロック戦争終結~マルチコア化へ
無手順
構造化設計
オブジェクト指向
・高速化/大容量化するハードウェアに伴い、アプリケーションも高度化/複雑化の一途を辿る。
・短期間で、高品質/高機能なソフトウェアの開発需要が増加。
・市場ニーズに答えるための開発方法論が生み出された。
![Page 7: オブジェクト指向モデリング](https://reader036.vdocuments.pub/reader036/viewer/2022062513/556609e6d8b42aa6628b4fec/html5/thumbnails/7.jpg)
7
オブジェクト指向の歴史• オブジェクト指向とは、「異なる3つの設計思想の同音異句」• 下記 3名の発想を統合したもの。
(1) アラン・ケイ (1970年 ) 「メッセージパッシング」を提唱。
(2) ビアルネ・ストラウストラップス( 1980年 ) 「抽象データ型(カプセス化、継承、多態性)」を体系化
(3) ウィリアム・クック (1990年 ) 「データに持たせる「手続き」によるデータ抽象化手法」を提唱
アラン・ケイ
ストラップ
クック
![Page 8: オブジェクト指向モデリング](https://reader036.vdocuments.pub/reader036/viewer/2022062513/556609e6d8b42aa6628b4fec/html5/thumbnails/8.jpg)
8
オブジェクト指向の歴史
![Page 9: オブジェクト指向モデリング](https://reader036.vdocuments.pub/reader036/viewer/2022062513/556609e6d8b42aa6628b4fec/html5/thumbnails/9.jpg)
9
オブジェクト指向の歴史• オブジェクト指向の構成要素
– カプセル化– 継承– 多態性
![Page 10: オブジェクト指向モデリング](https://reader036.vdocuments.pub/reader036/viewer/2022062513/556609e6d8b42aa6628b4fec/html5/thumbnails/10.jpg)
10
オブジェクト指向の歴史•オブジェクト指向のメリット
–カプセル化により、堅牢なデータ保護が可能–独立性が高く、再利用が容易–差分プログラミングで、機能拡張が容易
![Page 11: オブジェクト指向モデリング](https://reader036.vdocuments.pub/reader036/viewer/2022062513/556609e6d8b42aa6628b4fec/html5/thumbnails/11.jpg)
11
オブジェクト指向の歴史•オブジェクト指向のデメリット
–再利用性を向上するためには、しくみが必要–小規模開発の場合、工数が増加する
•ツールなど小規模開発の場合•「力技による開発」より時間が掛かる
–要員確保が困難•「オブジェクト指向設計」に慣れた要員は少ない
–概念が複雑かつ抽象的で分かりにくい•習得に時間が掛かる•社外の教育機関を利用するべきである•デザインパターンの習得が、理解を深める近道
![Page 12: オブジェクト指向モデリング](https://reader036.vdocuments.pub/reader036/viewer/2022062513/556609e6d8b42aa6628b4fec/html5/thumbnails/12.jpg)
12
モデリング
![Page 13: オブジェクト指向モデリング](https://reader036.vdocuments.pub/reader036/viewer/2022062513/556609e6d8b42aa6628b4fec/html5/thumbnails/13.jpg)
13
モデリング• モデリングとは?
– 「システム化対象を、オブジェクト指向パラダイムを用いて図式化すること」
• モデリングの種類– UML
•オブジェクトモデリングのための標準化した仕様記述言語
– CRCカード•オブジェクト指向の概念を教えるために導入された初心者向けの図法
•実開発でも使用可能•XPでも設計手法として利用されている
![Page 14: オブジェクト指向モデリング](https://reader036.vdocuments.pub/reader036/viewer/2022062513/556609e6d8b42aa6628b4fec/html5/thumbnails/14.jpg)
14
モデリング• 本日は「 CRCカード」を使ってモデリングを説明します。
– CRC = Class Responsibility Collaborator– 概念モデリング、詳細設計に活用可能
クラス名
責務 協調
CRCカード
![Page 15: オブジェクト指向モデリング](https://reader036.vdocuments.pub/reader036/viewer/2022062513/556609e6d8b42aa6628b4fec/html5/thumbnails/15.jpg)
15
モデリング• CRCカードの説明
– 「クラス」•クラスは、オブジェクトの雛形•クラス名は、シンプルな名詞形が良い
– 「責務」•クラスが「知っている」あるいは「行う」事柄
– 「協調クラス」•当該クラスと協調/相互作用するクラス
学生
学生番号氏名住所ゼミに登録するゼミを辞める成績証明書を請求する
ゼミ
![Page 16: オブジェクト指向モデリング](https://reader036.vdocuments.pub/reader036/viewer/2022062513/556609e6d8b42aa6628b4fec/html5/thumbnails/16.jpg)
16
モデリング• CRCモデルの構築手順
– クラスを見つける• 要件定義から名詞と動詞を抽出する• 類似したもの同士をグループ化する。• グループ化したものに、クラス名を命名する。
– 責務を見つける• 名詞と動詞を「責務」に記入する。
– 協調クラスを定義する• 関連または協調するクラスを探しだす。• 「協調」に、関連または協調するクラスを記入する。
– カードをあちこち動かす • 協調するクラスは近くに配置し、クラス関連を明確にする。
![Page 17: オブジェクト指向モデリング](https://reader036.vdocuments.pub/reader036/viewer/2022062513/556609e6d8b42aa6628b4fec/html5/thumbnails/17.jpg)
17
モデリング•例題1「あいさつシステム」
![Page 18: オブジェクト指向モデリング](https://reader036.vdocuments.pub/reader036/viewer/2022062513/556609e6d8b42aa6628b4fec/html5/thumbnails/18.jpg)
18
モデリング実習
![Page 19: オブジェクト指向モデリング](https://reader036.vdocuments.pub/reader036/viewer/2022062513/556609e6d8b42aa6628b4fec/html5/thumbnails/19.jpg)
19
モデリング実習• モデリング実習#1 「車をモデリングしてみよう」
![Page 20: オブジェクト指向モデリング](https://reader036.vdocuments.pub/reader036/viewer/2022062513/556609e6d8b42aa6628b4fec/html5/thumbnails/20.jpg)
20
モデリング実習• モデリング実習#2 「ゲームをモデリングしてみよう」
![Page 21: オブジェクト指向モデリング](https://reader036.vdocuments.pub/reader036/viewer/2022062513/556609e6d8b42aa6628b4fec/html5/thumbnails/21.jpg)
21
クロージング
![Page 22: オブジェクト指向モデリング](https://reader036.vdocuments.pub/reader036/viewer/2022062513/556609e6d8b42aa6628b4fec/html5/thumbnails/22.jpg)
22
• 参考 URL– http://d.hatena.ne.jp/sumim/20040525#p1 – http://ja.wikipedia.org/wiki/CPU – http://ja.wikipedia.org/wiki/ オブジェクト指向– http://ja.wikipedia.org/wiki/ 構造化プログラミング – http://ja.wikipedia.org/wiki/ 統一モデリング言語– http://itpro.nikkeibp.co.jp/article/COLUMN/20060921/248617/ – http://www.kogures.com/hitoshi/webtext/db-oodb/index.html – http://www.ogis-ri.co.jp/otc/swec/process/am-res/am/artifacts/crcModel.html