Upgrade to Pro — share decks privately, control downloads, hide ads and more …

オブジェクト指向のこころ: 第3章 / DESIGN PATTERNS EXPLAINED: chapter-3

オブジェクト指向のこころ: 第3章 / DESIGN PATTERNS EXPLAINED: chapter-3

会社で「オブジェクト指向のこころ」の読書会をやっています

C90bac78c0fb61105cfd8239767f903d?s=128

hideki kinjyo
PRO

August 24, 2021
Tweet

Transcript

  1. 第3章 柔軟なコードを必要とする問題 課題図書: オブジェクト指向のこころ: デザインパターンとともに学ぶ

  2. ͲΜͳষͳͷ 「こういう課題を解決したい」を分析して(問題領域)、 「それにはどうやってアプローチできるだろう?」という 初めてのモデリング体験のコーナー!!みたいなやつです

  3. 問題を表現してみよう 3.2 CAD/CAMシステムから情報を抽出する 3.3 ボキャブラリを理解する 3.4 問題を表現する 3.5 本質的な問題とアプローチ

  4. ͓୊ $"%$".γεςϜ͔Β৘ใΛநग़͢Δ Ͱ͸·ͣɺࢲ͕ຊॻͰղઆ͍ͯ͠Δಎ࡯ΛಘΔ͖͔͚ͬͱͳͬͨɺࢲࣗ਎ͷաڈͷઃܭΛৼΓฦͬ ͯΈΔ͜ͱʹ͠·͢ɻ ౰࣌ɺࢲ͸γʔτϝλϧ ൘ۚ ͷՃ޻Λߦ͏$"%$".γεςϜͷઃܭ࡞ۀΛߦ͍ͬͯ·ͨ͠ɻਤ ͸ɺͦ͏͍ͬͨγʔτϝλϧͷՃ޻ྫͰ͢ɻ ࢲͷ࢓ࣄ͸ɺ$"%$".γεςϜ͔ΒσʔλΛநग़͠ɺطଘͷΤΩεύʔτγεςϜ͕ར༻Ͱ͖Δ Α͏ʹɺͦͷσʔλΛՃ޻͢ΔγεςϜΛ։ൃ͢Δ͜ͱͰͨ͠ɻ

    ΤΩεύʔτγεςϜ͸ɺ޻࡞ػցΛ੍ޚ͢ΔͨΊʹ͜ͷ৘ใΛඞཁͱ͍ͯͨ͠ͷͰ͢ɻ͔͠͠ɺ ΤΩεύʔτγεςϜ͸มߋ͢Δ͜ͱ͕೉͘͠ɺݱࡏ࢖༻͍ͯ͠Δ$"%$".γεςϜ͸සൟʹι ϑτ΢ΣΞ͕όʔδϣϯΞοϓ͢Δͱ͍͏͜ͱ͔ΒɺσʔλͷՃ޻ʹಛԽͨ͠γεςϜΛ։ൃ͢Δ ͜ͱͰɺ$"%$".γεςϜͷվగʹ؆୯ʹରԠͰ͖ΔΑ͏ʹ͔ͨͬͨ͠ͱ͍͏Θ͚Ͱ͢ɻ 1 
  5. ͓୊ $"%$".γεςϜ͔Β৘ใΛநग़͢Δ Ͱ͸·ͣɺࢲ͕ຊॻͰղઆ͍ͯ͠Δಎ࡯ΛಘΔ͖͔͚ͬͱͳͬͨɺࢲࣗ਎ͷաڈͷઃܭΛৼΓฦͬ ͯΈΔ͜ͱʹ͠·͢ɻ ౰࣌ɺࢲ͸γʔτϝλϧ ൘ۚ ͷՃ޻Λߦ͏$"%$".γεςϜͷઃܭ࡞ۀΛߦ͍ͬͯ·ͨ͠ɻਤ ͸ɺͦ͏͍ͬͨγʔτϝλϧͷՃ޻ྫͰ͢ɻ ࢲͷ࢓ࣄ͸ɺ$"%$".γεςϜ͔ΒσʔλΛநग़͠ɺطଘͷΤΩεύʔτγεςϜ͕ར༻Ͱ͖Δ Α͏ʹɺͦͷσʔλΛՃ޻͢ΔγεςϜΛ։ൃ͢Δ͜ͱͰͨ͠ɻ

    ΤΩεύʔτγεςϜ͸ɺ޻࡞ػցΛ੍ޚ͢ΔͨΊʹ͜ͷ৘ใΛඞཁͱ͍ͯͨ͠ͷͰ͢ɻ͔͠͠ɺ ΤΩεύʔτγεςϜ͸มߋ͢Δ͜ͱ͕೉͘͠ɺݱࡏ࢖༻͍ͯ͠Δ$"%$".γεςϜ͸සൟʹι ϑτ΢ΣΞ͕όʔδϣϯΞοϓ͢Δͱ͍͏͜ͱ͔ΒɺσʔλͷՃ޻ʹಛԽͨ͠γεςϜΛ։ൃ͢Δ ͜ͱͰɺ$"%$".γεςϜͷվగʹ؆୯ʹରԠͰ͖ΔΑ͏ʹ͔ͨͬͨ͠ͱ͍͏Θ͚Ͱ͢ɻ 1 
  6. ෼ੳͷॳา: ϘΩϟϒϥϦͷ੔ཧ • 「要求」を聞き出しつつ、名詞や動詞を抽出していきま しょうね〜みたいな話があります • それによって「責任を伴うオブジェクト」を⾒出していこ う、というものですね

  7. 本⽂をみてくれよな!

  8. Զ͕ؤுͬͯॻ͍ͨਤ΋ݟ͍ͯͩ͘͞

  9. ͯ͞ɺͲ͏͍͏΋ͷΛ࡞Ζ͏ʁ • なんでもCADはversion1(現⾏)、version2(移⾏ターゲッ ト)、version3(出るという噂)があるらしい • V1とV2で全く作りが異なる • V1はルーチンのコレクション、V2はOOP的な作り • 要するに使い⽅が異次元に違うの・・・

    • でも「エキスパートシステム」から⾒た際に、 「CADデータのバージョンいくつ?」は隠蔽したいよね
  10. ͜͏͍͏ײ͡Ͱ͍͚͔ͦͬ͢

  11. ૬ޓ࡞༻ਤ クラス(オブジェクト)がどのようにメッセージングし合うか を⽰す(動的モデリング)

  12. ݱ৔͔Β͸Ҏ্Ͱ͢ 感じてほしいのは、 この章では↓みたいなことを体験できたぜ〜という点 • 「問題領域」に対して「抽象」で思考する流れ • 静的なモデリングを⽤いて、責任の区分を汲み取りやすくし た点 • 誰がどこまで関与するか、何を隠蔽するか

    「コードから⼊って考える」以外の武器を⼿に⼊れることは、 オブジェクト脳を作る上での第1歩ですよ・・!