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
510
Composerの依存解決 #phpstudy
o0h
PRO
0
120
「影響が少ない」を自分の目でみてみる
o0h
PRO
3
1.7k
PHPによる"非"構造化プログラミング入門 -本当に熱いスパゲティコードを求めて- #phperkaigi
o0h
PRO
0
1.7k
もう少しテストを書きたいんじゃ〜 #phpstudy
o0h
PRO
23
5.3k
『テスト書いた方が開発が早いじゃん』を解き明かす #phpcon_nagoya
o0h
PRO
9
4k
色んなオートローダーを覗き見る #phpcon_okinawa
o0h
PRO
5
730
ヒューマンエラーの本を読んだ ~報告会~
o0h
PRO
3
370
みんなでワイワイ「テスト駆動開発」の話をやる会 #techramen24conf
o0h
PRO
4
740
Other Decks in Programming
See All in Programming
NIKKEI Tech Talk#38
cipepser
0
120
Domain-centric? Why Hexagonal, Onion, and Clean Architecture Are Answers to the Wrong Question
olivergierke
3
940
Developer Joy - The New Paradigm
hollycummins
1
340
Writing Better Go: Lessons from 10 Code Reviews
konradreiche
3
5.7k
CSC509 Lecture 06
javiergs
PRO
0
260
AkarengaLT vol.38
hashimoto_kei
1
110
スキーマ駆動で、Zod OpenAPI Honoによる、API開発するために、Hono Takibiというライブラリを作っている
nakita628
0
300
NixOS + Kubernetesで構築する自宅サーバーのすべて
ichi_h3
0
1.1k
Google Opalで使える37のライブラリ
mickey_kubo
3
130
Cursorハンズオン実践!
eltociear
2
1.2k
デミカツ切り抜きで面倒くさいことはPythonにやらせよう
aokswork3
0
260
その面倒な作業、「Dart」にやらせませんか? Flutter開発者のための業務効率化
yordgenome03
1
140
Featured
See All Featured
Context Engineering - Making Every Token Count
addyosmani
7
290
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Writing Fast Ruby
sferik
629
62k
Raft: Consensus for Rubyists
vanstee
140
7.2k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.7k
Building an army of robots
kneath
306
46k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.5k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
Making Projects Easy
brettharned
120
6.4k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
990
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歩ですよ・・!