$30 off During Our Annual Pro Sale. View Details »

オブジェクト指向のその前に-凝集度と結合度/Coheision-Coupling

sonatard
February 16, 2020

 オブジェクト指向のその前に-凝集度と結合度/Coheision-Coupling

sonatard

February 16, 2020
Tweet

More Decks by sonatard

Other Decks in Programming

Transcript

  1. 5 ͸͡Ίʹ w ؔ਺ͷ࣮૷͸ੈͷϓϩάϥϚͷશһ͕ຖ೔ߦ͏͜ͱͰ͋Γɺ͔ܽͤͳ͍ઃܭͰ͋Δͱ ݴͬͯ΋աݴͰ͸͋Γ·ͤΜɻ͔͠͠ʮςελϏϦςΟ͕ߴ͍ؔ਺ʹ͢ΔʯͷΑ͏ͳج ४ʹཹ·Γɺ໌֬ʹݴޠԽ͞Ε͍ͯΔ͜ͱ͕গͳ͍Ͱ͢ɻ w ͦ͜Ͱ೥୅Ҏ߱ͷߏ଄ԽϓϩάϥϛϯάΛϕʔεͱͨۙ͠୅ͷଟ͘ͷݴޠ͢΂ͯʹ ద༻Ͱ͖Δؔ਺෼ׂͷࢦඪͰ͋Δʮڽू౓ͱ݁߹౓ʯΛ঺հ͠·͢ɻ w

    ྑ͍ίʔυΛ͔͚ΔΤϯδχΞ͸ײ֮తʹ͜ͷڽू౓ͱ݁߹౓Λक͍ͬͯ·͢ w ͔͠͠ݴޠԽ͢Δ͜ͱͰɺઆಘྗΛ࣋ͬͯϨϏϡʔΛ͢Δ͜ͱ͕ՄೳͱͳΓ·͢ w ݱࡏͰ͸ɺؔ਺ʹݶΒ༷ͣʑͳػձͰར༻͞ΕΔݴ༿Ͱ͕͢ɺࠓճ͸ؔ਺ʹݶఆ͓ͯ͠ ࿩Λ͍͖͍ͯͨ͠ͱࢥ͍·͢ɻ
  2. 8 ڽू౓ w ڽू౓͸ߴ͍ɺ௿͍Ͱఔ౓Λදݱ͠·͢ɻ w ۮൃతڽू ࠷ѱɺڽू౓͕௿͍  w ؔ࿈ੑ͕ͳ͍ॲཧ͕ͭͷؔ਺಺ʹ࣮૷͞Ε͍ͯΔ

    w ࿦ཧతڽू w ࣌ؒతڽू w खॱతڽू w ௨৴తڽू w ஞ࣍తڽू w ػೳతڽू ࠷ྑɺڽू౓͕ߴ͍
  3. 9

  4. 15 ڽू౓·ͱΊ w ݸਓతʹ͸ҎԼͷ̐෼ྨͰे෼ͩͱߟ͍͑ͯΔ w ۮൃతڽू w ࿦ཧతڽू w ϑϥάʹΑΔॲཧͷ੾Γସ͑

    w ࣌ؒతڽू w ࣌ؒతɺखॱతɺ௨৴తɺஞ࣍త w ػೳతʹ͸ؔ࿈͕ബ͍͕ɺಉҰ࣌ؒ࣠Ͱ࣮ࢪ͢Δॲཧ w ػೳతڽू w ୯Ұػೳ ࣮ࢪ͢Δ͜ͱ͸ͳ͍ ʁ ʁ ཧ૝త
  5. 18 ࣌ؒతڽू w ࣌ؒతڽू͸ѱʜ  w NBJOؔ਺ͰඞཁͳηοτΞοϓ͢Δࡍʹ͸࣌ؒతڽूʹͳΔͷͰ͸ʁ w όοΫΤϯυͷϢʔεέʔε૚ͷؔ਺΋࣌ؒతڽूͰ͸ʁ w

    ΫϥΠΞϯτ΍ΞϓϦ։ൃͷ7JFXͷϥΠϑαΠΫϧ؅ཧ͸ඪ४ϑϨʔϜϫʔΫ͕࣌ؒ తڽूΛڧ੍ͯ͘͠ΔͷͰ͸ʁ w ࣌ؒతڽू͕ઈରతͳѱͱ͍͏Θ͚Ͱ͸ͳ͍ w ඞཁʹԠ࣮ͯ͡ࢪ͠ͳ͚Ε͹͍͚ͳ͍ w ͔͠͠ؾΛ͚ͭΔϙΠϯτ͸ଘࡏ͢Δ
  6. 24 ࣌ؒతڽूͷݱ࣮ɺ3FBDUͷྫ ॲཧ" ॲཧ# ॲཧ$ ॲཧ" ॲཧ# ॲཧ$ ͨ·ͨ·ಉ࣌ؒ͡ʹ࣮ߦ͢Δ͚ͩͰɺ ػೳͱͯ͠͸ແؔ܎ͳॲཧΛಉؔ͡਺ʹ

    هड़͠ͳ͚Ε͹ͳΒͳ͍ ࣌ؒతڽू ಉ͡ॲཧ"ʹؔ͢Δ͜ͱͰ΋ ࣮ߦλΠϛϯάͰؔ਺͕෼͔Εͯ͠·͏
  7. 27 ࣌ؒతڽूͷݱ࣮ͱ3FBDUͷରԠ w 3FBDU͸࣌ؒతڽूΛ͜ͷΑ͏ʹղܾ͠·ͨ͠ɻ w ͜Ε͸ͱͯ΋໘ന͍ࢼΈͰ͢ɻ w ͜ͷΑ͏ʹڽू౓Λཧղ͍ͯ͠Δͱɺ3FBDU)PPLTͷVTF& ff FDU͕ొ৔ͨ͠ͱ͖ʹ

    ʮԿ΍Β৽͍͠΋ͷ͕Ͱ͖ͯͨͳʁͳΜͷҙຯ͕͋ΔΜͩΖ͏ʁʯ ͱ͸ͳΒͣʹ ʮ࣌ؒతڽूͷ໰୊఺Λผͷ֯౓͔ΒٖࣅతʹػೳతڽूΛ࣮ݱ͍ͯ͠ΔΜͩʯ ͱཧղ͢Δ͜ͱ͕Ͱ͖ΔΑ͏ʹͳΓ·͢ɻ w ࠓճ͓఻͍͑ͨ͜͠ͱ͸VTF& ff FDU͕ྑ͍ͱ͍͏͜ͱͰ͸ͳ͘ɺڽू౓ͷΑ͏ͳجૅͱ ͳΔ֓೦Λཧղ͓ͯ͘͜͠ͱͰɺ৽ͨͳٕज़Λద੾ʹೝࣝͰ͖ΔΑ͏ʹͳΓɺΑΓ࠷ద ͳٕज़తͳબ୒͕Ͱ͖ΔΑ͏ʹͳΔͱ͍͏͜ͱͰ͢ɻ
  8. 44 ࿦ཧతڽूͷળѱGPSΞϓϦɺϑϩϯτΤϯδχΞ w ͪ͜Β΋࿦ཧతڽूʹͳΓ·͕͢ɺΑ͘΍ͬͯ͠·͏͜ͱͰ͸ͳ͍Ͱ͠ΐ͏͔ w ྫ 1SP fi MFը໘ w

    Ϣʔβ͸໊લͱ೥ྸ w ҩऀ͸໊લͱ೥ྸͱۈ຿೔ 6TFS5ZQFʹԠͯ͡8PSLJOH%BZTΛ දࣔ͢Δ͔Ͳ͏͔ܾΊΔ
  9. 46 ࿦ཧతڽूͷળѱGPSΞϓϦɺϑϩϯτΤϯδχΞ w Ϣʔεέʔε͕ίϯϙʔωϯτʹ༩͑ΔӨڹΛߟ͑Δ w Ϣʔεέʔεͷมߋྫ w Ϣʔβ w ໊લɺ೥ྸɺੑผ

    ௥Ճ  w ҩऀ w ໊લɺ೥ྸ ࡟আ ɺۈ຿೔ w ͜ΕΒ͸ݸผͷϢʔεέʔεʹΑΔมߋͰ͕͢ɺ͢΂͕͓ͯޓ͍ʹؔ܎ͳ͍͸ͣͳͷ ʹ͓ޓ͍ͷ࣮૷ʹӨڹͯ͠͠·͍·͢ w ৚݅෼ذͷ࣮૷ΛޡΔͱҩऀͷ೥ྸΛදࣔͯ͠͠·͏͔΋͠Εͳ͍ ͓ޓ͍ʹϢʔεέʔεͷมߋ͕ଞͷίϯϙʔωϯτͷ࣮૷ʹӨڹ͍ͯ͠Δ
  10. 47 ࿦ཧతڽूͷળѱGPSΞϓϦɺϑϩϯτΤϯδχΞ w Ϣʔεέʔε͕ίϯϙʔωϯτʹ༩͑ΔӨڹΛߟ͑Δ w Ϣʔεέʔεͷมߋྫ w Ϣʔβ w ໊લ

    ࡟আ ɺ೥ྸ ੜ೥݄೔ʹมߋ  w ҩऀ w ໊લɺ೥ྸɺۈ຿೔ w ͜ͷมߋʹΑΓϢʔβͱҩऀͷϓϩϑΟʔϧʹಉ߲͡໨͸ͳ͘ͳΓ·ͨ͠ w ಉ͡ίϯϙʔωϯτʹ͍ͯ͠Δཧ༝͕ͳ͘ͳͬͨͷͰ෼཭͠·͔͢  w ϢʔεέʔεͷมߋʹԠͯ͡ίϯϙʔωϯτͷઃܭ͕มΘΔͷ͸ෆ҆ఆͳઃܭͰ͢ w ·ͨڞ௨ͷ߲໨͕ొ৔ͨ͠Βɺ࠶౓ڞ௨ͷίϯϙʔωϯτΛ࡞Γ·͔͢ʁ w ͦͯ͠·ͨڞ௨ͷ߲໨͕ͳ͘ͳͬͨΒɺ·ͨ෼཭ʜ ڞ௨߲໨ͷ༗ແ͕ઃܭʹӨڹ͍ͯ͠Δ
  11. 48 ࿦ཧతڽूͷળѱGPSΞϓϦɺϑϩϯτΤϯδχΞ w ղܾࡦ w Ϣʔεέʔε͝ͱʹίϯϙʔωϯτΛ࡞੒͠·͢ w 6TFS1SP fi MF

    ໊લɺ೥ྸ  w ੑผ͕ඞཁͳΒ௥Ճɺ೥ྸΛੜ೥݄೔ʹมߋ w %PDUPS1SP fi MF ໊લɺ೥ྸɺۈ຿೔  w ೥ྸ͕ෆཁͳΒ࡟আ w લఏ w ֤ཁૉͷίϯϙʔωϯτ͸ɺϢʔεέʔεඇґଘͷը໘ͷύʔπͱͯ͠ػೳత ڽूͰఆ͓ٛͯ͘͠ /BNFɺ"HFɺ8PSLJOH%BZT ͓ޓ͍ʹϢʔεέʔεͷมߋ͕ ଞͷίϯϙʔωϯτͷ࣮૷ʹӨڹ͠ͳ͍ ڞ௨߲໨ͷ༗ແ͸ઃܭʹӨڹ͠ͳ͍
  12. 49 ࣮͸͜ͷ࿩͸ॻ੶$MFBO"SDIJUFDUVSFʹొ৔͍ͯ͠·͢ w $MFBO"SDIJUFDUVSFΛಡΜͩ͜ͱ͕͋Δํ͸ɺ͜ͷจষͷҙਤΛద੾ʹଊ͑Δ͜ͱ͕Ͱ ͖͍ͯͨͰ͠ΐ͏͔ʁ w ࿦ཧతڽूΛཧղ͍ͯ͠ΔࠓͳΒΑΓ໌֬ʹཧղͰ͖Δͱࢥ͍·͢ w ࠶ܝ w

    ڽू౓ͷΑ͏ͳجૅͱͳΔ֓೦Λཧղ͓ͯ͘͜͠ͱͰɺ৽ͨͳٕज़Λద੾ʹೝࣝͰ͖ ΔΑ͏ʹͳΓɺΑΓ࠷దͳٕज़తͳબ୒͕Ͱ͖ΔΑ͏ʹͳΓ·͢ɻ Ҿ༻ݩ$MFBO"SDIJUFDUVSFɹୡਓʹֶͿιϑτ΢ΣΞͷߏ଄ͱઃܭ ϢʔεέʔεΛਨ௚ʹ෼཭͍ͯ͠Δͱɺ͜͏ͨ͠໰୊ʹૺ۰͢Δɻͦͯ͠ɺϢʔεέʔεΛ౷߹ͨ͘͠ͳΔɻͳͥͳΒɺ ը໘ߏ੒͕ࣅ͍ͯͨΓɺΞϧΰϦζϜ͕ࣅ͍ͯͨΓɺσʔλϕʔεͷΫΤϦ΍εΩʔϚ͕ࣅ͍ͯͨΓ͢Δ͔Βͩɻ ൓ࣹతʹॏෳΛഉআ͢ΔࡑΛ൜ͯ͠͸͍͚ͳ͍ɻͦͷॏෳ͕ຊ෺͔Ͳ͏͔ΛݟۃΊΔ΂͖ͩ
  13. 53 ڽू౓·ͱΊ w ۮൃతڽू w ࿦ཧతڽू w ϑϥάʹΑΔॲཧͷ੾Γସ͑ w ࣌ؒతڽूɺखॱతڽूɺ௨৴తڽूɺஞ࣍తڽू

    w ػೳతʹ͸ؔ࿈͕ബ͍͕ɺಉҰ࣌ؒ࣠ͰॲཧΛ࣮ࢪ͢Δ w ػೳతڽू ࠷΋ྑ͍  w ୯Ұػೳ ࣮ࢪ͢Δ͜ͱ͸ͳ͍ ࣮ࢪ͕͕ͪͩ͠ ۃྗ࣮ࢪ͢Δ΂͖Ͱ͸ͳ͍ ঢ়گʹԠ࣮ͯ͡ࢪ͢Δඞཁ͋Γ ཧ૝త
  14. 56 ݁߹౓ w ݁߹౓͕௿͍ͱྑ͍ؔ਺Ͱ͋Γɺߴ͍ͱѱ͍ؔ਺Ͱ͋Γɺ݁߹౓ʹ͸ϥϯΫ͕ଘࡏ͍ͯ͠Δ w ಺༰݁߹ʢ࠷ѱ  w ଞͷؔ਺ͱ֎෦એݴ͞Ε͍ͯͳ͍஋Ͱ݁߹͞Ε͍ͯΔɻ$ݴޠͰಛఆͷΞυϨεͷ஋Λ௚઀มߋ͢ΔͳͲ w

    ڞ௨݁߹ w ڞ௨ͷάϩʔόϧม਺Ͱ݁߹͞Ε͍ͯΔ w ֎෦݁߹ w QVCMJDม਺Ͱ݁߹͞Ε͍ͯΔ w ੍ޚ݁߹ w ར༻͢Δଆͷؔ਺͕ར༻͞ΕΔଆͷૢ࡞ΛϑϥάͰࢦࣔ͢Δ͜ͱͰ݁߹͍ͯ͠Δɻݺͼग़͞ΕΔଆ͸࿦ཧ తڽूʹͳΔ w ελϯϓ݁߹ w ߏ଄ମ΍ΫϥεͳͲͷड͚౉͠Ͱ݁߹͍ͯ͠Δ w σʔλ݁߹ w εΧϥʔܕͷड͚౉͠Ͱ݁߹͍ͯ͠Δ w ϝοηʔδ݁߹ ࠷ྑ  w ؔ਺ͷ࣮ߦͰ݁߹͍ͯ͠Δɻ஋ͷड͚౉͠͸ଘࡏ͠ͳ͍ɻ
  15. 57 ݁߹౓ w ಺༰݁߹ʢ࠷ѱ  w ڞ௨݁߹ɺ֎෦݁߹ w άϩʔόϧม਺ʹΑΔड͚౉͠ w

    ੍ޚ݁߹ w ؔ਺ύϥϝʔλʹΑΓࢦࣔΛग़͢ w ελϯϓ݁߹ɺσʔλ݁߹ɺϝοηʔδ݁߹ w ؔ਺ύϥϝʔλʹΑΔ஋ͷड͚౉͠ ى͜Γಘͳ͍ ࣮ࢪ͢Δ΂͖Ͱ͸ͳ͍ ཧ૝త ࣮ࢪ͕͕ͪͩ͠ ۃྗ࣮ࢪ͢Δ΂͖Ͱ͸ͳ͍
  16. 60 ͓ΘΓʹ w ۙ೥༷ʑͳΞʔΩςΫνϟ͕ొ৔ͯ͠ɺ·ͬͨ͘৽͍͠΋ͷ͕ొ৔ͨ͠Α͏ʹײ͡Δ͜ ͱ͕͋Δ͔ͱࢥ͍·͢ɻ w ͔ͦ͠͠ΕΒͷ͢΂ͯͷجຊతͳ౔୆͸มΘ͍ͬͯΔΘ͚Ͱ͸͋Γ·ͤΜɻ w ؔ৺͝ͱͷ෼཭ w

    ୯Ұ੹೚ w ந৅౓ͷ౷Ұ w ڽू౓ͱ݁߹౓΋͜ΕΒͷ౔୆ͷ্ʹؔ਺ͷ࣮૷ํ๏ͱ͍͏ࢹ఺Ͱ·ͱΊͳ͓ͨ͠΋ͷ Ͱ͢ɻ w ۙ೥ొ৔͢ΔΞʔΩςΫνϟ΋ಉ༷Ͱ͢ɻ w $MFBO"SDIJUDUVSF΍3FBDU)PPLTͷ͓࿩Ͱͨ͠௨Γɺ͜ΕΒͷ౔୆Λਖ਼͘͠ཧղ͢Δ͜ ͱͰɺ৽ͨͳΞʔΩςΫνϟʹࠞཚ͢Δ͜ͱͳ͘εϜʔζʹཧղͰ͖ΔΑ͏ʹͳΓ· ͢ɻ