ã¡ã¢ãªã¬ã€ã¢ãŠãã®è§£åãthisãã€ã³ã¿èª¿æŽãªãã»ããããããŠä»®æ³åºåºã¯ã©ã¹ïŒvirtual inheritanceïŒã®ä»£å
ã²ãŒã éçºãå€§èŠæš¡åãããšãã空ãé£ã¹ãæµïŒFlyingEnemyïŒããšã匟ãæãŠãæµïŒShootingEnemyïŒãã®äž¡æ¹ã®èœåãæã£ãã空é£ã¶ç ²å°ãã¹ïŒBossïŒããäœããããªãç¬éãå¿ ã蚪ããŸãããªããžã§ã¯ãæååå¿è ã¯å®æã« `class Boss : public FlyingEnemy, public ShootingEnemy` ãšããå€éç¶æ¿ïŒMultiple InheritanceïŒã«æãæããŸãããåŸ ã£ãŠããã®ã¯å ±éåºåºã¯ã©ã¹ã2éå®äœåããŠã³ã³ãã€ã©ãæ²é³Žãäžãããè±åœ¢ç¶æ¿ã®æ»ïŒDiamond of DeathïŒãã§ããå€éç¶æ¿æã®ç©çã¡ã¢ãªé 眮ããã£ã¹ãã§ãã€ã³ã¿ã®ã¢ãã¬ã¹å€ãåæã«ãºã¬ããthisãã€ã³ã¿èª¿æŽãªãã»ããããä»®æ³åºåºã¯ã©ã¹ïŒvirtual inheritanceïŒã®é ãããªãŒããŒãããã培åºè§£åãããªãçŸä»£ã®ã²ãŒã ãšã³ãžã³ãå€éç¶æ¿ãååçŠæ¢ããŠãç¶æ¿ããåæïŒCompositionïŒããéžãã ã®ãããã®å¿ ç¶æ§ãè§£ãæãããŸãã
ãé£ã¹ãããšãæãŠãããåäœããããåºåºã¯ã©ã¹ã2éã«åè£ïŒã³ã³ãã€ã«ãšã©ãŒ Ambiguous ã®æ£äœãšã宿ãªã³ãŒãåå©çšç®çã®ç¶æ¿ã®ç Žç¶»ãåŠã³ãŸãã
ãã£ã¹ããããšã¢ãã¬ã¹å€ãåæã«ãºã¬ãïŒïŒå€éç¶æ¿ããããªããžã§ã¯ãã®ã¡ã¢ãªã¬ã€ã¢ãŠããšãCPUãå®è¡ããè£ã®ãã€ã³ã¿èšç®ãè§£åããŸãã
è±åœ¢ç¶æ¿ãåæã§è§£æ±ºãã virtual public Entityãåºåºã¯ã©ã¹ã®è€è£œãé²ã代åãšããŠæ¯æããå®è¡æãªãŒããŒãããããšãåæå責任ã®åŽ©å£ããåŠã³ãŸãã
ãã©ãŠã¶ã§JavaScriptãæå¹ã«ãããšããã©ãŠã¶å ã€ã³ããŒããŒã²ãŒã ãšãã¥ã¬ãŒã¿ãã¡ã¢ãªãããå¯èŠåãUMLã¯ã©ã¹å³ã察話å解説ãç解床ã¯ã€ãºãèµ·åããŸãã