ã»ãšãã©ã®ããã°ã©ãã³ã°èšèªã§ã¯ãªããžã§ã¯ãã¢ãã«ãéåžžã«è€éã§ãããããããã©ãããªã ãªããžã§ã¯ãã¢ãã«ã®èšè¿°ãå®çŸ©ããŠãå¯èœãªéãåé€ããŸãã
- ããªããžã§ã¯ããã¿ã€ãã®çµç«¯èšå·ïŒçšèªïŒãå®çŸ©ãããŠããŸãã ãã¿ã€ãã®çµç«¯èšå·ããªããžã§ã¯ããããšãã衚çŸã¯ãèšèªã¬ãã«ã§è¡šçŸããããã®çšèªã«å¯ŸããŠç¹å¥ãªèªåœæ§æãå©çšå¯èœã§ããããšã®ã¿ãæå³ããå²ãåœãŠãšã¡ãœããåŒã³åºãã®2ã€ã®ã¿ãèæ ®ããŸãã
- çµç«¯èšå·ããªããžã§ã¯ããã®å€ã¯ãããã€ãã®ãšã³ãã£ãã£ãžã®åç §ã§ãããã®èª¬æã«ã€ããŠã¯ãæ¬¡ã®æ®µèœã§èª¬æããŸãã
- æäœã=ããå®çŸ©ãããŠããŸã-åç §ã«ããå²ãåœãŠã 1ã€ã®çµç«¯èšå·ïŒ term1 ïŒãå¥ã®çµç«¯èšå·ïŒ term2 ïŒã«å²ãåœãŠãããšã¯ãçšèªterm1ããterm2ã«åããšã³ãã£ãã£ãžã®ãªã³ã¯ãã³ããŒããããšãæå³ããŸãã
- çšèªã®æå³ã§ãããšã³ãã£ãã£ã«ã¯ãããã€ãã®ã¡ãœããããããŸãã ã¡ãœãããåŒã³åºãããå奿§é ãããã䜿çšããŠãã©ã¡ãŒã¿ãŒãæž¡ãããŸãã ããã³ãïŒïŒããã€ãŸã
term.method(param1, param2)
ã - ãšã³ãã£ãã£ã«ã¯ãç¶æ ãæ§æããïŒä»ã®ïŒãšã³ãã£ãã£ã®é åºä»ããããŠããªãã»ããããããŸãã
- ç¹å®ã®ã¡ãœããã»ãããšç¹å®ã®åæç¶æ ã§ä»ã®ãšã³ãã£ãã£ãäœæã§ãããšã³ãã£ãã£ãå°ãªããšã1ã€ãããŸãã
- 1ã€ã®ãšã³ãã£ãã£ããå¥ã®ãšã³ãã£ãã£ã«ç¶æ ãšã¡ãœããã®ã»ãããã³ããŒã§ãããšã³ãã£ãã£ãå°ãªããšã1ã€ãããŸãã
- ã³ããŒïŒpã7ïŒäžã®ã¡ãœãããšç¶æ èŠçŽ ã¯ãã³ããŒå ã®ãšã³ãã£ãã£ã«åãååã®åããã®ãååšããå Žåã眮ãæããããŸããã
ãã®èª¬æããã©ã°ã©ã1ã8ã§äžããããŠãããªããžã§ã¯ãã¢ãã«ã«ã¯ãããã©ãããªããžã§ã¯ãã¢ãã«ããšããååãä»ããããŠããŸãã
äžè¬çã«ãäžèšã§å®çŸ©ãããã¢ãã«ã¯å€§å¹ ã«ç°¡çŽ åãããŠããŸããããšãã°ãããã©ã«ãã§ã¯åºæ¬åããã®ç¶æ¿ã¯èæ ®ãããŠããããåãªããžã§ã¯ãã§ãµããŒããããŠããç¶æ¿ã¡ã«ããºã ãããããŸãã-ãã®ããããã®ã¢ã¯ã·ã§ã³ãä»ã®ãšã³ãã£ãã£ã§å®è¡ã§ããå®çŸ©æžã¿ãšã³ãã£ãã£ã1ã€ãããšæ³å®ãããŠããŸãã
å¶æ°ãªããžã§ã¯ãã¢ãã«ã¯ããªããžã§ã¯ãæåããµããŒãããèšèªãåŒã³åºãã®ã«ååã§ãã OOPã®ç¹æ§è©äŸ¡ã§ããèšåãããçšèªã¯ããããã4ã5ã6ãããã³7ã8é ã§èæ ®ãããã«ãã»ã«åãç¶æ¿ãããã³ããªã¢ãŒãã£ãºã ã§ãã 8ã ç§ã¯ããã«ããã®èšèªã®ãªããžã§ã¯ãã¢ãã«ã«äŸåããããªããžã§ã¯ãã®æäœã«é¢é£ããªãä»ã®ç®çã®ããã«äžè¬çãªã±ãŒã¹ã§æå³ãããŠããèšèªã®ææ®µã¯ã ããã¯ãšèŠãªãããªããšããäºå®ã«æ³šæãåèµ·ããããšæããŸã ã ããšãã°ãC ++ã³ã³ãã€ã©ã®äžã«æ§ç¯ãããObjective-Cã³ã³ãã€ã©ã®å®è£ ãæ€èšããå Žåãã¡ã€ã³ã®Objective-Cãªããžã§ã¯ãã¢ãã«ã®ãããã³ã°ãæ€èšããéã«ãC ++ãªããžã§ã¯ãã¢ãã«ã¯èæ ®ãããŸããã å°ãåã«ç»å Žããèšèªãå«ããäžéšã®èšèªãã©ã®ããã«ãããã³ã°ã§å€§ãããªããããããããã³ãããã®ããã¯ãã©ãã»ã©æåãããã«ã€ããŠç°¡åã«èª¬æããŸãããã
ãããã³ã°ãªã
確ãã«ãããã°ã©ã ãçŸããæç¢ºã«æžãããšããã§ã«å¯èœã«ãªã£ãŠãããšãã«ããã¯ãå¿ èŠãªçç±ãããã«ããã®ãããªèšèªã®ã€ã³ã¿ãŒããªã¿ãŒã¯ãè§£éããå¿ èŠã®ãã远å ã®æ§ææ§é ããªããšããäºå®ã®ããã«ãã³ã³ãã€ã«ã®ç¹ã§ããã·ã³ãã«ã§é«éã§ããããšã倿ããŸããã äžèšã®ãã©ãããªããžã§ã¯ãã¢ãã«ã¯ãæå°éã®æ§ææ§é ïŒå²ãåœãŠãšã¡ãœããåŒã³åºãïŒãåæãšããŠããŸãããã©ãããªããžã§ã¯ãã¢ãã«ãæäœããããã®æ§é ãé€ããä»ã®æ§é ãå«ãŸãªãã¯ãªãŒã³ãªãªããžã§ã¯ãæåèšèªãäœæãããšãéåžžã«ã·ã³ãã«ã«ãªããŸãã Smalltalkãªããžã§ã¯ãã¢ãã«ã«éåžžã«è¿ãã ãã©ãããªããžã§ã¯ãã¢ãã«çšã«æå®ããã2ã€ã®æ§ææ§é -å²ãåœãŠãšã¡ãœããåŒã³åºãïŒã¡ãã»ãŒãžã®éä¿¡ïŒããããŸãããããã€ãã®ããã¯ããããŸãã ãŸããæåéãç¹å¥ãªãªããžã§ã¯ã-ãããã¯ãé åãæââåãäœæããæ¹æ³ããããŸãã ãããããããã¯éåžžã«ãã¡ããšãã䟿å©ãªããã¯ã§ãããäœãããå¿ èŠã¯ãããŸããã ãã1ã€ãSmalltalkã«ã¯ã¡ã¿ã¢ãã«ããããŸãã å¥åŠãªããšã«ãSmalltalkã¯åäŸãã¡ãããã°ã©ãã³ã°ã§ããããšãæåŸ ããŠäœæãããŸããããçµéšè±å¯ãªããã°ã©ãã§ããSmalltalkã¡ã¿ã¢ãã«ãçè§£ããããšã¯ã»ãšãã©ã§ããŸããã Smalltalkã«ã¯ã¯ã©ã¹ããããã¯ã©ã¹ã¯æç€ºçãªããã¯ã§ããããªããžã§ã¯ãæåã¢ãã«ã¯ã¯ã©ã¹ãªãã§å®è¡ã§ããŸãã ãã ããSmalltalkã®å Žåãã¯ã©ã¹ãšã¡ã¿ã¯ã©ã¹ã¯ã©ã¡ãããç¹ã«ãã€ã³ã7ãš8ã®ã¿ã¹ã¯ã解決ããã°ããŒãã«ãªããžã§ã¯ãã§ãããããSmalltalkã®ããã¯ã¯éåžžã«å·§åŠã§ãœããã§ãã»ãšãã©èª°ãããªããããã»ãšãã©ããã¯ã§ã¯ãããŸãããèŠæ ãçºçããŸãã
ããšãã°ãéåžžã®æå³ã§ã®ã³ã³ã¹ãã©ã¯ã¿ãŒã¯ãããŸãã;ãµãã¯ã©ã¹ãäœæããããšãã«ç¶æ¿ãããæ°ããã¡ãœããããããŸãã ãã ããç¶æ¿ã®ããã®ç¹å¥ãªæ§é ããããŸãããç¶æ¿å ã®ã¯ã©ã¹ã«ãµãã¯ã©ã¹ã¡ãã»ãŒãžãéä¿¡ããã ãã§ãã ãŸããã¯ã©ã¹ã¯ã次ã®ãã¹ãŠã®æ©èœãåããåçŽãªã°ããŒãã«ãªããžã§ã¯ãã§ãã
Object subclass: #Person instanceVariableNames: 'Family Name ' ...
ã€ãŸãããªããžã§ã¯ãã®ç®¡çã®è€éãå šäœã¯ãèšèªã®æ§æã¬ãã«ã§ã¯ãªããã¡ã¿ã¢ãã«ã®ã¬ãã«ã§è¡šãããŸããã¡ã¿ã¢ãã«èªäœã¯ããã¹ãŠã®ã«ãŒã«ã«ãã£ãŠãèšèªã®ãªããžã§ã¯ãã¢ãã«ã«å»ãŸããŠããŸãã
Selfã¯ããã©ãããªããžã§ã¯ãã¢ãã«ã«éåžžã«è¿ããã¡ãœããåŒã³åºãïŒã¡ãã»ãŒãžã®éä¿¡ïŒã«çœ®ãæããããå²ãåœãŠæäœãããªãããããã®æå³ã§ãäžèšã§æ€èšãããã©ãããªããžã§ã¯ãã¢ãã«ãããããã«ã¯ãªãŒã³ã§ãã
å¿ èŠã«å¿ããŠã«ãŒã
å€ãã®ããã°ã©ãã³ã°èšèªã§é·ãéç»å ŽããŠããå€ãããã¯ã¯ãã¯ã©ã¹ãéçã¡ã³ããŒããããªãã¯ããã©ã€ããŒããä¿è·ãããã¡ã³ããŒãã³ã³ã¹ãã©ã¯ã¿ãŒããã¹ãã©ã¯ã¿ã§ãã ãããã¯éåžžã«éŠŽæã¿ã®ãããã®ãªã®ã§ãå°æ°ã®äººïŒæ§ããã«èšã£ãŠãããå°æ°ã®äººãïŒã¯ããããããã¯ãšããŠåé¡ããŸãã ããããå®éã«ã¯ããããã®ãã®ãããã°ã©ãã³ã°ã«æã¡èŸŒãŸããããã«ç°¡åã§ã¯ãªããããèŠèŠçã«ãªããŸããã ããã«ãã¯ã©ã¹ã®ãªãéçã«åä»ããããèšèªã§ã¯ãåæã«ãªããžã§ã¯ãã®åãæ§æããããã管çãéåžžã«å°é£ã§ãã éçã«åä»ããããèšèªã¯ãççŽã«èšã£ãŠãOOPã«ãšã£ãŠçæ³çãªç°å¢ã§ã¯ãããŸãããã äžè¬ã«ããããã¯éåžžã«é©åãªãã®ã§ãããå¥ã®ããšã¯é©ãã¹ãããšã§ããåçã«åä»ããããèšèªã«ã©ãã»ã©ç°¡åã«å®çãããã§ãã ãããŠããã®åŸåã¯ãããšãã°CoffeeScriptã§ãç¶ããŠããŸãã JavaScriptã§ããè¡ãããããã«ããªããžã§ã¯ãã¯è«ççãªããã·ã¥ããŒãã«ã§ããå€éšã§ã¯ãªããžã§ã¯ãã¯åãªãé åºä»ããããŠããªãããããã£ãšã¡ãœããã®ã»ããã§ãããããç¶æ¿ãšããªã¢ãŒãã£ãºã ã远å ããã ãã§ãããJavaScriptã§éåžžã«æåããŠããŸãã äžè¬ã«ããããã¿ã€ãããŒã¹ã®èšèªã¯ãã©ãããªãªããžã§ã¯ãã¢ãã«ã«éåžžã«è¿ããJavaScriptã¯ããããã瀺ããŠããŸãã ããããJavaScriptã®ãããªæåããèšèªã«åºã¥ããŠå¥ã®èšèªïŒCoffeeScriptãã¯ã©ã¹ïŒãäœæããããšã¯ãäŒçµ±ãžã®è³èŸã®ããã«èŠããŸããããã®ã¢ãããŒãã¯äžéšã®äººã«ãšã£ãŠã¯ãã銎æã¿ã®ãããã®ã§ãã
ã¯ã©ã¹ãšéçã¡ã³ããŒããªããžã§ã¯ãã¢ãã«ã®ããã¯ã§ããçç±ã«ã€ããŠãããå°ãèããŠã¿ãŸãããã å®éãã¯ã©ã¹ã¯ä»ã®ãªããžã§ã¯ããäœæããã°ããŒãã«ãªããžã§ã¯ããšããŠæ©èœããŸãã ãããåæã«ãã¯ã©ã¹ã¯ãªããžã§ã¯ãã¢ãã«ïŒC ++ãJavaïŒã®ç¯å²ãè¶ ããŠããŸãããã¯ã©ã¹ããªããžã§ã¯ãã¢ãã«ã®ãã¬ãŒã ã¯ãŒã¯å ã«ããããªããžã§ã¯ãèªäœïŒSmalltalkãPythonïŒãããå ŽåããããŸãã ã¯ã©ã¹ããªãå Žåãåãç®çã§ã°ããŒãã«ãªããžã§ã¯ãã䜿çšã§ããããšãããããŸãã å€ãã®äººã¯ããããã倿°ã®ãããªã°ããŒãã«ãªããžã§ã¯ããæªããšèšãã§ãããã ã°ããŒãã«å€æ°ã¯æªãã§ãããã¯ã©ã¹ãšã®éãããªããããã¯ã©ã¹ã眮ãæããèšèªã®ã°ããŒãã«ãªããžã§ã¯ãã¯ããã§ã¯ãããŸããã ããã©ããããã¯ã©ã¹ã§ã¯ã°ããŒãã«ãªããžã§ã¯ããããè€éã«ãªãããšããããŸãã äŸãšããŠJavaãåãäžããŸãã Javaã€ã³ã¿ãŒããªã¿ãŒããã®ãããªã¯ã©ã¹ãããããšããèšæ¶ããããã®éçéšåãåæåããã«ã¯ã
Class.forName("** ")
ãèšè¿°ããå¿ èŠããããŸããã€ãŸããã¯ã©ã¹ã¯ç°å¢ã«èªèãããŠããããã§ãããå®éã«ã¯è¡šç€ºããå¿ èŠããããŸãæããã«åœŒã¯äœã§ãã
ãããã£ãŠãéçã¡ã³ããŒã¯ããã®ãããªã°ããŒãã«ãªããžã§ã¯ãã®éåžžã®ïŒééçïŒã¡ã³ããŒãšããŠç°¡åã«äœæããããšãã§ããŸãã ããããç¹°ãè¿ããŸããããããã®ã¿ã€ãã®ãããã³ã°ã¯éåžžã«æ£åžžã§ãããå°ãªããšã倧倿°ã®éçºè ã«èªèãããŠããŸãã
ãžã§ããªãã¯ã¯ãå ±éããžãã¯ãå ±æããã¯ã©ã¹ãäœæããéã«éçã«åä»ããããèšèªã®å¶éã®ããã€ããå æã§ããããã匷å¶çã§æåããããã¯ã«èµ·å ããå¯èœæ§ããããŸãã ããããGenericsãåãã£ã¹ãã®åãªã眮æã§ãããã³ã³ãã€ã«æ®µéã§ã®äºææ§ããã§ãã¯ããå ŽåãC ++ãã³ãã¬ãŒãã¯å¥ã®è©±ã§ããããããããã¯éçã¡ã¿ããã°ã©ãã³ã°ãå¯èœã«ãããªããžã§ã¯ãã¢ãã«ã®æã匷åãªããã¯ã®1ã€ã§ãããæããã«åªããŠããŸã...äœ¿ãæ¹ãç¥ã£ãŠããŸãã
éåžžã«è峿·±ãç¹ã¯ãããèšèªã®ãªããžã§ã¯ãã¢ãã«ã®å¶çŽãã©ã®ããã«å¥ã®èšèªã«ç§»è¡ãããã§ãã PHPã«ã¯ãJavaã¢ãã«ãšæ§æçã«éåžžã«é¡äŒŒãããªããžã§ã¯ãã¢ãã«ããããŸãã ãã¹ãŠããŸããããŸããããããã®éã«ã¯1ã€ã®å°ããªéãããããŸããJavaã¯éçã«åä»ããããèšèªã§ãããPHPã¯åçã§ãã PHPã«ã¯ã颿°ã«æž¡ãåŒæ°ã®åãæå®ãããããªãã®ããããŸãã ããããJavaãšPHPã§ã¯æ§æçã«ã¯åãããã«èŠããŸããããããã®èšèªã¯ç°ãªãã¿ã€ãã®ã¿ã€ããæã£ãŠããããããã®åŒæ°ã®ã¿ã€ãã®è¡šç€ºã¯ãŸã£ããç°ãªã圹å²ãæãããŸãã Javaã§ã¯ãã³ã³ãã€ã«æã«åŒæ°ãã©ãåŠçããããã³ã³ãã€ã©ã«æç€ºããPHPã§ã¯ãReflectionã䜿çšããŸããã€ãŸããåŒæ°ã«ãã®ãããªã¹ãŒããŒã¿ã€ããããããšãå®è¡æãã§ãã¯ããŸãã
ãã¡ããšããããã¯
ãã¡ããããŸãæåã«ããã¡ããšããããã¯ã®ã«ããŽãªã«ããªãŒããŒã©ã€ã/ãªãŒããŒããŒãæŒç®åãå«ããããšæããŸãã ããã¯ãã¯ã匷å¶çãªããã¯ã§ã¯ãªãããªããžã§ã¯ãã¢ãã«ã®éåžžã«äŸ¿å©ãªæ¡åŒµæ©èœã§ãã ãã¹ãŠã®æŒç®åã®ãªãŒããŒããŒãã¯ã¡ãœããåŒã³åºãã«ãã£ãŠå®å šã«æç¢ºã«çœ®ãæããããšãã§ããŸããããã®äœ¿çšã®ãããã§ãã³ãŒãã¯ããèªç¶ã§è¡šçŸåè±ãã«ãªããŸãã ãããã®çš®é¡ã®æ©èœã¯ããªããžã§ã¯ãã¢ãã«ã®æ¡åŒµã®æåã«èµ·å ããå ŽåããããŸãã
匷åãªããã¯
ãã¡ãããæã匷åãªãããã³ã°ã®1ã€ã¯ããã¯ã§ãã ã«ã¬ãŒã¯ãééã®æç¡ã«ãããããè¡ãããšãã§ããŸãã äžè¬ã«ã颿°åããã°ã©ãã³ã°ïŒFPïŒã¯æé«ã¬ãã«ã®ããã°ã©ããŒã®ææç©ã§ã¯ãªããªããäœ¿ãæ £ããèšèªã«ãªããŸããã ããããåé¡ã¯FPãäžè¬çãªèšèªã ãã§ãªããOOPãæ¢ã«æäœããŠããèšèªã«ããªã£ãããšã§ãããããã¯äžè¬ã«å°ãç°ãªããŸãã AFãOOPãç§»åã§ããªãã£ãããšã¯æããã§ãããããAFã¯äžããOOPã®äžã«æšªããã以å€ã«éžæè¢ããããŸããã§ããïŒè¯ãæå³ã§ãããã§ãªããšèšãæ¹æ³ãããããŸããïŒã å€åãã«ãæ§æçã«ã¯ãã¯ããŒãžã£ãŒã¯ã¯ãŒã«ã«èŠããŸãããFPã¯æ¬åœã«ãæ£çŽã«ãæ©èœããŠããããã§ãã ããããè³¢æãªå€æã§ãFPã¯ãããšãã°ãªããžã§ã¯ããã¯ã©ã¹ãã颿°ãã¢ãžã¥ãŒã«ã«è³ããŸã§ãã¹ãŠãå ããŠããPythonã§ãã©ã®ããã«æ£çŽã«æ©èœããã®ã§ããããïŒ æ£ããããããã«ãããåäœããã®ã¯OPã§ã¯ãªããããããã¹ãŠã®ã©ãããŒãã©ã ãããã³ã¬ãŒã¿ãã€ã³ã¿ãŒããªã¿ãŒã«ãã£ãŠå€æãããOOPã§ãã ã€ãŸããFPã®äžçããã®ãããã®ããŒã·ã§ã³ã¯ãã¹ãŠãOOPã«å¯Ÿãã宿çãªãããã³ã°ã«ãããªãããšãããããŸãã ãããã¯äœã«å€æãããŸããïŒ CïŒãªã©ã®éåžžã«ç¹æ®åããããªããžã§ã¯ããã¹ãŒããŒã¿ã€ã
Delegate
ãæã€ãªããžã§ã¯ãã ãããã®ãªããžã§ã¯ãã¯ãæ¬è³ªçã«ã¯ããŒãžã£ãŒãå®è£ ããã1ã€ã®ã¡ãœããã®ã¿ãåå®çŸ©ããŸãã ãããã代ç人ãããªãå Žåã¯ã©ãã§ããããïŒ CïŒã«ã€ããŠè©±ããšãJavaã§å¯èœãªããã«ãåšå²ã®ãªããžã§ã¯ãã®ã³ã³ããã¹ãã«ããã¯ããå¯èœæ§ã®ããééçãªå éšã¯ã©ã¹ããªãããããã®å Žåã¯å°ãã¹ãã¬ã¹ããããŸãã ãã ãã倧æšäºã«ã¯ãªããŸãããããªã²ãŒããªããžã§ã¯ããæç€ºçã«äœæãããšãã«ãæ¡åŒµå¯èœãªãªããžã§ã¯ããžã®ãªã³ã¯ãæž¡ãã ãã§æžã¿ãŸãã
class SomeContext { public int number { private set; get; } public SomeContext(int initialNumber) { number = initialNumber; } public Addition addition { get { return new Addition(this); } } public class Addition { // Addition public Addition(SomeContext context) { _contest = context; } public void add(int number) { _contest.number += number; // private-, } private SomeContext _contest; } } class Program { static void Main(string[] args) { SomeContext context = new SomeContext(9); SomeContext.Addition addToContext = context.addition; // addToContext.add(6); Console.WriteLine(context.number); } }
ãã¡ãããããªã²ãŒãã䜿çšãããšãããã¯ããç°¡åã«ãªããŸãã
class SomeContext { public int number { private set; get; } public SomeContext(int initialNumber) { number = initialNumber; } public Addition addition { get { return delegate(int what) { number += what; }; } } public delegate void Addition(int number); } class Program { static void Main(string[] args) { SomeContext context = new SomeContext(9); SomeContext.Addition addToContext = context.addition; // external delegate logic addToContext(6); Console.WriteLine(context.number); } }
ã©ã¡ãã®å Žåã§ããå¥åã®ããžãã¯ãå²ãåœãŠãããŠãããªããžã§ã¯ãïŒ
Addition
åã®ãªããžã§ã¯ãïŒã¯ã
SomeContext
åã®æ¡åŒµå¯èœãªãªããžã§ã¯ãã®å éšã³ã³ããã¹ãã«å¯ŸããŠéããããŠããããšã
SomeContext
ãŸãã ãããŠãå²ãåœãŠãããããžãã¯ã¯éåžžã«éèŠã§ããããã®ããžãã¯ã®åŠçã¯å¥ã®ãªããžã§ã¯ãã«å§ä»»ãããŸãã ãã ããããã2ã€ã®ãœãªã¥ãŒã·ã§ã³ã®æåã®æ¹æ³ã«ã¯ãååšããå Žåããã®ç¶æ ãéžæãããªããžã§ã¯ãã«ä¿åã§ãããšããå©ç¹ãããã2çªç®ã®å Žåãç¶æ ãä¿åããã«Delegateåã®ãªããžã§ã¯ããäœæãããŸããã€ãŸããããªã²ãŒãã®åŒã³åºãéã§ã¯ãçŸåšã®ç¶æ ã¯ä¿åãããŸããã ã©ã ãåŒã䜿çšããŠããã«ç°¡æœã«èšè¿°ããããšãã§ããŸãããä»ã§ã¯ããã«ã€ããŠã§ã¯ãããŸããã ã¯ããŒãžã£ãŒã¯ããã»ã©åŒ·åãªãã®ã§ã¯ãããŸããããåçŽãªã±ãŒã¹ã§ã¯éåžžã«ç°¡æœã«èŠããå ŽåããããŸãã
ããã¯ã®ããã¯
åäžãªãªããžã§ã¯ãã¢ãã«ã®ããã¯ã¯äŸ¿å©ã§äŸ¿å©ã§ãã ããããå Žåã«ãã£ãŠã¯ãããã®å€ãããããå°è±¡ã¯ãããããã¯ã管çå¯èœã§ã¯ãªããšããããšã§ãã 確ãã«æããããã³ã°ãããCïŒèšèªã®1ã€ã ã¯ãªãšã€ã¿ãŒã¯ãã®èšèªã«å¯èœãªãã¹ãŠãæŒã蟌ã¿ãããšæã£ãŠããããã§ãããã«åãããšãè€æ°åæŒã蟌ãããšããããã§ãã ç¹ã«ãããã«ãããããšãã°ãåãã³ãŒã«ããã¯æ§æãå®çŸ©ãã4ã€ã®ç°ãªãæ¹æ³ããããŸãã äœããããéãã ãšæãããŸã...ãããããããã®æ§é ã¯ãã¹ãŠèšèªã®æ§æã䜿çšãããããããããªãŒããŒããŒãããŸãã ãŸããMicrosoftã®ç€Ÿå¡ãCïŒèšèªãªããžã§ã¯ãã¢ãã«ããããã³ã°ããããšã決å®ããããšã«ã€ããŠãä»ã«ãå€ãã®å¥åŠãªç¹ããããŸãã
- 2ã€ã®ã¿ã€ãã®ãªããžã§ã¯ã-åç §ãšå€ã«ããã ãããã®éã®æç€ºçæé»çé·ç§»ïŒãããã³ã°/ã¢ã³ãããã³ã°ïŒã ãå€ã«ããããªããžã§ã¯ãã¯ããã©ããã ãã§ãªããããçšåºŠéŠŽæã¿ã®ãããªããžã§ã¯ãã¢ãã«ã«ãšã£ãŠãããŸãç¹åŸŽçã§ã¯ãããŸããã ãããŠãããã¯ããå€ã«ããããå«ããã¹ãŠã®ãªããžã§ã¯ãããåç §ã§ãããªããžã§ã¯ããç¶æ¿ãããšããäºå®ã«ããããããã§ãã å¥åŠã§ããã
- éä»®æ³ã¡ãœããã äžè¬çã«èšãã°ãéä»®æ³ã¡ãœããã¯ç¡å¹åãããããªã¢ãŒãã£ãºã ã§ããã€ãŸããã«ãŒã«ããæãåºãããã®æ¹æ³ã§ãããããç¥ãããŠãããªããžã§ã¯ãã¢ãã«ã®æ¹æ³ã§ãã ããããããã¯ãŸã æãå¥åŠãªããšã§ã¯ãããŸããã éä»®æ³ã¡ãœãããæã€ã¯ã©ã¹ã¯ãã€ã³ã¿ãŒãã§ãŒã¹ãå®è£ ã§ããŸãã ã€ãŸãã第1ã¬ãã«ã§ã¯ãã€ã³ã¿ãŒãã§ã€ã¹ããéä»®æ³ã¡ãœããã䜿çšããå®è£ ã¯ã©ã¹ã«ç§»è¡ãããšãããªã¢ãŒãã£ãºã èªäœããã®ç¬¬1ã¬ãã«ã§æ©èœãããã®åŸåæ¢ããŸãã
- ã¡ãœããã
new
ãšããŠå®£èšããããšã«ãããå€çžé¢ä¿ãç¶æ¿éå±€ã®ä»»æã®ã¬ãã«ã§åæ¢ã§ããŸãã - å®çŸ©äžãä»®æ³é¢æ°ãå«ããããšãã§ããªãæ§é äœã¯ãã€ã³ã¿ãŒãã§ã€ã¹ãå®è£
ã§ããŸãã æ§é ã§ã¯ãéåžžã«è峿·±ãããšãããããŸããã æ§é ã¯å€åã§ãããã€ã³ã¿ãŒãã§ãŒã¹ã¯ãªããžã§ã¯ãïŒåç
§ïŒåã§ãã
SomeStructure
æ§é äœãSomeInterface
ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããSomeInterface
ãŸããSomeStructure
åã®ã€ã³ã¹ã¿ã³ã¹æ§é ã®æ¢è£œã®ã€ã³ã¹ã¿ã³ã¹ããããŸãã 倿°SomeInterface anObject = instance
ã 質åã«æ³šæããŠãã ããïŒanObjectã¯ã€ã³ã¹ã¿ã³ã¹æ§é ã®ã€ã³ã¹ã¿ã³ã¹ãå€ãŸãã¯åç §ã§åç §ããŸããïŒ ã€ã³ã¿ãŒãã§ãŒã¹ã¯ãªããžã§ã¯ãïŒåç §ïŒã¿ã€ãã§ãããå€ã«ãã£ãŠå€æããŸãã ã€ãŸãããã®å²ãåœãŠã§ã¯ãæ§é ã€ã³ã¹ã¿ã³ã¹ã®ã³ããŒãäœæãããåç §ã«ããååšããŸãã åãã£ãŠãããç¥ããªããã°ãã©ããã§æãŸãããšãã§ããŸãã
ãã¡ããããããã®ãã¹ãŠã®ãããã³ã°ã¯éèŠã§ã¯ãããŸãããå°ãªããšãCïŒã§ã¯ããããã³ã°ãããã¢ãã«ã®ãµãã»ãããšããŠå€å°ãªããšãéåžžã®ãªããžã§ã¯ãã¢ãã«ããããéåžžã®ã¢ãã«ã«åºå·ããããšãã§ããŸãã
çµè«
æŽç·Žãããæ§æã¯ãå¿ ãããã¢ããªã±ãŒã·ã§ã³ããžãã¯ã®å®è£ ã«ãããŠæ¬åœã«çŽ æŽãããæ©äŒãæäŸãããšã¯éããŸããã ã»ãšãã©ã®å Žåããåžžã«ããšèšããªãéããããããçš®é¡ã®ãæ§æçãªãèåãããªããžã§ã¯ãã®éåžžã®æ¿å ¥ã«çœ®ãæããããšãã§ãããªããžã§ã¯ãã¢ãã«ã®ãã¬ãŒã ã¯ãŒã¯å ã§ãã£ãŠããèªã¿ã«ããã³ãŒããæ§é ã®æªãã³ãŒãã䜿ããã«è€éãªãã®ãæžãããšãã§ããŸãã ããã«èšãã°ãããªãåçŽãªãªããžã§ã¯ãã¢ãã«ãèªç±ã«äœ¿çšã§ãã éè²ã®åŒŸäžžã«ãšããããªãæãããç£ã«åªé ãã€åçŽã«å¯ŸåŠã§ããŸããããšãã°ã2ã€ã®ãã©ã°ã¡ã³ããæ¯èŒãããšãã«ãããããã«ãèªæã§ãªãããžãã¯ãå®è£ ããèªç±åºŠãããã«ãããŸãCïŒã³ãŒããæ°ããã¯ã©ã¹ãšããªã²ãŒãã«åºã¥ãããœãªã¥ãŒã·ã§ã³ã䜿çšããŸãã ãœãªã¥ãŒã·ã§ã³ãã¯ã©ã¹ã«åºã¥ããŠããå Žåãããžãã¯ãã¬ã³ããªã³ã°ããããªããžã§ã¯ãïŒããªã²ãŒãïŒã®åŒã³åºãéã§ç¶æ ãç¶æã§ããŸãã
åŒãåºãããã1ã€ã®çµè«ã¯ããªããžã§ã¯ãã¢ãã«ã®æ©èœã¯ãã¡ã¿ã¢ãã«ã«å ¥ãããšåäžããå¯èœæ§ããããŸãããèšèªã®æ§æã®ã¬ãã«ã§ã¯ååšããªããšããããšã§ãã Smalltalkã¡ã¿ã¢ãã«ã¯äŸãšããŠæäŸãããŸããã ãã®å Žåã以äžã®æ©èœãåŸãããŸãããæ§æããä¹±éãã«ãªããŸããã ããããå®éã«ã¯ãéã®åŸåãæè¿èгå¯ãããŠããŸã-ããã°ã©ãã³ã°èšèªã¯æ§æã®è€éããå¢ãæ¹åã«éçºãããŠããïŒCïŒãCoffeScriptãScalaïŒãçŽç²ãªãªããžã§ã¯ãã¢ãã«ãåããèšèªã¯åŸã ã«å¿åŽã«åãã£ãŠããŸãã ããšãã°ãèªå·±éçºã¯å®å šã«äžæ¢ãããSmalltalkã¯ãããããŠçããŠããŸãã