è¦ç´
Â
åçæ¯ãèãã®ã¢ãã«åã«ã¯ãåã«é¢æ°åã¨ããããããç´ç²é¢æ°åã®ä¸ã¤ã®é©ç¨ã¨æããããããã¼ã¿ããã¼ã»ããã°ã©ãã³ã°ãã¨ãã¦ã®çè§£ãæç¨ã§ãããã¼ã¿ããã¼ã»ããã°ã©ãã³ã°ã¨ã¯æ°å¤è¨ç®å¦çã颿°åã®æ¦å¿µã§åæ§æãããã®ã§ãããã¼ã¿ããã¼ã»ããã°ã©ãã³ã°ã®è¦ã¯ããã¢ã«ã´ãªãºã ã®ã©ã¤ãã©ãªã¼åããå³ã¡ãæ¼ç®åã®ã¦ã¼ã¶ã¼å®ç¾©ãã ã¨èãã¾ããããã«ãããå¦çã®åä½ããèªå¨ã«æ¡å¼µãããã¨ãã§ãã¾ããããã«ãããåçæ¯ãèãããè¨ç®å¼ã®æ¡å¼µã¨ãã¦ã¢ãã«åãããã¨ãã§ããããã«ãªãã¾ããï¼â»ã¨ã¯äºã£ã¦ã大ããªç®ç·ã§ããã°ã颿°åã®ã»ãã³ãã£ã¯ã¹ã®å
ã§ããï¼
Â
â
Â
å
æ¥æ¬¡ã®è¨äºãæç¨¿ãããã¾ããã
Â
Â
ä¸è¨è¨äºã«å¯¾ãã¦ããããç¨åº¦çè§£ã§ãã¦ããç¨åº¦ãããããã£ãããä½ãããã¾ãã¡ãã£ããããå°ãæ®å¿µãã¨ããè¶£æ¨ã®ã³ã¡ã³ããè¤æ°ããã ãã¾ãããã
Â
ã¤ãã¾ãã¦è£è¶³ã試ã¿ã¾ãm(_ _)m
Â
â
Â
復ç¿
Â
å
æ¥ã®è¨äºã®è«æ¨ã復ç¿ãã¾ãã
Â
(1) ãªãã¸ã§ã¯ãæåã¯ãé¢é£ãencapsulationã§éçæ§é ãã¢ãã«åããã®ã«æç¨ã§ããã
(2) ãããæ¯ãèãã¯implementationä»»ãã§ãæ§é åããã°ã©ãã³ã°ä»¥ä¸ã«ã¯ä½ãæä¾ãã¦ããªãã£ãã
(3) æ¯ãèããã¢ãã«åããã®ã«æç¨ãªä½ãããªãã ãããï¼
(4) ãã¥ã¼ãªã³ã°ãã·ã³ç±æ¥ã®ãæç¶ããï¼â»ç¶æ
é·ç§»ãã¼ã¹ï¼ã§ã¯ãªããλè¨ç®ç±æ¥ã®ã颿°ãï¼â»å¤æéç¨ãã¼ã¹ï¼ã¯æç¨ãªã®ã§ã¯ãªããã
(5) 使
ãªãã°ã颿°ãç¨ãããã¨ã§ãæ¯ãèãããåä½å¦çã®ä¾åé¢ä¿ãã¨ããæ§é åæ§ã®å½¢æ
ã§æ±ããããã«ãªããâè¦éãã®ããâãå¾ãããããã§ããã
Â
ãããããæãéè¦ãªæå¾ã®(5)ãçµå±è¨ããããã¨ã¯åããæ°ããããçå±ãããåãããªãã¨ããç¶æ
ã«ãªã£ã¦ããã®ã§ã¯ãªããã¨æãã¾ãããç§èªèº«ããã種ã®âãããâãæ´ãã§ã¯ããã¤ãããªã®ã§ããã表ç¾ãããã¦ãªããªã¨ããæãã¯ããã¾ããã
Â
ããã¼ã¿ããã¼ã»ããã°ã©ãã³ã°ã
Â
ããåä½å¦çã®ä¾åé¢ä¿ãã¨ããæ§é åæ§ã®å½¢æ
ã§æ±ããããã«ãªããâè¦éãã®ããâãå¾ããããã¨ããããã®âãããâãç確ã«èª¬æãã¦ãããããã¼ã¿ããã¼ã»ããã°ã©ãã³ã°ããè¦ã¤ãã¾ããã
Â
Â
ä¸ã®Wikipediaã®è¨äºãèªãã§ããã ããã°ãããããã§ååãã¨ãæãã¾ãããè¦ç¹ï¼ï¼èªåã®çè§£ï¼ã以ä¸ã«ã¾ã¨ãã¾ãã
Â
ã»å¦çã¨å¦çã®éãæµãããã¼ã¿ã®âç§»åâã«çç®ãã¦ããã¼ã¿ã次ã
ã¨âç§»åâãã¦ããæ§åãæåã°ã©ãã«è¡¨ç¾ããã¢ãã«ã§ããã
ã»æ°å¤è¨ç®å¦çã«é¢æ°åè¨èªã®æ¦å¿µãå°å
¥ããããã¡ã§éçºãããã颿°åã¨å
±éã®ç¹å¾´ãæã¤ã
ã»æç¶ãåã«ããã¦ã¯ãå¦çã®å®è¡é åºããã³ã³ããã¼ã«ããã¼ãã¨ãã¦è¡¨ç¾ãããã®ã«å¯¾æ¯ãããã
Â
æç¶ãåã§ã¯ãããã°ã©ã ã³ã¼ãã®è¡¨é¢ã«è¨è¿°ãããã®ã¯ã³ã³ããã¼ã«ããã¼ã§ãããã®ã³ã³ããã¼ã«ããã¼ã®ä¸ã§ãå®è¡æã«ã®ã¿å®è¡ç°å¢ã®ä¸ã«åºç¾ãããç¶æ
ãã®å¤é·ã追ã£ã¦ãããã¨ãæç¶ãåã®é§ååçã§ããç¶æ
ã®å¤é·ã¯ã³ã¼ãä¸æç¤ºçã§ç¡ããã®ã§ãã
Â
対ãããã¼ã¿ããã¼ã»ããã°ã©ãã³ã°ã§ã¯ãããã°ã©ã ã³ã¼ã表é¢ã«è¨è¿°ããã®ã¯ãã¼ã¿ã®å
¥åºåã®é£éã§ãããã¼ã¿ããã¼ã»ããã°ã©ãã³ã°ã§ã¯ãéã«ããã®ãã¼ã¿å
¥åºåãã©ããã£ãã¿ã¤ãã³ã°ãé åºã§å®è¡ããã®ãã¯ãå®è¡æã«ã®ã¿å®è¡ç°å¢ãï¼å¦ä½ã«ä¸¦ååããããªã©å«ãã¦ï¼å¤æãå¶å¾¡ããã®ã§ããããã¼ã¿ããã¼ã»ããã°ã©ãã³ã°ã§ã¯ãã³ã³ããã¼ã«ããã¼ã®æ¹ãã³ã¼ãä¸æç¤ºçã§ã¯ç¡ããã¨ãã訳ã§ãã
Â
ãªããããã¼ã¿ããã¼ã»ããã°ã©ãã³ã°ãã¨äºã£ã¦ããï¼ç´ç²ï¼é¢æ°åã®æ¦å¿µããã®æ¡å¼µãé¸è±ã¯ãªãã¨çè§£ãã¾ãããµãã»ããã¨ãããã®ã§ãç¡ããï¼ç´ç²ï¼é¢æ°åã®ä¸ã¤ã®é©ç¨ã ã¨ä½ç½®ä»ããããã¨èãã¾ãã
Â
颿°åãããã¼ã¿ããã¼ã»ããã°ã©ãã³ã°ãè¦ãå ´å
Â
颿°åã®æ¹ãããã¼ã¿ããã¼ã»ããã°ã©ãã³ã°ãè¦ã¦ã¿ã¾ãããã¼ã¿ããã¼ã»ããã°ã©ãã³ã°ãæ¯æ´ããããã«ã¯ã次ã®è¦ä»¶ãå¿
è¦ã§ãã
Â
å¯ä½ç¨ç¡ãã§åç
§ééãªãç´ç²é¢æ°åã§ãããã¨
Â
大å
ã®Î»è¨ç®ã®çè«ã§ã¯ãå
æ¥ç´ç²é¢æ°åã ãã対象ã ã£ãã¨è¨æ¶ãã¾ãããç¾ä»£ã®å®ç¨é¢æ°åè¨èªã¯å¿
ãããç´ç²é¢æ°åã§ã¯ããã¾ããããããããã¼ã¿ããã¼ã»ããã°ã©ãã³ã°ã«é©ç¨ããã®ã§ããã°ãç´ç²é¢æ°åã¨ãã¦ç¨ããªããã°ãªãã¾ããã
Â
ã¡ãªã¿ã«ãæç¶ãåè¨èªã§ããå¯ä½ç¨ç¡ãã§åç
§ééãã«æ¸ããã¨ã¯ã§ãã¾ããæ°ããã°ãã¼ãã«å¤æ°ã¯é¿ãã¾ãããããã¨ãããã¤ã§ãããå¯ä½ç¨ãã¨ã¯ã大ãããå®è¡ç°å¢ã®å¤é¨è³æºã«å¯¾ããI/Oã®åé¡ã¨ãå®è¡ç°å¢å
é¨ã«ã¦ã颿°ï¼ããã·ã¼ã¸ã£ã¼ï¼âãµãã«ã¼ãã³âãªã©ã®ã¹ã³ã¼ãã®å¤ã®å¤æ°ã«å¯¾ããã¢ã¯ã»ã¹ã®åé¡ã¨ã«åãããã¾ããå¤é¨è³æºI/Oã®åé¡ã¯ãã°ãæ£ä¸ããã¾ãã¨ãã¤ã¾ãã¨ãããâãµãã«ã¼ãã³âã®ãã¼ã«ã«ã¹ã³ã¼ã以å¤ã®å¤æ°ã«ä¾åãããããªãã¸ãã¯ã¯é¿ãã¾ããããã¨ãã話ã§ãã
Â
ã§ãããªãã°ãæç¶ãåï¼ï¼ã¨ãããé颿°åï¼ã§ããã¼ã¿ããã¼ã»ããã°ã©ãã³ã°ãæ¯æ´ã§ããã®ã§ã¯ãªããï¼ã¨æãããããããã¾ããããããããã¼ã¿ããã¼ã»ããã°ã©ãã³ã°ã¯ãæ°å¤è¨ç®å¦çã«é¢æ°åè¨èªã®æ¦å¿µãå°å
¥ããããã¡ã§éçºããããã¨ããç¹ãæãèµ·ããå¿
è¦ãããã¾ããã¤ã¾ã端çã«ãååæ¼ç®ã®ãããªè¨ç®å¼ãã颿°å¼ã³åºãã®é£éã¨ãã¦åæ§æãããããªå½¢æ
ã ã¨äºãã¾ããããã¼ã¿ããã¼ã»ããã°ã©ãã³ã°ã§ã¯ãã¼ã¿ã®ç§»åãæåã°ã©ãã¨ãã¦ã¢ãã«åããã¾ããããã®æåã°ã©ããã©ããªãã®ãªã®ãèããã«ããããã£ã颿°åè§£éãããè¨ç®å¼ã®æ½è±¡æ§ææ¨çãªãã®ã«ç¸å½ããã¨äºããã§ããããå
¨ä½ã¨ãã¦ã颿°åã®ã»ãã³ãã£ã¯ã¹ãã®ã¾ã¾ã§ãã
Â
ãã¢ã«ã´ãªãºã ãã®åå©ç¨
Â
ãã¼ã¿ããã¼ã»ããã°ã©ãã³ã°ã®è¡¨é¢ã«æãããã®ã¯ãã¼ã¿ã®âç§»åâã®æ§åã§ãããã®æããã®âçµç·âã®é¨åã«ã¯ãåå©ç¨å¯è½ãªåä½ï¼ã¦ãããï¼ã¨ãã¦ã®å¦çããåå¨ãã¦ãã¾ãã
Â
æç¶ãåã§ã¯ãã³ã¼ãã«ã³ã³ããã¼ã«ããã¼ã次ã
ã¨è¨è¿°ã§ããã®ã§ãè¨è¿°ãã¦ããå¦çãã©ãããåä½ï¼ã¦ãããï¼ã§åå²ãããªããã°ãªããªãããã¨ãããã¨ã¯é½åº¦é½åº¦ã¯èããªãããããã¾ããããã¼ã¿ããã¼ã»ããã°ã©ãã³ã°ã§ã¯ãå¦çã¯é½åº¦é½åº¦å
¥åã¨åºåãå®ç¾©ãã¦ãããªãã¨ãã»ã¨ãã©è¨è¿°ãããã¨ãã§ãã¾ãããå®ç¾©ããã¨ãããã¨ã¯ãå¦çã¯èªãã¨åå©ç¨å¯è½ãªåä½ã¨ãã¦ã©ã¤ãã©ãªã¼åããããã¨ãããã¨ã§ããæç¶ãåããã®æ¨©åã¨ãã¦ã®OOã§ã¯ãã©ã¤ãã©ãªã¼ã¨ããã¨ãã¢ãï¼âãã¼ã¿ï¼ã䏿 ¸ã«å
·ä½çãªç¨éã¨ãªãã¦ã¼ã¹ã±ã¼ã¹ãå®ã¾ã£ããã®ã«ãªããã¡ã§ããããã¼ã¿ããã¼ã»ããã°ã©ãã³ã°ã«ãããå¦çã®ã©ã¤ãã©ãªã¼ã¯ãå
¥åºåãã¼ã¿ãå¦çã«å¯¾ãã¦å¿
ãå¤é¨åãããã®ã§ãæ½è±¡çãªãã¼ã¿å¦çã¢ã«ã´ãªãºã ã¨ãã¦ä»ç«ã¦ãå¿
è¦ãåºã¦ãã¾ãã
Â
ãã®ãããªã¢ã«ã´ãªãºã ãã©ã¤ãã©ãªã¼åããä¾ã¨ãã¦ã¯ããããã颿°åè¨èªã§ã®Streamsç³»APIã§ãããããfilterãmapãfoldãããã¯reduceã¨ãã£ãã¨ãããå¾ã¯C++ã®STLãå
é§è
çã«æåã§ããããã
Â
ããã¦ãã¢ã«ã´ãªãºã ãã©ã¤ãã©ãªã¼åããã¨ããç¹å¾´ã¯ãåçæ¯ãèãã®ã¢ãã«ãããåä½å¦çã®ä¾åé¢ä¿ãã¨ããæ§é åæ§ã®å½¢æ
ã§æ±ããããã«ãªããâè¦éãã®ããâãå¾ããããããã®å¿
è¦æ¡ä»¶ã ã¨èãã¾ãã
Â
ãã¼ã¿ããã¼ã»ããã°ã©ãã³ã°ï¼æ¼ç®åãã¦ã¼ã¶ã¼å®ç¾©ãã¦æ¡å¼µãã¦ãããããªããã°ã©ãã³ã°
Â
æå¾ã«ãã䏿®µæèãé²ãã¾ãããã©ã¤ãã©ãªã¼åãããã¢ã«ã´ãªãºã ãããã¦ã¼ã¶ã¼å®ç¾©ãããæ¼ç®åãã¨è§£éãã¾ãããã¼ã¿ããã¼ã»ããã°ã©ãã³ã°ã¯æ°å¤è¨ç®å¦çÃ颿°åã ã¨ããç¹ãè¸ã¾ããã¨ããã¦ã¼ã¶ã¼å®ç¾©æ¼ç®åãè§£éã¯ãã¾ãã«è¨ç®å¼ãã¦ã¼ã¶ã¼ã®æã§æ¡å¼µãããã¨ãã§ãããã¨ãã話ã«ãªãã¾ãã
Â
â
Â
ï¼è¿½è¨ï¼ï¼
ããã¼ã¿ããã¼ãã®ã¢ãã«ã¯ããªã¢ã¯ãã£ãå¦çç³»ã®å¦çã¢ãã«çè§£ã¨ãã¦ãåç
§ããã¦ãã¾ãããªã¢ã¯ãã£ãã®æèã«ããããã¼ã¿ããã¼ã®è©±ã¯ã以ä¸ã®å²¡æ¬æ°ï¼Twitter:@okapiesï¼ã®è³æã«è©³ããã§ãã
Â
Â
â»ä¸è¨è¨äºå
ã®ã¹ã©ã¤ãã28ã48ãã¼ã¸ç®ããããä¸å¿ã«åç
§ãã¦ã¿ã¦ãã ããã
Â
æ¬è¨äºã«ããããã¼ã¿ããã¼ã¨ãªã¢ã¯ãã£ãå¦çç³»ã«ããããã¼ã¿ããã¼ã®é¢ä¿ã«ã¤ãã¦ããããèå¯ãã¦ã¿ããã¨æãã¾ãããç¾æç¹ã§ã²ã¨ãã¨äºããªãã°ããã¨ã³ã¿ã¼ãã©ã¤ãºã«ãããåçæ¯ãèãããæ¬è¨äºã®äºãããã«æ§ç¯ãããã¨ã§ãã¨ã³ã¿ã¼ãã©ã¤ãºã®ããã·ã¼ã¸ã£ã¼ããªã¢ã¯ãã£ãåãããã¨ãã§ããããã«ãªããã¨ãããããã ã¨æãã¾ãã
Â
ï¼è¿½è¨ï¼ï¼
ã¨ããããã¨ã³ã¿ã¼ãã©ã¤ãºã§ãã¼ã¿ããã¼ã¨ããã°ãDFDãã§ãããã¡ããç¾æç¹ã§ã²ã¨ãã¨äºããªãã°ãæ¯è¼çã·ã³ãã«ã«é¢å¿ãç½®ãã¦ããã¨ããã®ç²åº¦ã«éããããã ããã¨æã£ã¦ãã¾ããDFDã¯ãããã»ã¹ã¬ãã«ããæ¬è¨äºã®äºãã¨ããã®ãã®ã¯ãããã·ã¼ã¸ã£ã¼ã¬ãã«ããã§ãããã¡ãããããèå¯ãã¦ã¿ããã¨æãã¾ãã
Â
â以ä¸
Â