Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

෼ੳͷॳา: ϘΩϟϒϥϦͷ੔ཧ • 「要求」を聞き出しつつ、名詞や動詞を抽出していきま しょうね〜みたいな話があります • それによって「責任を伴うオブジェクト」を⾒出していこ う、というものですね

Slide 7

Slide 7 text

本⽂をみてくれよな!

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

ͯ͞ɺͲ͏͍͏΋ͷΛ࡞Ζ͏ʁ • なんでもCADはversion1(現⾏)、version2(移⾏ターゲッ ト)、version3(出るという噂)があるらしい • V1とV2で全く作りが異なる • V1はルーチンのコレクション、V2はOOP的な作り • 要するに使い⽅が異次元に違うの・・・ • でも「エキスパートシステム」から⾒た際に、 「CADデータのバージョンいくつ?」は隠蔽したいよね

Slide 10

Slide 10 text

͜͏͍͏ײ͡Ͱ͍͚͔ͦͬ͢

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

ݱ৔͔Β͸Ҏ্Ͱ͢ 感じてほしいのは、 この章では↓みたいなことを体験できたぜ〜という点 • 「問題領域」に対して「抽象」で思考する流れ • 静的なモデリングを⽤いて、責任の区分を汲み取りやすくし た点 • 誰がどこまで関与するか、何を隠蔽するか 「コードから⼊って考える」以外の武器を⼿に⼊れることは、 オブジェクト脳を作る上での第1歩ですよ・・!