Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
オブジェクト指向のこころ: 第2章 / DESIGN PATTERNS EXPLAINED: ...
Search
hideki kinjyo
PRO
August 24, 2021
Programming
0
50
オブジェクト指向のこころ: 第2章 / DESIGN PATTERNS EXPLAINED: chapter-2
会社で「オブジェクト指向のこころ」の読書会をやっています
hideki kinjyo
PRO
August 24, 2021
Tweet
Share
More Decks by hideki kinjyo
See All by hideki kinjyo
Composerの依存解決 #phpstudy
o0h
PRO
0
62
「影響が少ない」を自分の目でみてみる
o0h
PRO
2
1.2k
PHPによる"非"構造化プログラミング入門 -本当に熱いスパゲティコードを求めて- #phperkaigi
o0h
PRO
0
1.3k
もう少しテストを書きたいんじゃ〜 #phpstudy
o0h
PRO
22
4.9k
『テスト書いた方が開発が早いじゃん』を解き明かす #phpcon_nagoya
o0h
PRO
10
3.2k
色んなオートローダーを覗き見る #phpcon_okinawa
o0h
PRO
5
610
ヒューマンエラーの本を読んだ ~報告会~
o0h
PRO
3
310
みんなでワイワイ「テスト駆動開発」の話をやる会 #techramen24conf
o0h
PRO
4
610
SPLから始める「データ構造」入門
o0h
PRO
7
2.1k
Other Decks in Programming
See All in Programming
サービスレベルを管理してアジャイルを加速しよう!! / slm-accelerate-agility
tomoyakitaura
1
190
「理解」を重視したAI活用開発
fast_doctor
0
190
Building a macOS screen saver with Kotlin (Android Makers 2025)
zsmb
1
160
Road to RubyKaigi: Making Tinny Chiptunes with Ruby
makicamel
4
460
音声プラットフォームのアーキテクチャ変遷から学ぶ、クラウドネイティブなバッチ処理 (20250422_CNDS2025_Batch_Architecture)
thousanda
0
290
これだけは知っておきたいクラス設計の基礎知識 version 2
masuda220
PRO
24
6.6k
[NG India] Event-Based State Management with NgRx SignalStore
markostanimirovic
1
170
KawaiiLT 登壇資料 キャリアとモチベーション
hiiragi
0
150
Cursor/Devin全社導入の理想と現実
saitoryc
23
17k
Vibe Codingをせずに Clineを使っている
watany
17
6.3k
2ヶ月で生産性2倍、お買い物アプリ「カウシェ」4チーム同時改善の取り組み
ike002jp
1
100
ComposeでのPicture in Picture
takathemax
0
120
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
35
2.6k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
KATA
mclloyd
29
14k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Git: the NoSQL Database
bkeepers
PRO
430
65k
The Cult of Friendly URLs
andyhume
78
6.3k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Building an army of robots
kneath
304
45k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
52
2.4k
A Tale of Four Properties
chriscoyier
158
23k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Transcript
第2章 UML統⼀モデリング⾔語 課題図書: オブジェクト指向のこころ: デザインパターンとともに学ぶ
͜ͷষͷॏཁͳΩʔϫʔυ • UML • モデリング • クラス図 • 関連 •
依存 • 集約 • コンポジション • 相互作⽤図(シーケンス図)
【突然のネタバレ】 この章ではUMLを扱いますが UML⾃体を学習することは 本書を読む上で些細なことだと思います
では、なぜ(1章を割くほど) UMLが「重要」なのか・・・?
UMLとは何か 2.2 UMLとは何か? 2.3 UMLを使う理由
UMLͬͯԿ͢Δͷͳͷ • 開発って「⼯程」があるでしょ • 分析、設計、実装・・・ • イメージを擦り合わせながら進めたいですよね? • って事はコミュニケーションが⼤事ですよね •
”UMLは主に、⾃分⾃⾝、チームメンバ、顧客とのコミュ ニケーションを図るために使⽤されます”
ίϛϡχέʔγϣϯͷͨΊͷUML • 「モデル」を使って話そーぜ、を出来るようにする • それによって、「実際にコード書いて動かす」の⼿前の段 階で「どういう感じになるかな?」の認識を揃える • 認識を揃えた上で、「ここはこうしたくない?」とか「ア レが⾜りなくない?」とかの議論も出来るようになる
UMLͳΜͯ”ΘΓΌ͍͍ͷΑ” ͬͯେޚॴ͕ݴͬͯ·ͨ͠ • 「実際にコード書かなくても認識揃えてコミュニケー ションとれるようにする」というのが重要で • そのための「気軽さ」をUMLは兼ね備えている • UMLは「何となく図形で分かる」ようなダイアグラムと なっている
• 未学習者でも説明しながら使えば伝わりそうなレベル • 「⽂法(記法)の正しさ」「情報の正確性(⾼解像)」より も「最低限の認識が揃う」のが⼤事だよ〜
ࢀߟ • スケッチとしてのUML https://bliki-ja.github.io/UmlAsSketch/ • Fowlerと軽量UML|オブジェクトの広場 https://www.ogis-ri.co.jp/otc/hiroba/specials/ MartinFowler/FowlersUML.html • 書籍「UMLモデリングのエッセンス」
ܹΦεεϝ
ຊॻʹͱͬͯͷUML • 全体を通じて、クラス図・シーケンス図が出てきます • クラス(オブジェクト)間の関係やどう作⽤し合うか?を 視覚的に表現するための⼿段として、くらいの位置づけ • なので「めっちゃ正確にUMLを覚えるぞ・・!」や 「⾼度な記法を覚えるぞ・・!」はいらないです •
ざっくり「あーはいはい、完全に理解した」でOK • ⾒慣れない記法が出てきたらその都度で調べましょ
(本書を読む上で)主要なダイアグラム 2.4 クラス図 2.5 相互作⽤図
Ϋϥεਤ クラスやクラス同⼠の関連性を⽰す(静的なモデリング)
ूͱίϯϙδγϣϯ • ある要素が他の要素を所有する(has)ことを「集約」 • サイクリスト has a⾃転⾞ • 集約の⼀形態に「コンポジション」がある •
⾃転⾞ is composed of gears • 違いは「集約は弱く、コンポジションは強く依存する」 • とは・・・?
ڧ͍ґଘɺऑ͍ґଘɺͦΜͳͷਓͷɾɾ • ⾔いたいことは「互いにどういう影響を及ぼしているの か?を強調したいね」って点 • なので、「私がいなくても⽣きていけるの・・?」みたい な情報は嬉しいですよね • (それによって、お互いの存在意義って変わるでしょ?)
ͬ͘͟Γίϯϙδγϣϯ • 端折った説明 • 集約: 部分が無くても全体が成り⽴つ • コンポジション: 部分は全体が無いと意味を成さない •
コンポジション関係だと、 「全体がdestructされた時に部分も破棄される」イメージ • この説明はちょっとミスリードかもだけども
ࢀߟ • オブジェクトの動的側⾯を⾒極める:【改訂版】初歩の UML - ITmedia エンタープライズ https://www.itmedia.co.jp/im/articles/0306/05/ news001.html •
やはりお前らのコンポジションは間違っている - Qiita https://qiita.com/turanukimaru/items/ 0b1396393908b7e22618
૬ޓ࡞༻ਤ クラス(オブジェクト)がどのようにメッセージングし合うか を⽰す(動的モデリング)