ćƒ•ćƒ¬ćƒ¼ćƒ ćƒÆćƒ¼ć‚Æ

原則

is-a/has-a関係

is-a は 継承関係. has-a は åŒ…å«é–¢äæ‚ (委譲).

šŸ“is-a関係

šŸ“ē¶™ę‰æ(Inheritance)é–¢äæ‚ć‚’č”Øć™ä»£ę›æč”Øē¾. B is-a Aとは, BはAć®ć‚µćƒ–ć‚Æćƒ©ć‚¹. ć«ćŠć‘ć‚‹ę±ŽåŒ–.

is-a 俔仰とは, ćŖć‚“ć§ć‚‚ē¶™ę‰æć™ć‚Œć°ć„ć„ćØć„ć†č€ƒćˆę–¹.

šŸ“has-a関係

包含, ē§»č­²é–¢äæ‚ć‚’ē¤ŗć™ä»£ę›æč”Øē¾.

šŸ’”is-aćÆåˆ†é”žć§has-aćÆåˆ†č§£

ref. åˆ†ęžę‰‹ę³•ć®ć‚­ćƒ›ćƒ³ļ¼šć€Œåˆ†č§£ćØåˆ†é”žć€ć‚ˆć‚Š.

  • åÆ¾č±”ć‚’åˆ†é”žć—ć¦ē†č§£ć™ć‚‹ę–¹ę³•ćŒis-a関係.
  • åÆ¾č±”ć‚’ć‚ˆć‚Šå˜ē“”ćŖę§‹ęˆč¦ē“ ć«åˆ†č§£ć—ć¦ē†č§£ć™ć‚‹ę–¹ę³•ćŒhas-a関係.

ćƒ”ć‚¢ćƒŽć®ä¾‹ć§ćÆ,

  • ćƒ”ć‚¢ćƒŽćÆéµē›¤ę„½å™Ø.
    • ćƒ”ć‚¢ćƒŽ is-a éµē›¤ę„½å™Ø.
  • ćƒ”ć‚¢ćƒŽćÆéµē›¤ć‚’ęŒć¤.
    • ćƒ”ć‚¢ćƒŽ has-a éµē›¤.

✨is-aćÆćƒ•ć‚©ćƒ«ćƒ€ć§has-aはタグ

šŸ“Wikić®ćƒ”ćƒ¢ć‚’ę•“ē†ć™ć‚‹ćØć, ć‚æć‚°ćØćƒ•ć‚©ćƒ«ćƒ€ć®ć©ć”ć‚‰ć‚’ć¤ć‹ć†ć‹ę‚©ć‚€ć“ćØćŒć‚ˆćć‚ć‚‹.

ć“ć‚ŒćÆ, OOPć§ć„ć†ćØć“ć‚ć®, is-aとhas-ać®é–¢äæ‚ć«ä¼¼ć¦ć„ć‚‹ć“ćØć«ę°—ć„ć„ćŸ.

  • is-aとは, ē¶™ę‰æé–¢äæ‚ć§ć‚ć‚Šćƒ•ć‚©ćƒ«ćƒ€ę§‹é€ .
  • has-aとは, ē§»č­²é–¢äæ‚ć§ć‚ć‚Šć‚æć‚°ć«ć‚ˆć‚‹ć‚°ćƒ«ćƒ¼ćƒ”ćƒ³ć‚°.

ć‚ć‚‹ćƒ”ćƒ¢ć‚’ć²ćØć¤ć®ćƒ•ć‚”ć‚¤ćƒ«ć«ć„ć‚Œć¦ć‚‚, åˆ„ć®ćƒ•ć‚”ć‚¤ćƒ«ć«å…„ć‚ŒćŸć„ć“ćØćÆćŸćć•ć‚“ć‚ć‚‹. ć“ć‚ŒćÆOOPć«ćŠć„ć¦šŸ“å¤šé‡ē¶™ę‰æć®å•é”ŒćØć—ć¦ć‚ˆćēŸ„ć‚‰ć‚Œć¦ć„ć‚‹ć“ćØć . ć“ć®å “åˆ, ć‚æć‚°ć‚’ć¤ć‹ć£ć¦ęƒ…å ±ć‚’ę•“ē†ć™ć‚‹ć®ćŒč‰Æć„č§£ę±ŗę–¹ę³•.

ć‚æć‚°ę§‹é€ ć®ć»ć†ćŒęƒ…å ±ć‚’ę•“ē†ć—ć‚„ć™ć„ćŒćƒ•ć‚©ćƒ«ćƒ€ę§‹é€ ć®ć»ć†ćŒē†č§£ćŒć—ć‚„ć™ć„

