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
49
オブジェクト指向のこころ: 第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
230
Composerの依存解決 #phpstudy
o0h
PRO
0
99
「影響が少ない」を自分の目でみてみる
o0h
PRO
3
1.6k
PHPによる"非"構造化プログラミング入門 -本当に熱いスパゲティコードを求めて- #phperkaigi
o0h
PRO
0
1.5k
もう少しテストを書きたいんじゃ〜 #phpstudy
o0h
PRO
23
5.1k
『テスト書いた方が開発が早いじゃん』を解き明かす #phpcon_nagoya
o0h
PRO
10
3.6k
色んなオートローダーを覗き見る #phpcon_okinawa
o0h
PRO
5
650
ヒューマンエラーの本を読んだ ~報告会~
o0h
PRO
3
330
みんなでワイワイ「テスト駆動開発」の話をやる会 #techramen24conf
o0h
PRO
4
650
Other Decks in Programming
See All in Programming
Enterprise Web App. Development (2): Version Control Tool Training Ver. 5.1
knakagawa
1
120
PHP 8.4の新機能「プロパティフック」から学ぶオブジェクト指向設計とリスコフの置換原則
kentaroutakeda
2
540
プロダクト志向ってなんなんだろうね
righttouch
PRO
0
160
つよそうにふるまい、つよい成果を出すのなら、つよいのかもしれない
irof
1
300
deno-redisの紹介とJSRパッケージの運用について (toranoana.deno #21)
uki00a
0
150
PHPでWebSocketサーバーを実装しよう2025
kubotak
0
160
エンジニア向け採用ピッチ資料
inusan
0
160
アンドパッドの Go 勉強会「 gopher 会」とその内容の紹介
andpad
0
260
VS Code Update for GitHub Copilot
74th
1
390
「Cursor/Devin全社導入の理想と現実」のその後
saitoryc
0
150
High-Level Programming Languages in AI Era -Human Thought and Mind-
hayat01sh1da
PRO
0
230
型付きアクターモデルがもたらす分散シミュレーションの未来
piyo7
0
810
Featured
See All Featured
Six Lessons from altMBA
skipperchong
28
3.8k
GitHub's CSS Performance
jonrohan
1031
460k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.2k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Making Projects Easy
brettharned
116
6.3k
The Invisible Side of Design
smashingmag
299
51k
A better future with KSS
kneath
239
17k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
How to train your dragon (web standard)
notwaldorf
93
6.1k
Adopting Sorbet at Scale
ufuk
77
9.4k
The Pragmatic Product Professional
lauravandoore
35
6.7k
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歩ですよ・・!