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
オブジェクト指向のこころ: 第3章 / DESIGN PATTERNS EXPLAINED: ...
Search
hideki kinjyo
PRO
August 24, 2021
Programming
0
50
オブジェクト指向のこころ: 第3章 / DESIGN PATTERNS EXPLAINED: chapter-3
会社で「オブジェクト指向のこころ」の読書会をやっています
hideki kinjyo
PRO
August 24, 2021
Tweet
Share
More Decks by hideki kinjyo
See All by hideki kinjyo
Composerが「依存解決」のためにどんな工夫をしているか #phpcon
o0h
PRO
1
410
Composerの依存解決 #phpstudy
o0h
PRO
0
120
「影響が少ない」を自分の目でみてみる
o0h
PRO
3
1.7k
PHPによる"非"構造化プログラミング入門 -本当に熱いスパゲティコードを求めて- #phperkaigi
o0h
PRO
0
1.6k
もう少しテストを書きたいんじゃ〜 #phpstudy
o0h
PRO
23
5.2k
『テスト書いた方が開発が早いじゃん』を解き明かす #phpcon_nagoya
o0h
PRO
10
3.9k
色んなオートローダーを覗き見る #phpcon_okinawa
o0h
PRO
5
690
ヒューマンエラーの本を読んだ ~報告会~
o0h
PRO
3
360
みんなでワイワイ「テスト駆動開発」の話をやる会 #techramen24conf
o0h
PRO
4
690
Other Decks in Programming
See All in Programming
Kiroで始めるAI-DLC
kaonash
2
540
Improving my own Ruby thereafter
sisshiki1969
1
150
MCPで実現するAIエージェント駆動のNext.jsアプリデバッグ手法
nyatinte
7
1k
Claude Codeで挑むOSSコントリビュート
eycjur
0
190
テストカバレッジ100%を10年続けて得られた学びと品質
mottyzzz
2
470
CloudflareのChat Agent Starter Kitで簡単!AIチャットボット構築
syumai
2
400
go test -json そして testing.T.Attr / Kyoto.go #63
utgwkk
2
260
Jakarta EE Core Profile and Helidon - Speed, Simplicity, and AI Integration
ivargrimstad
0
330
私の後悔をAWS DMSで解決した話
hiramax
4
190
The state patternの実践 個人開発で培ったpractice集
miyanokomiya
0
160
UbieのAIパートナーを支えるコンテキストエンジニアリング実践
syucream
2
820
DockerからECSへ 〜 AWSの海に出る前に知っておきたいこと 〜
ota1022
5
1.9k
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
Building an army of robots
kneath
306
46k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
111
20k
How to Think Like a Performance Engineer
csswizardry
26
1.9k
Testing 201, or: Great Expectations
jmmastey
45
7.6k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
What's in a price? How to price your products and services
michaelherold
246
12k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
GraphQLとの向き合い方2022年版
quramy
49
14k
Optimizing for Happiness
mojombo
379
70k
Transcript
第3章 柔軟なコードを必要とする問題 課題図書: オブジェクト指向のこころ: デザインパターンとともに学ぶ
ͲΜͳষͳͷ 「こういう課題を解決したい」を分析して(問題領域)、 「それにはどうやってアプローチできるだろう?」という 初めてのモデリング体験のコーナー!!みたいなやつです
問題を表現してみよう 3.2 CAD/CAMシステムから情報を抽出する 3.3 ボキャブラリを理解する 3.4 問題を表現する 3.5 本質的な問題とアプローチ
͓ $"%$".γεςϜ͔ΒใΛநग़͢Δ Ͱ·ͣɺࢲ͕ຊॻͰղઆ͍ͯ͠ΔಎΛಘΔ͖͔͚ͬͱͳͬͨɺࢲࣗͷաڈͷઃܭΛৼΓฦͬ ͯΈΔ͜ͱʹ͠·͢ɻ ࣌ɺࢲγʔτϝλϧ ൘ۚ ͷՃΛߦ͏$"%$".γεςϜͷઃܭ࡞ۀΛߦ͍ͬͯ·ͨ͠ɻਤ ɺͦ͏͍ͬͨγʔτϝλϧͷՃྫͰ͢ɻ ࢲͷࣄɺ$"%$".γεςϜ͔ΒσʔλΛநग़͠ɺطଘͷΤΩεύʔτγεςϜ͕ར༻Ͱ͖Δ Α͏ʹɺͦͷσʔλΛՃ͢ΔγεςϜΛ։ൃ͢Δ͜ͱͰͨ͠ɻ
ΤΩεύʔτγεςϜɺ࡞ػցΛ੍ޚ͢ΔͨΊʹ͜ͷใΛඞཁͱ͍ͯͨ͠ͷͰ͢ɻ͔͠͠ɺ ΤΩεύʔτγεςϜมߋ͢Δ͜ͱ͕͘͠ɺݱࡏ༻͍ͯ͠Δ$"%$".γεςϜසൟʹι ϑτΣΞ͕όʔδϣϯΞοϓ͢Δͱ͍͏͜ͱ͔ΒɺσʔλͷՃʹಛԽͨ͠γεςϜΛ։ൃ͢Δ ͜ͱͰɺ$"%$".γεςϜͷվగʹ؆୯ʹରԠͰ͖ΔΑ͏ʹ͔ͨͬͨ͠ͱ͍͏Θ͚Ͱ͢ɻ 1
͓ $"%$".γεςϜ͔ΒใΛநग़͢Δ Ͱ·ͣɺࢲ͕ຊॻͰղઆ͍ͯ͠ΔಎΛಘΔ͖͔͚ͬͱͳͬͨɺࢲࣗͷաڈͷઃܭΛৼΓฦͬ ͯΈΔ͜ͱʹ͠·͢ɻ ࣌ɺࢲγʔτϝλϧ ൘ۚ ͷՃΛߦ͏$"%$".γεςϜͷઃܭ࡞ۀΛߦ͍ͬͯ·ͨ͠ɻਤ ɺͦ͏͍ͬͨγʔτϝλϧͷՃྫͰ͢ɻ ࢲͷࣄɺ$"%$".γεςϜ͔ΒσʔλΛநग़͠ɺطଘͷΤΩεύʔτγεςϜ͕ར༻Ͱ͖Δ Α͏ʹɺͦͷσʔλΛՃ͢ΔγεςϜΛ։ൃ͢Δ͜ͱͰͨ͠ɻ
ΤΩεύʔτγεςϜɺ࡞ػցΛ੍ޚ͢ΔͨΊʹ͜ͷใΛඞཁͱ͍ͯͨ͠ͷͰ͢ɻ͔͠͠ɺ ΤΩεύʔτγεςϜมߋ͢Δ͜ͱ͕͘͠ɺݱࡏ༻͍ͯ͠Δ$"%$".γεςϜසൟʹι ϑτΣΞ͕όʔδϣϯΞοϓ͢Δͱ͍͏͜ͱ͔ΒɺσʔλͷՃʹಛԽͨ͠γεςϜΛ։ൃ͢Δ ͜ͱͰɺ$"%$".γεςϜͷվగʹ؆୯ʹରԠͰ͖ΔΑ͏ʹ͔ͨͬͨ͠ͱ͍͏Θ͚Ͱ͢ɻ 1
ੳͷॳา: ϘΩϟϒϥϦͷཧ • 「要求」を聞き出しつつ、名詞や動詞を抽出していきま しょうね〜みたいな話があります • それによって「責任を伴うオブジェクト」を⾒出していこ う、というものですね
本⽂をみてくれよな!
Զ͕ؤுͬͯॻ͍ͨਤݟ͍ͯͩ͘͞
ͯ͞ɺͲ͏͍͏ͷΛ࡞Ζ͏ʁ • なんでもCADはversion1(現⾏)、version2(移⾏ターゲッ ト)、version3(出るという噂)があるらしい • V1とV2で全く作りが異なる • V1はルーチンのコレクション、V2はOOP的な作り • 要するに使い⽅が異次元に違うの・・・
• でも「エキスパートシステム」から⾒た際に、 「CADデータのバージョンいくつ?」は隠蔽したいよね
͜͏͍͏ײ͡Ͱ͍͚͔ͦͬ͢
૬ޓ࡞༻ਤ クラス(オブジェクト)がどのようにメッセージングし合うか を⽰す(動的モデリング)
ݱ͔ΒҎ্Ͱ͢ 感じてほしいのは、 この章では↓みたいなことを体験できたぜ〜という点 • 「問題領域」に対して「抽象」で思考する流れ • 静的なモデリングを⽤いて、責任の区分を汲み取りやすくし た点 • 誰がどこまで関与するか、何を隠蔽するか
「コードから⼊って考える」以外の武器を⼿に⼊れることは、 オブジェクト脳を作る上での第1歩ですよ・・!