ćŸć å€‹äŗŗēš„ć«ćÆ, ē‰©äŗ‹ć‚’ē†č§£ć—ć‚ˆć†ćØć—ćŸćØćć«, ćƒ•ć‚©ćƒ«ćƒ€ę§‹é€ ć«ć‚ˆć‚‹ćƒˆćƒƒćƒ—ćƒ€ć‚¦ćƒ³ć®ē†č§£ć®ć»ć†ćŒćƒœćƒˆćƒ ć‚¢ćƒƒćƒ—ć‚ˆć‚Šć‚‚ć‚¹ćƒ”ćƒ¼ćƒ‰ćŒé€Ÿć„. äøŠć‹ć‚‰ćæćˆć‚‹ć‹ć‚‰ć‹.

šŸ“šć‚Ŗćƒ–ć‚øć‚§ć‚ÆćƒˆęŒ‡å‘ć®ć“ć“ć‚

OOP 恮 2 大原則

ć‚Ŗćƒ–ć‚øć‚§ć‚ÆćƒˆęŒ‡å‘ć®ć“ć“ć‚ćØćÆ, ć‚ŗćƒćƒŖä»„äø‹.

šŸ“ęµå‹•ēš„č¦ē“ ć‚’ęŽ¢ć—å‡ŗć—ć¦ć‚«ćƒ—ć‚»ćƒ«åŒ–ć™ć‚‹

šŸŽ“č¦ē“ ćØå¤‰ę•°

ć‚Æćƒ©ć‚¹ē¶™ę‰æć‚ˆć‚Šć‚‚ć‚Ŗćƒ–ć‚øć‚§ć‚Æćƒˆć®é›†ē“„ć‚’å¤šē”Øć™ć‚‹

åč©ž/ å‹•č©ž ęŠ½å‡ŗę³•

  • å•é”Œé ˜åŸŸć«å­˜åœØć™ć‚‹åč©žć‚’ę“—ć„å‡ŗć—ćć‚Œć‚‰ć‚’č”Øē¾ć™ć‚‹ć‚Ŗćƒ–ć‚øć‚§ć‚Æćƒˆć‚’ē”Ÿęˆć™ć‚‹.
  • åč©žć«é–¢é€£ć—ćŸå‹•č©žć‚’ę“—ć„å‡ŗć—,ćć‚Œć‚‰ć‚’č”Øē¾ć™ć‚‹ćƒ”ć‚½ćƒƒćƒ‰ć‚’čæ½åŠ ć™ć‚‹

å…±é€šę€§/ åÆå¤‰ę€§ åˆ†ęžę³•

  • å…±é€šę€§åˆ†ęž:
    • ę™‚é–“ćŒēµŒć£ć¦ć‚‚å¤‰åŒ–ć—ć«ćć„ę§‹é€ ć‚’č¦‹ć¤ć‘ć‚‹ć‚‚ć®
    • å…±é€šę€§åˆ†ęžć«ć‚ˆć£ć¦ć¾ćØć‚ć‚‰ć‚ŒćŸę¦‚åæµć‚’ęŠ½č±”ć‚Æćƒ©ć‚¹ć«ć‚ˆć£ć¦č”Øē¾
  • åÆå¤‰ę€§åˆ†ęž:
    • å¤‰åŒ–ć—ć‚„ć™ć„ę§‹é€ ć‚’ę“—ć„å‡ŗć™ć‚‚ć®
    • åÆå¤‰ę€§åˆ†ęžć§å¾—ćŸęµå‹•ēš„č¦ē“ ćÆęŠ½č±”ć‚Æćƒ©ć‚¹ć®ę“¾ē”Ÿć‚Æćƒ©ć‚¹ć«ć‚ˆć£ć¦å®Ÿč£…ć•ć‚Œć‚‹

čØ­čØˆę‰‹é †:

  • (ęŠ½č±”ć‚Æćƒ©ć‚¹) ć“ć®ć‚Æćƒ©ć‚¹ćŒęŒć¤č²¬å‹™ć‚’ć™ć¹ć¦å…Øć†ć™ć‚‹ć«ćÆć©ć†ć‚ˆć†ćŖć‚¤ćƒ³ć‚æćƒ¼ćƒ•ć‚§ć‚¤ć‚¹ćŒåæ…č¦ć‹?
  • (ę“¾ē”Ÿć‚Æćƒ©ć‚¹) ć“ć®ē‰¹å®šå®Ÿč£…ć®äø­ć§ć©ć†ć®ć‚ˆć†ć«ć—ć¦äøŽćˆć‚‰ć‚ŒćŸä»•ę§˜ć‚’å®Ÿč£…ć§ćć‚‹ć®ć‹?

Jim Coplien ćŒęå”±. p235 第 15 ē« ć‹ć‚‰ęŠœē²‹.

References

References