ã«ãã»ã«åãæ å ±é è½ããã¼ã¿é è½
ãã¡ãã¡ã®ãµã¤ããè¦ã¦ãã¨ãééã£ãè§£éããã¦ãã®ãå¤ããã«ãã»ã«åãªãã¦ãæ å ±é è½ã¾ã§å«ãã§ãã®ã常èã«ãªãã¤ã¤ãããããªãããããã¾ã§ä¸è¬åãã¦ãã¨æ å ±é è½ãã¦ãã®ãã«ãã»ã«åã¨ããã®ã常èãªã®ããã
カプセル化・情報隠蔽・データ抽象化 - 今日の役に立たない一言 − Today’s Trifle! −
ã«ãã»ã«åã¨æ å ±é è½ããã¼ã¿é è½ã®éãããããããããªã£ãã®ã§ãææã¡ã®æ¬ã§èª¿ã¹ã¦ã¿ãã
åºæº
åºæºã¨ãã¦ã¯ã
- ã«ãã»ã«åãæ å ±é è½ããã¼ã¿é è½ã®é¢ä¿
- ã«ãã»ã«åã¯é è½ãå«ãã§ãããã©ãã
- 対象ã¯ã¯ã©ã¹ã®ã¿ããããã§ãªãã
ãªã©ãªã©ã
ä¸çªç®ã¯ãã®ã¾ãã¾ãäºçªç®ã¯ã
// é è½ããã¨ãã«ãã»ã«åã class Hoge { int hoge; // ãªããhogeã使ãã¡ã½ãã } // é è½ããªããã°ã«ãã»ã«åã§ã¯ãªãã class Piyo { private int piyo; // ãªããpiyoã使ãã¡ã½ãã }
ã¨ããç¹ãä¸çªç®ã¯ã
// ãããã«ãã»ã«åã¨ãããã©ãã interface Hoge { void method(); } class HogeImpl impelments { void method() { ... } }
çµè«
ãã¿ããªèªç±ã«è¨èã使ã£ã¦ããã ãªã
ã«ãã»ã«åãæ
å ±é è½ããã¼ã¿é è½ã®é¢ä¿ã¯ãã¿ããªåãã¨ãããã®ãããã°å
¨é¨éããã®ã¨ãããã®ã®ããããä¸éãããã
ã«ãã»ã«åã¯é è½ãå«ãã§ãããã©ããã¯ãã»ã¨ãã©ãå«ãã§ããã¨ãã¦ãããã©ãå«ãã§ããªãã¨ãããã®ãããã
対象ã¯ã¯ã©ã¹ã ãã¨ãããã®ããããã©ãããã§ãªããã®ãããã
ã¦ãã¨ã§ãçµè«ãããçµè«ã¯åºããªããªãããã¿ããªå¥½ãã«ä½¿ãã°ããã¨æããã
2 çªç®ã«é¢ãã¦ã¯ã夿°æ´¾ã«ä¹ã£ãã£ã¦ã«ãã»ã«åã¯é è½ãå«ããã¨ãã¦ãããã»ããç¡é£ããã
以ä¸ãã«ãã»ã«åãæ å ±é è½ããã¼ã¿é è½ã®ä½ãããè¼ã£ã¦ããæ¬ã®å¼ç¨ãç´ 50 ååãããããã®ã§æ³¨æã
ãªãã¸ã§ã¯ãæåã«ãããåå©ç¨ã®ããã®ãã¶ã¤ã³ãã¿ã¼ã³
è¦æ±ã¯ãªãã¸ã§ã¯ãã«å¯¾ãã¦ãªãã¬ã¼ã·ã§ã³ãå®è¡ãããå¯ä¸ã®æ¹æ³ã§ãããã¾ãããªãã¬ã¼ã·ã§ã³ã¯ãªãã¸ã§ã¯ãã®å é¨ãã¼ã¿ã夿´ããå¯ä¸ã®æ¹æ³ã§ããããããã®å¶ç´ã«ããããªãã¸ã§ã¯ãã®å é¨ç¶æ ã¯ã«ãã»ã«åããã¦ããã¨ãããããªãã¡ããªãã¸ã§ã¯ãã®å é¨ç¶æ ã«ã¯å¤ããç´æ¥ã¢ã¯ã»ã¹ãããã¨ã¯ã§ãããããã«ãã®è¡¨ç¾å½¢æ ãå¤ããã¯è¦ããªãä»çµã¿ã«ãªã£ã¦ããã
1.6 デザインパターンで設計問題を解く (P.24)
å
é¨ãã¼ã¿ã¨å
é¨ç¶æ
㯠(Java ã§è¨ã) ãã£ã¼ã«ãã®ãã¨ã ãããã©ã表ç¾å½¢æ
ã£ã¦ã®ã¯ããããããªãã
å¤ããã¯è¦ããªãã£ã¦ãã¨ã¯ãä¸ããã¯è¦ãããã ãããã©ã»ã»ã»
用語集 (P.384)
- ã«ãã»ã«å
- ãªãã¸ã§ã¯ãã®è¡¨ç¾ãå®è£ ãé ãºããããã¨ããªãã¸ã§ã¯ãã®è¡¨ç¾ããã®ãªãã¸ã§ã¯ãã®å¤é¨ããç´æ¥çã«è¦ããã¢ã¯ã»ã¹ããããããã¨ã¯ã§ããªãããªãã¬ã¼ã·ã§ã³ããªãã¸ã§ã¯ãã®è¡¨ç¾ã«ã¢ã¯ã»ã¹ãããä¿®æ£ãããããå¯ä¸ã®æ¹æ³ã§ããã
ãªãã¸ã§ã¯ãã®è¡¨ç¾ãå®è£ ãé è½ããã£ã¦ãã¨ã¯ããã£ã¼ã«ãã®é è½ã ãã§ã¯ãªããã¨è§£éãã¦ããã®ããªã
ãã¶ã¤ã³ãã¿ã¼ã³ã¨ã¨ãã«å¦ã¶ãªãã¸ã§ã¯ãæåã®ããã (Software patterns series)
æ¬æ¸ä¸ã§ã¯ããè¦æ±ææ¸ä¸ããåè©ãè¦ã¤ããããããªãã¸ã§ã¯ãã«ãããã¨ãã 1980 年代ã®ã¢ããã¼ãã«ã¯å¾ã£ã¦ãã¾ããããã®ã¢ããã¼ãã§ã¯ãã«ãã»ã«åã¨ãããã®ãããã¼ã¿é è½ãã¨ãã¦ãããã¦ãªãã¸ã§ã¯ãã¨ãããã®ãããã¼ã¿ãããã³ãããã«å¯¾ããã¢ã¯ã»ã¹ãæä½ã®ããã«ç¨ããããæ¯ãèããåããç©ä½ãã¨ãã¦å®ç¾©ããã¦ãã¾ãã®ã§ããããã¯ããªãã¸ã§ã¯ãã®å®è£ æ¹æ³ã®ã¿ã«ç¦ç¹ãå½ã¦ãã窮å±ã§çããã®ã®è¦æ¹ã§ãã
第 I 部 オブジェクト指向ソフトウェア開発入門 (P.1)
ã«ãã»ã«åã¯ããã°ãã°åç´ãªãã¼ã¿é è½ã¨ãã¦è§£èª¬ããã¦ãã¾ããé常ã®å ´åããªãã¸ã§ã¯ãã¯å é¨ãã¼ã¿ã¡ã³ããå¤é¨ã«å ¬éããªãã®ã§ã (ã¤ã¾ããã¢ã¯ã»ã¹å¯è½æ§ã protected ã private ã«ããããã§ã)ã
ããããã«ãã»ã«åã¯ãã¼ã¿é è½ã¨åããã®ã§ã¯ããã¾ãããå®ã¯ãã«ãã»ã«åã¨ã¯ãããã種é¡ã®é è½ãå«ãã§ããã®ã§ãã
å ã®ä¾ã§ã¯ãè¬å¸«ã¯ã©ã®å¦çãå¦é¨çã§ããããã¾ã大å¦é¢çã§ããããæèããå¿ è¦ãããã¾ããã§ãããå¦çã®åã¯ãè¬å¸«ããè¦ããªãããã«é ããã¦ããã®ã§ã (ã¤ã¾ããå¦çã®ã種é¡ããã«ãã»ã«åããã¦ããããã§ã)ã
ã»ã»ã»1.6 オブジェクト指向パラダイム (P.17-18)
ç¨èª 解説 ã«ãã»ã«å (encapsulation) ãã¼ã¿é è½ã¨ãã¦å®ç¾©ããããã¨ãå¤ããã®ã®ããããããã® (åãå®è£ ãè¨è¨ç) ã®é è½ãæãã¦ããã¨æããã¹ãã§ãã
オブジェクト指向用語 (P.25)
ç¨èª å®ç¾© ã«ãã»ã«å ãããã種é¡ã®é è½ãæãã¾ãããªãã¸ã§ã¯ãã¯ãã®ãã¼ã¿ãã«ãã»ã«åãã¾ããæ½è±¡ã¯ã©ã¹ã¯ããããæ´¾çãããå ·è±¡ã¯ã©ã¹ãã«ãã»ã«åãã¾ãã
ã«ãã»ã«åã¨ã¯ãããããããã®ãé è½ãããã¨ãã§ããã¨èããã¹ãã§ããè¨ãæããã°ããã¼ã¿ãé è½ãããã¨ãå¯è½ã§ãããããã以ä¸ã®ãã®ãé è½ãããã¨ãã§ããã®ã§ãã
- å®è£
- æ´¾çã¯ã©ã¹
- è¨è¨ã®è©³ç´°
- å®ä½åã®è¦å
ã»ã»ã»
8.3 カプセル化:従来からの考え方と新たな考え方 (P.106-108)
åã®ã«ãã»ã«åã¯ãããªã¢ã¼ãã£ãºã ã使ç¨ããæ½è±¡ã¯ã©ã¹ã¨ãã®æ´¾çã¯ã©ã¹ (ã¾ãã¯ã¤ã³ã¿ãã§ã¼ã¹ã¨ãã®å®è£ ) ã«ãã£ã¦çã¿åºããã¾ãã
ã»ã»ã»
ãªããGoF ãã«ãã»ã«åã«ã¤ãã¦è¨åãã¦ããå ´åããã®ã»ã¨ãã©ã¯åã®ã«ãã»ã«åãæå³ãã¾ãã
ããã¦èª¬æã¯ããã¾ããããå¼ç¨é¨åã ãã§çè§£ã§ããã§ãããã
ã¢ã¸ã£ã¤ã«ã½ããã¦ã§ã¢éçºã®å¥¥ç¾©
ãã®ãã¶ã¤ã³ãã¿ã¼ã³ã¯ãCommand ã¨ããæ¦å¿µãã«ãã»ã«åãããã¨ã§ãã·ã¹ãã ã®è«ççãªå 鍿§é ã¨ã·ã¹ãã ã«æ¥ç¶ããããã¤ã¹ã®è©³ç´°ãåãé¢ããã¨ãã§ããã®ã ã
13.1 シンプルな Command パターン (P.199)
Java ã C++ ã§ã¯ã©ã¹éã®çµå (ã«ãããªã³ã°) ãã«ãã»ã«åã®å¢çç·ã§åãæ±ããã¦ããããã«ãããã±ã¼ã¸éã®çµå㯠UML ã®ã¨ã¯ã¹ãã¼ãã示ã表è¨ã使ã£ã¦åãæ±ããã¨ãã§ããã
22.4 結合とカプセル化 (P.361)
第2çã§ã¯P.355
æ¦å¿µãã«ãã»ã«åãã¨è¨ã£ã¦ãããã¨ããããªãã¸ã§ã¯ãæåã®ãããã¨åããããªä½¿ãæ¹ããã¦ããã®ããªã
ãªãã¸ã§ã¯ãæåããã°ã©ãã³ã°å ¥é
用語集 (P.508, )
- ã«ãã»ã«å (encapsulation)
- ããæ§é ã®ä¸ã«æ å ±ãé ããã¯ããã¯ããã¨ãã°ã¯ã©ã¹ã®ä¸ã«ã¤ã³ã¹ã¿ã³ã¹ãã¼ã¿ãé ãææ³ãæãã
- æ å ±é è½ (information hiding)
- ã½ããã¦ã§ã¢é¨å (ã¯ã©ã¹ãªã©) ã®å©ç¨è ãããã®é¨åãã©ãåæåãã¦ã¢ã¯ã»ã¹ããããããã ããç¥ã£ã¦ãã¦ãç´°ããå®è£ ã«ã¤ãã¦ã¯ç¥ãå¿ è¦ããªãã¨ããååãã½ããã¦ã§ã¢ã·ã¹ãã ã®æ§æè¦ç´ éã®ç¸äºæ¥ç¶ãæ¸ããã§ã®ãæ å ±é è½ã¯é«ä¿¡é ¼ã½ããã¦ã§ã¢ã®éçºã«å½¹ç«ã¤ã
- ãã¼ã¿é è½ (data hiding)
- ç¹å®ã®ãµã¼ãã¹ãæä¾ããããã«ãªãã¸ã§ã¯ãã«ã©ããªãã¼ã¿å¤ãåãããã¦ããããã¨ããå®è£ ä¸ã®ç´°é¨ãæ½è±¡åããããã®ã«ãã»ã«åææ³ã
æ¸ããã§ã®ã»ã»ã»
誤åã¯ç½®ãã¨ãã¨ãã¦ããã¼ã¿é è½ãã«ãã»ã«ã®ä¸ææ³ã¨ä½ç½®ä»ãã¦ããã®ã¯ãªãã¸ã§ã¯ãæåã®ãããã¨åãã
ãã ãæ
å ±é è½ã«ãè¨åãã¦ãã¦ãã«ãã»ã«åããã¯ããã¯ãæ
å ±é è½ãååã¨ãã¦ããã
ã¤ã¾ããæ
å ±é è½ã¨ããååããã£ã¦ããããå®ç¾ããããã«ã«ãã»ã«åããã£ã¦ãããã«å®è£
ä¸ã®ç´°é¨ãæ½è±¡åããããã«ãã¼ã¿é è½ããããã¨ããé層ããªãã¦ããã
ãã¡ã¤ã³é§å (Programmerâs SELECTION)
ã¹ãã¼ããã¿ã¼ã³ã®èãæ¹ã¯ãåã ã®ã¹ãã¼ããã²ã¨ã¤ã®ã¯ã©ã¹ (ConcreteClassAãConcreteClassB ãªã©) ã¨ãã¦ã«ãã»ã«åããã¨ãããã®ã ã
サンプル:ステートパターン (P.51)
仿§ãã¿ã¼ã³ã¯ãåãããã«ã¯ã¨ãªã¼ã®ããã«ä½¿ããããã¯ã¨ãªã¼ãªãã¸ã§ã¯ããæ±ç¨çãªãªãã¸ã§ã¯ãã使ã£ã¦ã²ã¨ã¤ãã¤æ¤ç´¢åºæºãè¨å®ãã¦ããã®ã«å¯¾ãããªãã¸ã§ã¯ãã¯ãã¡ã¤ã³ã®ç¥èãã«ãã»ã«åããæå³ãä¼ããã¨ããã³ã³ã»ããã§ä½¿ãããã
ドメインパターン (P.63)
ã»ã»ã»
ãã®å ´åãæ¤ç´¢åºæºã¯å¤ããã¯ããããªããå 容ãããããããããªååã®ã¤ããããã¯ã©ã¹ãåºæºãã«ãã»ã«åããã®ã§ããã
ã¹ãã¼ããã¯ã©ã¹ã¨ãã¦ã«ãã»ã«åããããã¡ã¤ã³ã®ç¥èãã«ãã»ã«åãããã¨è¨ã£ã¦ãããã¨ããããªãã¸ã§ã¯ãæåã®ãããã«è¿ãæãã
å
容ãããããããããªååã®ã¤ããããã¯ã©ã¹ãæ¤ç´¢åºæºãã«ãã»ã«åãããã¨ããã®ã¯ãªããªããããªãå¦çãååã§ã«ãã»ã«åãããã£ã¦ã¨ãããã
Exceptional C++ Styleâ40ã®ã¯ã¤ãºå½¢å¼ã«ããããã°ã©ã åé¡ã¨è§£æ³=ã¹ã¿ã¤ã«ç·¨ (C++ inâDepth Series)
ãWebster's Third New International Dicrionaryãã«ããã¨ã
- en-cap-su-late vt
- to surround, encase, or protect in or as if in a capsul
- ã«ãã»ã«å ä»åè©
- å²ããå ãããããã¯ãã«ãã»ã«ã§ (ã«ãã»ã«ã«å ¥ãããã®ããã«) ä¿è·ããã
ããã°ã©ãã³ã°ã«ãããã«ãã»ã«åãå ¨ãåãæå³ãæã¤ãã¯ã©ã¹ã®å é¨å®è£ ãä¿è·ããããã«ãã¤ã³ã¿ã¼ãã§ã¼ã¹ã§å ãã§é è½ããããã ãå¤é¨ããã¯ã¤ã³ã¿ã¼ãã§ã¼ã¹ããè¦ããªãã
ã»ã»ã»
ã«ãã»ã«åã¯ããªãã¸ã§ã¯ãæåããã°ã©ãã³ã°ã®æéè¦æ¦å¿µã§ããã以ä¸ã
ãã®ä»ã®ãªãã¸ã§ã¯ãæåãã¯ãã㯠(ä¾ï¼ãã¼ã¿é è½ãç¶æ¿ãããã³ããªã¢ã«ãã£ãºã ) ã¯ãã«ãã»ã«åã®ç¹æ®ãªå ´åãæä¾ããã¨ããæå³ããéè¦ã§ããããã¨ãã°ã
- ã«ãã»ã«åã¯ã»ã¨ãã©å¸¸ã«ãã¼ã¿é è½ãæå³ããã
- ä»®æ³é¢æ°ã«ããå®è¡æããªã¢ã«ãã£ãºã ã¯ãåºæ¬ã¯ã©ã¹ã«ãã£ã¦æä¾ãããã¤ã³ã¿ã¼ãã§ã¼ã¹ãã(ã³ã¼ããæ¸ãããæç¹ã§ã¯åå¨ããå¿ è¦ãããªã) æ´¾çã¯ã©ã¹ã«ãã£ã¦æä¾ãããå®è£ ããå®å ¨ã«åé¢ããã
- ãã³ãã¬ã¼ãã«ããã³ã³ãã¤ã«æããªã¢ã«ãã£ãºã ã¯ãã¤ã³ã¿ã¼ãã§ã¼ã¹ãå®è£ ããå®å ¨ã«åé¢ãããå¿ è¦ãªæä½ãæã¤ã¯ã©ã¹ã¯ãç¶æ¿ããã®ä»ã®é¢ä¿ããªãã¦ãèªç±ã«äº¤æãã¦å©ç¨ã§ããã
ã«ãã»ã«åã常ã«ãã¼ã¿é è½ãæå³ããããã§ã¯ãªããããã¼ã¿é è½ã¯å¸¸ã«ã«ãã»ã«åã®ä¸ç¨®ã§ããã
17. カプセル化 (P.120-122)
ã«ãã»ã«åã常ã«ããªã¢ã«ãã£ãºã ãæå³ããããã§ã¯ãªãããããªã¢ã«ãã£ãºã ã¯å¸¸ã«ã«ãã»ã«åã®ä¸ç¨®ã§ããã
ããããªãã¸ã§ã¯ãæåã®ãããã¨ã»ã¨ãã©åãã§ããã
Modern C++ Designâã¸ã§ããªãã¯ã»ããã°ã©ãã³ã°ããã³ãã¶ã¤ã³ã»ãã¿ã¼ã³ãå©ç¨ããããã®ç©¶æ¥µã®ãã³ãã¬ã¼ãæ´»ç¨è¡ (C++ InâDepth Series)
æ±ç¨ã®ãã¡ã³ã¯ã¿ã¯, å¦çè¦æ±ããªãã¸ã§ã¯ãã¨ãã¦ã«ãã»ã«åãããããªè¨è¨ãè¡ãå ´å, ç¹ã«æå¹ãªãã®ã¨ãªãã¾ããè¦æ±ã®ã«ãã»ã«åãè¡ã£ãã, ããã«ä¼´ãæ±ç¨ã®ãã¡ã³ã¯ã¿ãå®ç¾ãããã®ã¨ãã¦, Command ãã¶ã¤ã³ã»ãã¿ã¼ã³ã¨ãããã®ãããã¾ã (Gamma ä» 1995)ã
ç°¡åã«è¨ãã°, æ±ç¨ã®ãã¡ã³ã¯ã¿ã¨ã¯ C++ã§è¨±ããã¦ããä»»æã®å¦çèµ·åã, åã®å®å ¨æ§ãæã£ããã¡ã¼ã¹ãã»ã¯ã©ã¹ã»ãªãã¸ã§ã¯ãã¨ãã¦ã«ãã»ã«åãããã®ã§ãããã詳ããå®ç¾©ã«å¾ãã°, æ±ç¨ã®ãã¡ã³ã¯ã¿ã¯ï¼第 5 章 汎用のファンクタ (P.105)
- 弿°ã®ä¸é¨ã¾ãã¯å ¨ã¦ã¨ãã¦, åç´ãªé¢æ°ã¸ã®ãã¤ã³ã¿, ã¡ã³ã颿°ã¸ã®ãã¤ã³ã¿, ãã¡ã³ã¯ã¿, ãã®ä»ã®æ±ç¨ã®ãã¡ã³ã¯ã¿ã¨ãã£ããã®ãåãä»ãã¾ããããã«ãã£ã¦, ä»»æã®å¦çã®èµ·åãã«ãã»ã«åã§ãã¾ãã
ãããä½ã§ãã«ãã»ã«åã§ããã
ãã¿ã¼ã³æåãªãã¡ã¯ã¿ãªã³ã°å ¥é~ã½ããã¦ã¨ã¢è¨è¨ãæ¹åãã27ã®ä½æ³
å é¨ã¯ã©ã¹ã®ã«ãã»ã«å
Factory によるクラス群の隠蔽 (P.89)
Java ã® java.util.Collections ã¯ã©ã¹ã¯ãCreation Method ã§ã¯ã©ã¹ãã«ãã»ã«åããã¨ã¯ã©ããããã¨ãã示ãããä¾ã§ããã
Builder ã«ã¯è¤æ°ã® Composite[DP] ãã«ãã»ã«åããã¦ãããã¨ãå¤ããããã Composite ãªãã¸ã§ã¯ãã®æ§ç¯ã¯ãä½åº¦ãåºç¾ããããè¤éã§ãã£ãããã¨ã©ã¼ãèµ·ãããããã£ãããããã¨ãå¤ãããã§ããã
Builder による Composite のカプセル化 (P.101)
ã»ã»ã»
Composite ã Builder ã§ã«ãã»ã«åãããã 1 ã¤ã®åæ©ã¯ãã¯ã©ã¤ã¢ã³ãã³ã¼ã㨠Composite ã³ã¼ãã¨ãåãé¢ããã¨ã§ããã
ãããä½ã§ãã«ãã»ã«åã¨å¼ãã§ããããã§ããã
ããã°ã©ã ãã¶ã¤ã³ã®ããã®ãã¿ã¼ã³è¨èªâPattern Languages of Program Designé¸é
ããã¼ã¸ã£ (Manager) ãã¶ã¤ã³ãã¿ã¼ã³ã¯ãããã¯ã©ã¹ã®ã¤ã³ã¹ã¿ã³ã¹ã®ç®¡çããå¥åã®ããã¼ã¸ã£ãªãã¸ã§ã¯ãã®ä¸ã«ã«ãã»ã«åããã
Chapter1 マネージャ (P.23)
ãããã®ã½ã±ããã©ããã¯ãã½ã±ããã¤ã³ã¿ãã§ã¼ã¹ã®SOCKã¹ããªã¼ã ã®ã»ãã³ããã¯ã¹ (semantics) ããç§»æ¤å¯è½ (portable) ãã¤åå®å ¨ (type-secure) ãªãªãã¸ã§ã¯ãæåã¤ã³ã¿ãã§ã¼ã¹ã®ä¸ã«ã«ãã»ã«åããã
Chapter7 反応体:同期型イベント用の多重化分離及びディスパッチングハンドルのためのオブジェクト振る舞いパターン (P.131)
ãµã¼ãã¹ãã³ãã©ã¯ãã½ã±ããã®ãããªå ¥åºåãã³ãã« (I/O handle) ãã«ãã»ã«å (encapsulate) ãããã¼ã¿ã¢ã¼ããã©ã³ã¹ãã¼ãç«¯ç¹ (data-mode transport endpoint) ãä¸ããã
Chapter10 受付人―接続人:通信サービスの接続と初期化のためのオブジェクト振る舞いパターン (p.194)
å¤åããã³ã¼ããå®å®ãªã³ã¼ãããåé¢ãããçæ³çã«ã¯ãå¤åããã³ã¼ãã¯å¯è½ã§ããã°å¿ ããªãã¸ã§ã¯ãã«ã«ãã»ã«åããã¹ãã ããªãã¸ã§ã¯ãã¯åå¥ã®ã¡ã½ãããããåå©ç¨ããããããã ãã³ã¼ããã«ãã»ã«åãããã°ããµãã¯ã©ã¹ãä½ã£ã¦ã¡ã½ãããæ¸ããªãã¦ããææã®ãªãã¸ã§ã¯ãã®åæã§ããªã¨ã¼ã·ã§ã³ãä½ããã
Chapter19 フレームワークの進化のためのパターン (P.454)
Gang-of-Four ãã¶ã¤ã³ãã¿ã¼ã³ã®å¤ãã¯æ§ã ãªç¨®é¡ã®å¤æ´ãã«ãã»ã«åããã表19-1ã¯ããã¬ã¼ã ã¯ã¼ã¯ã®ç°ãªãå ´æãã¢ããªã±ã¼ã·ã§ã³ã«ãã£ã¦å¤åããã¨ãã«å©ç¨å¯è½ãªãã¶ã¤ã³ãã¿ã¼ã³ã示ã[Gamma+95]ã
å¤åãããã® ãã¶ã¤ã³ãã¿ã¼ã³ ã¢ã«ã´ãªãºã æ¦ç¥ (Strategy) ã訪åå (Visitor) åä½ å½ä»¤å (Command) å®è£ ããªã㸠(Bridge) å¤åã¸ã®åå¿ è¦³å¯è (Observer) ãªãã¸ã§ã¯ãéã®ç¸äºä½ç¨ 仲ä»è (Mediator) ãªãã¸ã§ã¯ãã®çæ ãã¡ã¯ããªã¡ã½ãã (Factory Method) ãæ½è±¡ãã¡ã¯ã㪠(Abstract Factory) ãåå (Prototype) æ§é ã®çæ æ§ç¯å¨ (Builder) å·¡åã¢ã«ã´ãªãºã å復å (Iterator) ãªãã¸ã§ã¯ãã¤ã³ã¿ãã§ã¼ã¹ ã¢ããã¿ (Adapter) ãªãã¸ã§ã¯ãã®æ¯ãèã è£ é£¾å¨ (Decorator) ãç¶æ (State) 表19-1 ãã¬ã¼ã ã¯ã¼ã¯å¤åã«å¯¾ãã¦æ¨å¥¨ãããã¶ã¤ã³ãã¿ã¼ã³
同上 (P.454-455)
ã³ã³ãã¼ãã³ãã©ã¤ãã©ãªä¸ã§ãç¬ç«ã«å¤åããã§ãããè¤æ°ã®æ¯ãèããã«ãã»ã«åãã¦ããã¯ã©ã¹ããã£ãããããããçã£ç«¯ãããããããã®æ¯ãèããã«ãã»ã«åããã¯ã©ã¹ã«åå²ããã
同上 (P.457)
ããã¾ããããããªãã®ãã«ãã»ã«åãã¦ããããªãã¸ã§ã¯ãæåã®ãããã¨åããããªæ±ãã®ããã ã
ThoughtWorksã¢ã³ã½ãã¸ã¼ âã¢ã¸ã£ã¤ã«ã¨ãªãã¸ã§ã¯ãæåã«ããã½ããã¦ã§ã¢ã¤ããã¼ã·ã§ã³
ã«ãã»ã«åã¨ã¯ããã¼ã¿ãå®è£ ãã¯ã©ã¹ãè¨è¨ãå®ä½åã®é è½ãã§ããã¨çè§£ãããã¨ã¨ãã«ãã»ã«åãé©åã«å®ç¾ããã³ã¼ããè¨è¨ãããã¨ã¯ãã¾ã£ããå¥ã®ãã¨ãªã®ã§ãã
5章 オブジェクト指向エクササイズ (P.67-68)
ããã¾ããã¶(ry
Javaã»ãã¥ãªãã£
ãªãã¸ã§ã¯ãæåè¨è¨ã®å¤§ããªç¹å¾´ã®1ã¤ã¯ããã¼ã¿ã®é è½ã¨ãã¼ã¿ã®ã«ãã»ã«åãè¡ãããã¨ã§ããã«ãã»ã«åã«ãã£ã¦ãªãã¸ã§ã¯ãã¯ããã®ãã¼ã¿è¦ç´ ãç´æ¥çã«æä½ãããã®ã§ã¯ãªãããªãã¸ã§ã¯ããæä¾ããã¤ã³ã¿ãã§ã¼ã¹ãä»ãã¦ã®ã¿æä½ããããã¨ãä¿è¨¼ããã¾ãã
2.1 言語のセキュリティ構造 (P.200)
ãããã¯ã·ã§ã³ãã¡ã¤ã³ï¼ç¹å®ã®ã³ã¼ãã½ã¼ã¹ã¨ãã®ã³ã¼ãã½ã¼ã¹ã«è¨±å¯ããããã¼ããã·ã§ã³ãã«ãã»ã«åãããã®
5章 アクセスコントローラ (P..99)
ãã¼ã¿ã®é è½ã¨ãã¼ã¿ã®ã«ãã»ã«åãã©ãéãã®ãããããããã
ãã ããã¼ããã·ã§ã³ãã«ãã»ã«åãã¨è¨ã£ã¦ãããã¨ããããã¼ã¿ä»¥å¤ãã«ãã»ã«åã®å¯¾è±¡ã¨ãã¦ããããã ã
詳説 æ£è¦è¡¨ç¾ 第3ç
.NET ã§ã¯ãRegex ãªãã¸ã§ã¯ããã¢ã»ã³ããªã¨ãã¦ã«ãã»ã«åãããã¨ãã§ããã
9.6.1 正規表現アセンブリ (P.421)
.NET ã§ã¯ãRegex ãªãã¸ã§ã¯ããã¢ã»ã³ããªã«ã«ãã»ã«åãããã¨ãã§ããã
9.6.1 正規表現アセンブリ (P.428)
ä¸ã第 2 çãä¸ã第 3 çã»ã»ã»ã£ã¦ãããã¯å
¨ç¶å¤ãã£ã¦ãªããªã
ããã ãã§å¤æããã®ã¯é£ãããã©ããã£ã¼ã«ãã®é è½ãã«ãã»ã«åã¨ã¯ãã¦ããªããã¨ã¯ãããã
ãªãã¸ã§ã¯ãæåå ¥é 第2ç ååã»ã³ã³ã»ãã (IT ArchitectâArchive ã¯ã©ã·ãã¯ã¢ãã³ã»ã³ã³ãã¥ã¼ãã£ã³ã°)
ç¹å®ã®ç¹æ§ã顧客ããå¼ã³åºããªãããã«ããã¡ã«ããºã ãæ å ±é è½ã¨å¼ã¶ã
2.2.7 情報隠蔽 (information hiding) (P.32)
æ å ±é è½ã¯ãã£ã¼ã«ãã®é è½ï¼
æ å ±é è½ãæå³ããã®ã¯ãããããã¨ã§ã¯ãªããã¹ãã¬ããã·ã¼ãããã°ã©ã ãæ¸ã人ããã®å®è£ ã§äºåæ¨ã使ããã¦ãããã¨ãç¥ã£ã¦ããã¨ãã¦ãããã®å®è£ ã§ãªããã°æ£ããæ©è½ããªããããªé¡§å®¢ã¢ã¸ã¥ã¼ã«ãæ¸ããã¨ãã§ãã¦ã¯ãªããªãã¨ãããã¨ã ãä¾ãã°ããã¼ãã«ã®å®è£ ãããã·ã¥æ³ãªã©ã®ä½ãã»ãã®ãã®ã«å¤æ´ãããå ´åã«åããªããªã£ã¦ãã¾ããããªé¡§å®¢ã¢ã¸ã¥ã¼ã«ãæ¸ããã¨ãã§ãã¦ã¯ãªããªãã
3.2.5 情報隠蔽 (P.66-67)
åã«è¿°ã¹ã誤解ã®åå ã¯ã1 ã¤ã«ã¯ãæ å ±é è½ãã¨ããè¨èãã®ãã®ãç©ççãªä¿è·ã示åãããã¨ã«ããããã«ãã»ã«å (encapsulation)ãã¯æ å ±é è½ã®å義èªã¨ãã¦ä½¿ããããã¨ãããããããããããã®è¨èã®æ¹ãè¨èã¨ãã¦é©åã§ããã
æ
å ±é è½ã¯å®è£
ã®é è½ï¼ã©ã£ã¡ã ãw
ãã ãæ
å ±é è½ã¨ã«ãã»ã«åã¯å義èªã¨ãã¦ããã
ã¾ãã使ãå´ãå®è£
ã®è©³ç´°ãç¥ã£ã¦ãããã©ããã¯é¢ä¿ãªãã¨ããã®ã¯é¢ç½ãè¦æ¹ã ãªã
オブジェクト技術用語集 (P.850, 853)
- ã«ãã»ã«å [Encapsulation]
- æ å ±é è½ãè¦ãã
- æ å ±é è½ [Information hiding]
- ããã¯ã©ã¹ã®æ§è³ªã®ä¸é¨ã顧客ããã¢ã¯ã»ã¹ã§ããªãããã«ããè½åãã¢ã¯ã»ã¹ã®å¶éã¯æå¿«ãª (ç¹æ§ã®) ã¨ã¯ã¹ãã¼ãã®ããªã·ã¼ã¨ãã·ã§ã¼ãå½¢å¼ã主è¦ãªã¯ã©ã¹ææ¸ã¨ãã¦ä¿¡é ¼ãããã¨ã«ãã£ã¦å®ç¾ãããã
æ¹æ³è«ã»å®è·µãªã P.706, 709
æ å ±é è½ã¯è½åã»ã»ã»ï¼ããããããã
ãªãã¸ã§ã¯ãæåå ¥é 第2ç æ¹æ³è«ã»å®è·µ (IT ArchitectsâArchive CLASSIC MODER)
表æã使ãã°åç §ã®æä½ãæ£ããç¶æããã®ã«å½¹ç«ã¤ (ããã·ã¼ã¸ã£ put ã¨ä¸å¤è¡¨æãåç §) ãããã®ç¨®ã®æä½ãå ¨ããã£ã¦å°é£ã§ãããã¨èªä½ããªãã¸ã§ã¯ãæåã§æ¨é²ããã¦ããããã«ãåå©ç¨å¯è½ãªã¢ã¸ã¥ã¼ã«ã¨ãã¦ã«ãã»ã«åããäºåº¦ã¨åãåé¡ã§å°ããªãããã«ãã¹ãã§ããã¨å¼·ã主張ããæ ¹æ ã§ããã
23.4.3 カプセル化と表明 (P.152)
ã«ãã»ã«åããµãã¼ããã¦ãããããªãã¡ãªãã¸ã§ã¯ãå é¨ã®ããããã£ãé ããå ¬å¼ã®ã¤ã³ã¿ãã§ã¼ã¹ãéãã¦ã¢ã¯ã»ã¹å¯è½ã«ããã
31.6.3 境界モデル (P.498)
34.1 言語による支援のレベル (P.558)
- 次ã«ã«ãã»ã«åã¬ãã«
- ãã®ã¬ãã«ã®è¨èªã¯ãã¢ã¸ã¥ã¼ã«ãããã±ã¼ã¸ã¨å¼ã°ããæ§æçãªåä½ã§ãä¸çµã®ã«ã¼ãã³ã¨ãã¼ã¿å®£è¨ãã°ã«ã¼ãåããæ¹æ³ãæä¾ããã
ä¸ã®æ¬ã®ä¸å·»ã
ä¸å·»ã ããèªãã¨ãä¸å·»ã¯ãã£ãããªãã ã£ãã®ï¼ã£ã¦ãããã«ãã»ã«åã¤ã³ã¼ã«ãã£ã¼ã«ãã®é è½ã«èªããã
ããããC++ 第3ç [ããããã·ãªã¼ãº]
ã¯ã©ã¹ã®ä¸ã«ãã¼ã¿ (ãã¼ã¿ã¡ã³ã) ã¨æ©è½ (ã¡ã³ã颿°) ãã²ã¨ã¾ã¨ãã«ããä¿è·ãããã¡ã³ãã« private ãã¤ãã¦åæã«ã¢ã¯ã»ã¹ã§ããªãããæ©è½ã ã«ãã»ã«å (encapsulation) ã¨ããã¾ãã
ã»ã»ã»
ã«ãã»ã«åã¯ãã¯ã©ã¹ããã¤éè¦ãªæ©è½ã®ã²ã¨ã¤ã§ãã
éè¦ããã¼ã¿ã¨æ©è½ãã²ã¨ã¾ã¨ãã«ããã¡ã³ããä¿è·ããæ©è½ãã«ãã»ã«åã¨ããã
カプセル化のしくみを知る (377)
ã«ãã»ã«åã¯ãã£ã¼ã«ãã®é è½ã®ãã¨ã£ã¦ãã¨ã§ããã
ã«ãã»ã«åããæ©è½ãã¨ãã¦ãã¨ããã¯ããè½åãã¨ãããªãã¸ã§ã¯ãæåå
¥éã¨ä¼¼ãã¨ããããããããããªãã
詳説C++ 第2ç (C MAGAZINE)
éè¦ãªæ å ±ã¯éå ¬éé¨ã«é ããã¾ãããã®ãããªææ³ã, æ å ±é è½ (information hiding) ã¨å¼ã³ã¾ããããã¦, éå ¬éé¨åãã«ãã»ã«ã§è¦ãããã«å ¬éé¨ãåå¨ã, å ¬éé¨ã«ã¯å³é¸ããã驿£ãªå¦çã®ã¿ãç¨æããã¾ããå©ç¨è ã¯, å ¬éãããå¦çãã¤ã³ã¿ãã§ã¤ã¹ã¨ãã¦æä½ãã¾ãããã®ãããªææ³ã, ã«ãã»ã«å (encapsulation) ã¨å¼ã³ã¾ãã
情報隠蔽とカプセル化 (P.84-85)
情報隠蔽とカプセル化 (P.84)
- â»æ å ±é è½
- æ å ±ã¯éå ¬éé¨ã«é ããã
- â»ã«ãã»ã«å
- éå ¬éé¨ã¯å ¬éé¨ã®æ®»ã«è¦ãã, å©ç¨è ããã¯è¦ããªããå©ç¨è å´ã¯å ¬éé¨ã®ã¡ã³ã颿°ããã®ã¯ã©ã¹ã®ã¤ã³ã¿ãã§ã¤ã¹ã¨ãã¦å©ç¨ãã
- â»æ½è±¡ãã¼ã¿å
- æ å ±é è½ã¨ã«ãã»ã«åã«ãã, å©ç¨è ã¯åã®å ·ä½çãªæ§é ãç¥ãå¿ è¦ããªããªã, åã¯ã¤ã³ã¿ãã§ã¤ã¹ã®ã¿ã«ããæ±ºå®ãããæ½è±¡çãªãã®ã¨ãªã
ã«ãã»ã«ã®æ®»ãå
¬éé¨ãä¸èº«ãéå
¬éé¨ã¨ããèãæ¹ã
æ
å ±é è½ããã£ã¼ã«ããéå
¬éã«ããã㨠(ã¢ã¯ã»ã¹ã§ããææ®µã¯ãªãã¦ããã)ãã«ãã»ã«åãæ
å ±é è½ãæ½ããä¸ã§å
¬éãããå¦çãç¨æãããã¨ãã«ãã»ã«åã¨ãã¦ããã
ããã¯ä»ã«é¡ãè¦ãªãèãæ¹ãããããªãã
Javaã¢ããªã±ã¼ã·ã§ã³ä½æè¬åº§âSwingããã°ã©ãã³ã°å¾¹åºæ»ç¥
ã«ãã»ã«åã¯ããã°ã©ã ã®å¯è¦æ§ãå¶å¾¡ããæ©è½ã§ãããã°ã©ã ã¸ã®ã¢ã¯ã»ã¹ãè¦å¶ãã¾ããå¤é¨ã«å ¬éããå¿ è¦æ§ã®ãªãã³ã¼ãã¯å¤é¨ããã¢ã¯ã»ã¹ã§ããªãããã«è¨å®ãããã¨ã§ãè¤éãªå é¨äºæ ãé è½ãã¾ããããã«ãã£ã¦ãäºæããªã䏿£ãªã¢ã¯ã»ã¹ãé²ããããã°ã©ã ã®å®å ¨æ§ãåä¸ããããã¨ãã§ãã¾ããã¾ããããã°ã©ã ã®å©ç¨è ã«ã¨ã£ã¦ããé¢ä¿ã®ãªãæ©è½ãé è½ããããã¨ã«ãã£ã¦è¤éãªã·ã¹ãã ãåç´åããããããå©ç¨ã容æã«ãªãã¾ãã
1.4.1 オブジェクト指向と言語 (P.15)
ã«ãã»ã«åãå¯è¦æ§ã®å¶å¾¡ããæ©è½ã¨ãã¦ããããè¤éãªå é¨äºæ ãé è½ãã¾ããã¨ãããã¨ããããã£ã¼ã«ãã ãã®é è½ã§ã¯ãªããã¡ã½ãããå«ãã§ããã£ã½ãã
ããã»ã©ééã£ã¦ãªãããã°ã©ãç¨èªè¾å ¸
ã¯ã©ã¹å ã®ãã£ã¼ã«ããå é¨å¦çããã¦ããã¡ã½ãããªã©ããå¤é¨ããã¢ã¯ã»ã¹ã§ããªãããã«ãããã¨ã
ããã¥ã¡ã³ããã³ã¡ã³ãã«æåä¸å¯§ã«ãã®ã¢ã¸ã¥ã¼ã«ã®æ£ããä½¿ç¨æ¹æ³ãè¼ãã¦ããã¦ããããã« final ã§ãªããã£ã¼ã«ããããã°å¤ãæ¸ãæããããã« private ã§ãªã颿°ãããã°åæã«ã¢ã¯ã»ã¹ãã¦ãã¾ãã¨ãã風ç¿ãæã£ã¦ãã
カプセル化 (P.51)
ããã°ã©ããã¡ã®æªã®æããã¢ã¸ã¥ã¼ã«ãå®ã
ãã¨ãç®æ¨ã«ãã¦ãããããªæããããã®ã¯æ°ã®ãããªã®ãã®ã
ã¾ããããã°ã©ãç¨èªè¾å
¸ã¯ããã§ãããã
ã¤ããJavaã¢ããªã±ã¼ã·ã§ã³ä½æè¬åº§ã¨ã»ã¨ãã©åãã ãªã
ãã®ããRuby 第2ç Rubyã§ã¯ãããæ°è»½ãªããã°ã©ãã³ã°
ãã¼ã¿ã®æä½ã¯ã¡ãã»ã¼ã¸ãéãã¦è¡ããã¾ãããªãã¸ã§ã¯ãã®è¡¨ç¾ããæ å ±ãè¤éã«ãªãã¨ã1 ã¤ã®ã¡ãã»ã¼ã¸ã«å¯¾ãã¦å¿ è¦ã¨ãªãæä½ã¯è¤éã«ãªãã¾ããããªãã¸ã§ã¯ãã®å©ç¨è ã¯å®éã«ã©ã®ãããªæé ã§å®éã®æä½ãè¡ããã¦ããããç¥ãå¿ è¦ã¯ããã¾ããããã®ãããªé è½åãã«ãã»ã«åã¨ããã¾ãã
カプセル化 (情報の隠蔽) (P.141)
ãã¼ã¿ã®æä½ã¨å¶å¾¡ã®é è½ãã«ãã»ã«åã¨ãã¦ããæããã·ã³ãã«ã
ã¾ããã«ãã»ã«åã¨æ
å ±é è½ (æ
å ±ã®é è½) ã¯åããã®ã¨ãã¦æ±ã£ã¦ããã
稼ããJava!ä»ããæ¥½ããã³ã¼ãã£ã³ã°
ãªãã¸ã§ã¯ãæåã§ã¯ãã¯ã©ã¹ã®å±æ§ (ããã°ã©ã ã§ãã夿°) ã¸ã®å¤é¨ããã®ç´æ¥ã¢ã¯ã»ã¹ãç¦æ¢ããå ¨ã¦ã¡ã½ããçµç±ã§ã¢ã¯ã»ã¹ããããã¨ã§ã¯ã©ã¹ã®ã¢ã¸ã¥ã¼ã«æ§ãé«ãããã¨ããæ å ±é è½ (information hiding)ãåã¯ã«ãã»ã«å (encapsulation) ã¨å¼ã¶ã
あなたのクラスは秘密主義者?
ãã®ãã Ruby ã¨åãèãæ¹ããªã
C++ Coding Standardsâ101ã®ã«ã¼ã«ãã¬ã¤ãã©ã¤ã³ããã¹ããã©ã¯ãã£ã¹ (C++ inâdepth series)
æ å ±é è½ã¯ãããã¸ã§ã¯ãã®ã³ã¹ããã¹ã±ã¸ã¥ã¼ã«ããªã¹ã¯çãæ¬¡ã® 2 ã¤ã®ç¹ã§æ¹åããã
11. 情報を隠蔽しよう (P.21)
- 夿´ã屿çã«ãããæ å ±é è½ã¯å¤æ´ã«ããæ³¢å广ã®ç¯å²ãçããçµæçã«ã³ã¹ããæããã
- ä¸å¤æ§ãåä¸ããããããã°ã©ã ã®ä¸å¤æ§ãç¶æããã³ã¼ã (ãã°ã®ããã¨ãã¯ä¸å¤æ§ãå£ãã¦ãã¾ãã³ã¼ã) ãéå®ãã (é ç® 41 åç §)ã
41. メンバー変数を private にする ただし、振る舞いのない集成体 (C スタイルの struct) は除く (P.72)
- ä¾ 1ï¼é©åãªã«ãã»ã«åã
- ã»ã¨ãã©ã®ã¯ã©ã¹ (MatrixãFileãDateãBankAccountãSecurity ãªã©) ã¯ã¡ã³ãã¼å¤æ°ãå ¨ã¦ private ã«ãã¦æã¡ãé©åãªã¤ã³ã¿ã¼ãã§ã¼ã¹ãæä¾ãã¹ãã§ããã
ããã¯ã«ãã»ã«åããã£ã¼ã«ãé è½ãæããã§ãããªã
JavaScript 第5ç
Java ã C++ ãªã©ã®å¾æ¥ã®ãªãã¸ã§ã¯ãæåè¨èªã«å ±éããç¹å¾´ã¨ãã¦ãã¯ã©ã¹ã®ããããã£ããã©ã¤ãã¼ãã¨ãã¦å®£è¨ã§ããç¹ãããã¾ãããã©ã¤ãã¼ãã¨ãã¦å®£è¨ãããã¨ã§ããã®ããããã£ã¯ã¯ã©ã¹ã®ã¡ã½ããããã®ã¿ã¢ã¯ã»ã¹å¯è½ã¨ãªãããã®ã»ãã®ã³ã¼ãããã¯æä½ã§ããªããªãã¾ãããã¼ã¿ã«ãã»ã«åã¨å¼ã°ããä¸è¬çãªããã°ã©ãã³ã°ãã¯ããã¯ã§ã¯ãããããã£ããã©ã¤ãã¼ãã«ãã¦ãããç¹å¥ãªã¢ã¯ã»ããµã¼ (accessor) ã¡ã½ããããããã¢ã¯ã»ã¹ã§ããªãããã«ãã¾ãã
9.3.7 プライベートメンバ (P.165)
ãã£ã¼ã«ãã®é è½ãã«ãã»ã«åæ´¾ã§ããã
ããããã¢ã¯ã»ããµã¼ (getter/setter) å¿
é è«è
ã£ã½ãã
Javaéâããã°ã©ãã³ã°ã極ããå ã®æ
ã«ãã»ã«åã¯ãã¯ã©ã¹ã®ã¤ã³ã¿ãã§ã¼ã¹ã®ã¿ãã¯ã©ã¹ã®ã¦ã¼ã¶ã«å ¬éãããã®ã§ãããã¯ã©ã¹ã®å®è£ ã®è©³ç´°ãæããã«ãããã®ã§ã¯ããã¾ããã
ã¦ã¼ã¶ã setCoordinate() ã¡ã½ãããå¼ã³åºãéã«æ¸¡ããã Point ãªãã¸ã§ã¯ãã¯æ ¼ç´ã®åã«å¿ ãã³ãã¼ãããã®ã§ããã®ãã¼ã¿ãªãã¸ã§ã¯ãã¯ã©ã¹ã¯å®å ¨ã«ã«ãã»ã«åããã¦ãã¾ããåæ§ã«ãcoordinate ã getCoordinate() ã¡ã½ããããè¿ãããå ´åã«ãå¿ ãã³ãã¼ããã¾ããéçºè ã¯å é¨ãªãã¸ã§ã¯ãã¸ã®åç §ãå¾ããã¨ãã§ããªãã®ã§ã絶対ã«ã«ãã»ã«åãå£ããã¨ã¯ããã¾ããã
3.1.3 見せかけの不変な型 (P.82)
ã¯ã©ã¹ã®å®è£
ããã¨è¨ã£ã¦ããã®ã«ãgetter/setter ã¬ãã«ã§ãã話ããã¦ããªãã»ã»ã»
ååã¨å¾åã§æè¦ãå¤ãã£ã¦ããã¨ãèªããããªãã¨ãä¸éåç«¯ãªæãã
java.util ããã±ã¼ã¸ã®ã¤ã³ã¿ãã§ã¼ã¹ã¯ãä»ã«é¸æè¢ããªãå ´åãé¤ãã¦ã¯ãã¯ã©ã¹ã®ã¦ã¼ã¶ã«å ¬éãã¹ãå¯ä¸ã®ã³ã³ãã¼ãã³ãã§ããããã¯ã«ãã»ã«åã®èãæ¹ã«å¾ã£ã¦ãã¾ããã«ãã»ã«åã¨ã¯ãããã°ã©ããã¯ã©ã¹ã®ã¦ã¼ã¶ã«å®è£ ã®è©³ç´°ãå ¬éããªãã§ãã¯ã©ã¹ã®ã¤ã³ã¿ãã§ã¼ã¹ã ããå ¬éãããã¨ã§ããä¾ãã°ã以ä¸ã®ã³ã¼ãã¯é©åãªã¤ã³ã¿ãã§ã¼ã¹ãã¼ã¹ææ³ã®ä¾ã§ãã
public class SomeClass { HashSet someSet = new HashSet(); protected Set someMethod() { return this.someSet; } }4.1.1 インタフェースベースの手法 (P.88)
ãããããå
é¨ç¶æ
ãé²åºãã¦ãï¼ãã£ã¼ã«ããé private ã ï¼ï¼ï¼
ã«ãã»ã«åã¨ã¯ãå®è£
ã®è©³ç´°ãå
¬éããªããã¨ã§ãã¤ã³ã¿ãã§ã¼ã¹ã ãå
¬éãããã¨ï¼ã¾ããã£ãã¨è¨ã£ã¦ããã¨ãå¤ãã£ã¦ããã»ã»ã»
ãªãã¸ã§ã¯ãæåã¨ã³ã¸ãã¢ãªã³ã°ã¯ã«ãã»ã«åã®æ¦å¿µã«åºã¥ãã¦ãã¾ããã¤ã¾ãããªãã¸ã§ã¯ãã®å é¨ã«ã¤ãã¦ã¯ãã¯ã©ã¹ã®ã¦ã¼ã¶ããã¯è¦ããªãããã«ãã¹ãã§ããããããã£ã¼ã«ãã¯ããªãã·ã§ã³ã®å é¨å®è£ ãã¦ã¼ã¶ã«å ¬éãããããä¸é©åãªã«ãã»ã«åã®ä¸ä¾ã§ãã
7.3.3 不適切なカプセル化 (P.167)
ã¾ãæè¦ãå¤ãããªãã®ãããããã®æ¬ã¯é§ç®ãªæ¬ãªã®ã§æ°ã«ããªããã¨ã«ããã
Effective Java 第2ç (The Java Series)
䏿ãè¨è¨ãããã¢ã¸ã¥ã¼ã«ã¯ããã®å®è£ ã®è©³ç´°ããã¹ã¦é è½ããå®è£ 㨠API ãã¯ã£ããã¨åé¢ãã¦ãã¾ããããã¦ãã¢ã¸ã¥ã¼ã«ã¯ API ãéãã¦ã®ã¿ä»ã®ã¢ã¸ã¥ã¼ã«ã¨éä¿¡ããåã¢ã¸ã¥ã¼ã«ã¯ãäºãã®å é¨ã®åãã«ã¤ãã¦ã¯ç¥ãã¾ããããã®æ¦å¿µã¯ãæ å ±é è½ (information hiding) ãããã¯ã«ãã»ã«å (encapsulation) ã¨å¼ã°ããã½ããã¦ã§ã¢è¨è¨ã®åºæ¬çãªæç¾©ã®1ã¤ã§ã [Parnas72]ã
項目 13 クラスとメンバーへのアクセス可能性を最小限にする (P.67)
è¯ãããã°ã©ã ã¯ãæ å ±é è½ (information hiding) ã®ååãå ·ä½åãã¦ãã¾ããã¤ã¾ããå¯è½ãªã¨ããã§ã¯åã ã®ã¢ã¸ã¥ã¼ã«å ã«è¨è¨ä¸ã®æ±ºå®ãå±å°å*1ãã¦ãã¾ãã®ã§ãåã ã®æ±ºå®ã¯ã·ã¹ãã ã®æ®ãã®é¨åã«å½±é¿ãä¸ãããã¨ãªã夿´ã§ãã¾ã (é ç® 13)ã
項目 55 注意して最適化する (P.227)
æ å ±é è½, â ã«ãã»ã«å
索引 (P.321)
æ
å ±é è½ã¨ã«ãã»ã«åãåããã®ã¨ãã¦ããã
ã§ãå®è£
ã®è©³ç´°ãé è½ãã¦ãå®è£
㨠API ãåé¢ãAPI ã®ã¿ã使ç¨ãããã¨ã
ãã£ã¼ã«ãã®é è½ã ããæãã¦ããã¨ããã¤ã³ã¿ã¼ãã§ã¤ã¹ã®è£ã«å®è£
ã¯ã©ã¹ãé è½ãããã¨ãæãã¦ããã¨ãã¨ãããªã
Jakarta Commonsã¯ãã¯ãã㯠âJavaããã¸ã§ã¯ãå¿ é ã®ã¬ã·ãé
Transformer ã¯å¤æãã¸ãã¯ãåé¢ããã«ãã»ã«åãã¾ãããã¡ã¤ã³ã¢ãã«éã§ããããã¯ãªãã¸ã§ã¯ãã¿ã¤ãéã§å¤æãå¿ è¦ãªå ´åã¯ããã®å¤æãã¸ãã¯ã Transformer å ã«ã«ãã»ã«åãã¹ãã§ãã
レシピ4.10 オブジェクトの変換 (P.127)
夿ãã¸ãã¯ãã«ãã»ã«åã¨è¨ã£ã¦ãããã¨ããããã£ã¼ã«ãã®é è½ã ããæãã¦ããããã§ã¯ãªããã¨ã¯ãããã
ã»ã³ã¹ã»ãªãã»ããã°ã©ãã³ã°! æ½è±¡çã«èãããã¨ã»ãã¼ã¿æ§é ãçè§£ãããã¨
ãªãã¸ã§ã¯ãæåã§ã¯ããã¼ã¿ããªãã¸ã§ã¯ãå ã«é è½ããéå®ãããæç¶ãã®ã¿ã§æä½ã§ããããã«ãã¾ãããããã«ãã»ã«åã¨å¼ã³ã¾ã(å³ 4-2)ã
データ構造とオブジェクト指向 (P.150)
ãã£ã¼ã«ãã®é è½ã®ã¿ãæãã¦ããããã
ããã°ã©ãã³ã°è¨èª Ruby
ã¡ã½ããå¼ã³åºãã§ãã£ããçç¥ããã¦ããã®ã§ããããã®ã³ã¼ãã¯ã¾ãã§ãªãã¸ã§ã¯ãã®ååä»ããã£ã¼ã«ããååä»ã夿°ã®åç §ã®ããã«è¦ãããããã¯æå³çãªãã®ã ããå®éã«ã¯ Ruby ã¯ãªãã¸ã§ã¯ãã®ã«ãã»ã«åã«ã¤ãã¦ã¯å³æ ¼ãªè¨èªã ããªãã¸ã§ã¯ãã®å¤ãããªãã¸ã§ã¯ãã®å é¨ç¶æ ã«ã¢ã¯ã»ã¹ãããã¨ã¯ã§ããªãã
1.1.1 Ruby はオブジェクト指向言語 (P.3)
Ruby ã®ãªãã¸ã§ã¯ãã¯ãå³éã«ã«ãã»ã«åããã¦ããããªãã¸ã§ã¯ãã®ç¶æ ã«ã¯ããªãã¸ã§ã¯ããå®ç¾©ããã¡ã½ãããéãã¦ã§ãªããã°ã¢ã¯ã»ã¹ã§ããªãã
7章 クラスとモジュール (P.222)
ã»ã»ã»
ãªãã¸ã§ã¯ãã®ç¶æ ããã®ããã«å³éã«ã«ãã»ã«åããã¦ããã®ã¨ã¯è£è ¹ã«ãRuby ã®ã¯ã©ã¹ã¯é常ã«ãªã¼ãã³ã§ããã
ããã¾ããã£ã¼ã«ãã®é è½ã®ã¿ãæãã¦ããããã
ããã°ã©ãã³ã°ä½æ³
å®è£ ã®è©³ç´°ãé è½ããããã¤ã³ã¿ã¼ãã§ã¤ã¹ã®è£ã«ããå®è£ ã¯ãããã°ã©ã ã®ã»ãã®é¨åã«ä¸åå½±é¿ãæ¯éãåã¼ããã¨ãªã夿´ã§ããããã«é ãã¦ããå¿ è¦ãããããã®ç¨®ã®æ§æä¸ã®ååã表ç¾ããç¨èªã¯ä½ç¨®é¡ããããæ å ±é è½ãã«ãã»ã«åãæ½è±¡åãã¢ã¸ã¥ã¼ã«åãªã©ã¨ãã£ãç¨èªã¯ã©ããåã種é¡ã®çºæ³ã表ãã¦ããã
4.5 インターフェイスの原則 (P.148)
ã¤ã³ã¿ã¼ãã§ã¤ã¹ãä¾ãã° Java ã® interface ã¨åãããä¾ãã° C++ ã®ãããã®ãããªãã¨åããã«ãã£ã¦ãã¡ãã£ã¨æå³ãå¤ãã£ã¦ãããã
ãã ãæ
å ±é è½ã¨ã«ãã»ã«åã¯åããã®ã¨ãã¦ããã
Javaããã°ã©ãã®ããã®ã¢ã«ã´ãªãºã ã¨ãã¼ã¿æ§é
ãã®ããã«, ãã¼ã¿ã¨ãã®ãã¼ã¿ã«å¯¾ããæä½æç¶ããçµã¿ã«ãããã¨ãã«ãã»ã«å (encapsulation) ã¨ããã¾ããã«ãã»ã«åãè¡ããã¨ã«ãã£ã¦, ç¨æãããæä½ãå©ç¨ããªããã°, ãã¼ã¿ãåç §ã»å¤æ´ãããã¨ãã§ããªããªãã¾ãã
3.1 抽象データ型 (P.32)
ããã¯ãã£ã¼ã«ãã®é è½ãè¨ã£ã¦ã¾ããã
ã¯ããã¦å¦ã¶UMLâãªãã¸ã§ã¯ãæåã®åºç¤ããUMLã®å©ç¨æ³ã¾ã§ããã£ããããããã!
ã«ãã»ã«åãç°¡åã«è¨ãã¨ãå ¬éé¨åã¨éå ¬éé¨åã«åãããã¨ãã§ãããã®ãããæ å ±é è½ã¨å¼ã°ãããã¨ãããã¾ãã
カプセル化 (P.34)
ããã¯ã¯ã©ã¹ã®ä¸ã®è©±ã ã¨æããã§ããã£ã¼ã«ãã®é è½ãã«ãã»ã«åã£ã¦ãã¨ã§ããã
ããã«ãã«ãã»ã«åã¨æ
å ±é è½ã¯åããã¨ã
ãªãã¡ã¯ã¿ãªã³ã°âããã°ã©ã ã®ä½è³ªæ¹åãã¯ãã㯠(Object Technology Series)
ãå§è²ã®é è½ (157)ãã®åæ©ã§ã¯ãå§è²ãªãã¸ã§ã¯ãã®å©ç¨ãã«ãã»ã«åãããã¨ã®æå¹æ§ã«ã¤ãã¦è¿°ã¹ã¾ããã
第7章 オブジェクト間での特性の移動 (P.160)
ãªãã¸ã§ã¯ãæåã®ä¸»è¦ãªæç¾©ã®1ã¤ã¯ãã«ãã»ã«åããããã¯ãã¼ã¿ã®é è½ã§ããããªãã¡ãèªåã®ãã¼ã¿ãå ¬éãã¦ã¯ãªããªãã¨ãããã¨ã§ãã
第8章 データの再編成 (P.206)
ã¡ãã£ã¨å¤æã«å°ããªãã
Javaè¨èªã§å¦ã¶ãªãã¡ã¯ã¿ãªã³ã°å ¥é
é©åã«æ å ±ãé ããã¨ãä¸è¬ã«æ å ±é è½ (information hiding) ã¨ããã¾ããæ å ±é è½ã¯æ¥µãã¦éè¦ã§ãã
第0章 リファクタリングとは (P.10)
ãã£ã¼ã«ãã private ã«ãã¦å¤é¨ããã®ç´æ¥ã¢ã¯ã»ã¹ãç¦ããå¿ ã getter ã¡ã½ããã使ã£ã¦ãã£ã¼ã«ãã«ã¢ã¯ã»ã¹ããããã¨ãã«ãã»ã«å (encapsulation) ã¨ããã¾ãã
第6章 クラスの抽出 (P.125)
ã¯ã©ã¹å士ã®é¢ä¿ãã·ã³ãã«ã«ããããã«ã¯ãæ å ±é è½ãã©ããã¦ãå¿ è¦ã«ãªãã¾ãã
第14章 委譲の隠蔽 (P.310)
ã»ã»ã»
å§è²ã¯ã©ã¹ã¸ã¢ã¯ã»ã¹ããããã®ã¡ã½ãã (å§è²ã¡ã½ãã) ããµã¼ãã¯ã©ã¹ãæä¾ãã¦ããã°ãã¯ã©ã¤ã¢ã³ãã¯ã©ã¹ã¯å§è²ã¯ã©ã¹ãå©ç¨ããªãã¦ããããªãã¾ããããã§ããµã¼ãã¯ã©ã¹ãå§è²ã¯ã©ã¹ã¸å§è²ãã¦ããã¨ããå®è£ 詳細ããã¯ã©ã¤ã¢ã³ãã¯ã©ã¹ããé ããã¨ãã§ãã¾ãã
ããã¯ãªãã¡ã¯ã¿ãªã³ã°ãå ã«æ¸ããã¦ããã®ã§ãåèã¾ã§ã«ããã ãgetter ã使ã£ã¦ãã£ã¼ã«ãã«ã¢ã¯ã»ã¹ããããã¨ãã«ãã»ã«åã¨å¼ã¶ã®ã¯ã¡ãã£ã¨éããããã
ãªãã¸ã§ã¯ãè³ã®ã¤ããæ¹âJavaã»UMLã»EJBããã¹ã¿ã¼ããããã®ç©¶æ¥µã®åºç¤è¬åº§
ã«ãã»ã«åã¨ã¯ã
- ã¯ã©ã¹ã«ä»äºãå²ãæ¯ãã¨ãã«ãä»äºã®å ·ä½çãªããæ¹ã¯ãã®ä»äºã®è²¬ä»»ããã£ãæ å½ (ã¯ã©ã¹) ã ããç¥ã£ã¦ããããã«ãã¦ããã®æ å½ã«ä»äºãé ¼ã人ã¯ããã®ä¸èº«ããããªãããã«ããªãã
ã¨ãããã¨ã§ãã
2.8 適当解説:カプセル化 (P.21-22)
風éªè¬ã®é å¤ã¯ãããã«ãã»ã«ã«ãªã£ã¦ãã¾ãããã®ã«ãã»ã«ã®ä¸ã«ã¯ãããããªç¨®é¡ã®è¬ãå ¥ã£ã¦ãã¾ãããæã ã¯ãã®ä¸ã«ã©ããªç¨®é¡ã®è¬ãå ¥ã£ã¦ãããã¯å ¨ç¶çè§£ãã¦ã¾ãããããããã«ãã»ã«ã«å ¥ã£ã風éªè¬ã飲ãã¨ã風éªãæ²»ã¾ããã¨ãããã¨ã ãã¯ç¥ã£ã¦ãã¾ãããããªæãã®ã¤ã¡ã¼ã¸ãã«ãã»ã«åã¨ããããã§ãã
ããããã£ã¼ã«ãã®é è½ã®ãã¨ã§ããã®ããªã
å§è²ãå«ãã¦ãã¨èãã¦ãããããã
ã«ãã»ã«ã使ã£ã説æã¯è¯ããããã©ããã®ã©ãã¨ãéãæãã®èª¬æã«ãªã£ã¦ãã®ãé¢ç½ããã§ããããã¯ãããã«ããã¨æããã ãã©ã»ã»ã»
ããã°ã©ãã®å®å ¨å¸¸è éçºè ãç¥ã£ã¦ããã¹ãããã®ç¥æµ
ãã«ãã»ã«åãã¯, ãã¼ã¿ã¨ã¡ã½ãã (ãã¼ã¿ã«å¯¾ããå¦ç) ãã¾ã¨ãããã¨ã§ããã¯ã©ã¹ã¨ããã«ãã»ã«ã®ä¸ã«, ãã¼ã¿ã¨ã¡ã½ãããã¾ã¨ãã¦è¨è¿°ãã¾ãã
知識 2-13 Java のオブジェクト指向プログラミングに関する言語構文 (P.107)
ã«ãã»ã«ã®æ®»ãã¯ã©ã¹ãä¸èº«ããã¼ã¿ã¨ã¡ã½ãããã§ãé è½ã¯ãªãã¦ããããã¨ãæ¬æ°ã§ããã
このページã¯ãã®æ¬ãåèã«ããã¨æãããã
ããã°ã©ãã³ã°ã®ã»ãªãªã¼
ã«ãã»ã«åã¨ããè¨èããããã©ãã¯ããã¯ã¹åããã¤ã¡ã¼ã¸ãã人ãå¤ãããã§ãããã®ãããã«ãã»ã«åã®ä¾ã¨ãã¦ããã£ã¼ã«ãã« private 屿§ãæå®ãããããèªã¿æ¸ããã public ãªã¡ã½ãããç¨æããã¨ãããµã³ãã«ããã°ã©ã ããã示ããã¾ãããã®ãããªããã°ã©ã ã®ã¡ãªããã¯ããã£ã¼ã«ãã«æ¸ãè¾¼ã¾ããå¤ããã§ãã¯ããä¸é©åãªå¤ãä»£å ¥ãããªãããã«ã§ãããã¨ã§ãã
カプセル化のイメージを考え直す (P.270)
ã»ã»ã»
ãã®ãããªä¾ãè¦ã¦ããã¨ãããã£ã¼ã«ãã¯çµ¶å¯¾ã« private ã«ããªããã°ãããªããã¨æãè¾¼ãã§ãã¾ãã§ããããããããããã§ã¯ã³ã¼ããé·ããªã£ã¦ãã¾ãã¾ãããããããã£ã¼ã«ãã 10 åããã¯ã©ã¹ãªããããããèªã¿æ¸ãããã¡ã½ãã㯠20 åå¿ è¦ã«ãªãã¾ãã
ã«ãã»ã«åã«å¯¾ããã¤ã¡ã¼ã¸ãå¤ãã¾ããããããã©ãã¯ããã¯ã¹åãã§ã¯ãªããããã¼ã¿ã¨å¦çãä¸ä½åãã (1 ã¤ã®ã¯ã©ã¹ã«ã¾ã¨ãã¦è¨è¿°ãã) ãã¨ãã«ãã»ã«åã§ãããã¾ãã¯ããããããªãã¸ã§ã¯ãã¯æ¯ãèãã¨å±æ§ãæã¤ãã®ã§ãããã¨ããã¤ã¡ã¼ã¸ã«å¤ãã¾ãããã
ã¤ã¾ãããã£ã¼ã«ãã¨ã¡ã½ãããæã¤ã¯ã©ã¹ãè¨è¿°ããã ãã§ããã§ã«ã«ãã»ã«åãè¡ããã¦ããã®ã§ããJava ã C# ã§ã¯ãã¯ã©ã¹ã«å±ããªããã¼ã¿ (C è¨èªã®ã°ãã¼ãã«å¤æ°ã«ç¸å½ãããã®) ãå®ç¾©ã§ããªãã®ã§ãèªç¶ã¨ã«ãã»ã«åãã§ããã¯ãã§ãããã£ã¼ã«ãã« private ãæå®ãããã¨ã«ãã ããå¿ è¦ã¯ããã¾ããã
ãã¼ããè¦äºã« getter/setter 絶対å¿
è¦æ´¾ã§ããã
ããã ããããªãã¦ãã¯ã©ã¹ã®ä¸ã«ç½®ãã°ã«ãã»ã«åã¨ãªã
OOP è¨èªã使ãã°ãç¶æ¿ãã«ãã»ã«åã夿 æ§ãèªç¶ã¨å®è·µã§ãã
オブジェクト指向の考え方とテクニックを区別する (P.267)
ãªãã¦æ¸ãã¦ãwww
OOPL ã使ã£ãã¨ããã§åºæ¥ä¸ãã£ãããã°ã©ã ããªãã¸ã§ã¯ãæåãã¨ããã¨ãããã¯éãã£ã¦ã®ã¯èª°ããèªããã¨ãããªã®ã«ãç¢æ²¢ããã¯ããã¯èãã¦ãªãã¿ããã§ããèªåã OOP ãçè§£ã§ãã¦ãªããããèããããªãã¨ãï¼
ãªãã¸ã§ã¯ãéçºã®ç¥é«?UML 2.0ã使ã£ãã¢ã¸ã£ã¤ã«ã¢ãã«é§åéçºã®ãã¹ã¦
ã¯ã©ã¹ãä½ãç¥ã£ã¦ãã¦ä½ãè¡ããããæ±ºããããã¨ããã¯ã©ã¹ããæ½è±¡åãããã¨è¨ãã¾ããã¯ã©ã¹ããããã®äºæãã©ãéæãããè¨è¨ããã¨è¨ãã®ã§ã¯ãªããã¯ã©ã¹ããã«ãã»ã«åãããã¨ããã¾ããæ å ±ã«å¯¾ããã¢ã¯ã»ã¹ãå¶éãã¦ãã¾ãã¯ã©ã¹ãè¨è¨ãããã¨ããæ å ±ããé è½ãããã¨è¨ãã¾ãã
2.6 抽象化、カプセル化、情報隠蔽 (P.55-56)
ã»ã»ã»
ã·ã¹ãã ã¨ãã¦åãããã«å¿ è¦ãªã·ã¹ãã ã®æ©è½ãã©ã®ããã«ã¢ã¸ã¥ã¼ã«åãããã¨ããåé¡ã¯ãã«ãã»ã«åã«ãã£ã¦å¯¾å¦ãã¾ãããªãã¸ã§ã¯ãæåã®ä¸çã§ã¯ãã·ã¹ãã ã¯ã¯ã©ã¹ã«ã¢ã¸ã¥ã¼ã«åãããã¯ã©ã¹ã¯ããã«ã¡ã½ããã¨å±æ§ã«ã¢ã¸ã¥ã¼ã«åããã¾ããããããæ¯ãèããã¯ã©ã¹ã«ã«ãã»ã«åããããããã¯ãæ©è½ãã¡ã½ããã«ã«ãã»ã«åããã¨è¨ãã¾ãã
ã«ãã»ã«åã¯ãè¨è¨æã«èæ ®ãã¹ããã¨ã§ãããã·ã¹ãã å ã§æ©è½ãã©ã®ããã«åºåããããã¨ããè¦ç¹ã§ã¯ã©ã¹ãæãããã¨ã§ããã·ã¹ãã ãæ§æããé¨åã¯å é¨ãã©ãå®è£ ããã¦ããããç¥ããªãã¦ã使ããããã«ãªã£ã¦ããã¹ãã§ãã
æ½è±¡åã¯ã¯ã©ã¹ãä½ãç¥ã£ã¦ããããå¿
è¦ãã¨ããã®ã¯æ¬æ°ããã
ä½ãè¡ãããæ±ºãããã¨ãæ½è±¡åã¨å¼ã¶ãã£ã¦ã®ã¯ãããããã©ããããã©ã¹ä½ãç¥ã£ã¦ããããå¿
è¦ãã¨ãªã
ã§ãã©ãéæããããæ±ºãããã¨ãã«ãã»ã«åããã¨è¨ãã»ã»ã»ï¼
ããã«æ
å ±ã«å¯¾ããã¢ã¯ã»ã¹ãå¶å¾¡ãã¦ãã¾ãã¯ã©ã¹ãè¨è¨ãããã¨ãæ
å ±é è½ã¨è¨ãã»ã»ã»ï¼
ãªããããããããã
ã«ãã»ã«åã¯è¨è¨æã«èæ
®ãã¹ããã¨ãã£ã¦ã®ã¯èãããã¨ãªãã£ããªã
ã¦ãã¨ã¯ãåç´ãªãã£ã¼ã«ãã®é è½ãæãã¦ããããã§ã¯ãªãããã
用語集 (P.518, 527)
- ã«ãã»ã«å
- é¢é£ããæ¦å¿µããã¯ã©ã¹ãã³ã³ãã¼ãã³ãã¨ãã£ã 1 ã¤ã®é ç®ã«ã°ã«ã¼ãåãããã¨ã
- æ å ±é è½
- 屿§ã«å¯¾ããå¤é¨ããã®ã¢ã¯ã»ã¹ãå¶éãããã¨ã
ã«ãã»ã«åã§é è½ã«ã¤ãã¦ã¯ãªã«ãè¦å®ãã¦ããªãã¨ãããè¦ãã¨ãã«ãã»ã«åã¨æ
å ±é è½ã¯å
¨ãå¥ç©ã§ããã¨ãã¦ããã®ããªã
ã«ãã»ã«åã ããªãé è½ããã¦ããå¿
è¦ã¯ãªãããæ
å ±é è½ã ããªãé¢é£ããæ¦å¿µã¯ã¾ã¨ã¾ã£ã¦ãªãã¦ãããã¨ã
ã½ã¼ã¹ã³ã¼ããªã¼ãã£ã³ã°ããå¦ã¶ Javaã®è¨è¨ã¨å®è£
æ å ±é è½ã¨ã¯ãããã¯ã©ã¹ã®å®è£ ã®è©³ç´°ãä»ã®ã¯ã©ã¹ããé è½ãããå½¢ã§ãããã°ã©ã åå²ãè¡ãã¨ããè¨è¨åçã§ã注 2ã
10.1 オブジェクト指向ソースコードの特徴 (P.209)
ã»ã»ã»
注 2ãé¡ä¼¼ã®æ¦å¿µã«ãã«ãã»ã«åããããã¾ãããå³å¯ã«ã¯ä¸¡è ã¯ç°ãªãæ¦å¿µã§ãããã¼ã¿ã¨æ¯ãèãã¨ã 1 ã¤ã«ã¾ã¨ãããã¨ãæå³ããã«ãã»ã«åã¯ãæ å ±é è½ã®è¨è¨åçãå®ç¾ããææ®µã® 1 ã¤ã«ããã¾ããã
ããã¯æ°ãããæ
å ±é è½ã¯å®è£
ã®è©³ç´°ãé è½ãã¦ãåå²ãè¡ãè¨è¨åçãã«ãã»ã«åã¯ãã¼ã¿ã¨æ¯ãèãã¨ãã¾ã¨ããæ
å ±é è½å®ç¾ã®ææ®µã® 1 ã¤ãã¨ã
ããã®éã¯ããã¤ãæ¬ããããã ãã©ãã»ã»ã»ï¼
ããã¨ããJava ã®ãè¨è¨ã¨å®è£ ãå¦ã¶ãããããªãããæ³¨æãå¿ è¦ãããã¾ã§ãJava ã§æ¸ãããã©ã¤ãã©ãªçã®è¨è¨ã¨å®è£ ãå¦ã¶æ¬ã
More Exceptional C++ ããã«40ã®ã¯ã¤ãºå½¢å¼ã«ããããã°ã©ã åé¡ã¨è§£æ³ (C++ InâDepth Series)
æ¨æº C++ [C++98] ã® 17.1.18 ã« traits ã¯ã©ã¹ã®è¨è¿°ãããã
ã¤ã³ã¹ã¿ã³ã¹åãããåã®ãªãã¸ã§ã¯ããæä½ããããã«ããã³ãã¬ã¼ãã¯ã©ã¹ã¨ãã³ãã¬ã¼ã颿°ã®ã»ãããã«ãã»ã«åããã¯ã©ã¹ã§ããâ»2ã
ã»ã»ã»
項目 4:拡張可能なテンプレート:継承と特性 (traits) (P.20)
â»2 ããã§è¨ããã«ãã»ã«åãã¨ã¯ãæ®»ã®ä¸ã«é è½ãããã¨ã§ã¯ãªããã²ã¨ã¾ã¨ãã«ããã¨ããæå³ã§ä½¿ã£ã¦ããã traits ã¯ã©ã¹ã®ä¸èº«ãå ¨ã¦å ¬éããã®ã¯ãããããã¨ã§ãå®éãstruct ã使ã£ããã³ãã¬ã¼ãã¨ãã¦å®è£ ããããã¨ãå¤ãã
ã«ãã»ã«åã«ã¯è¤æ°ã®æå³ããããã¨è¨ããã¨ã§ããã
ãã¼ã¿ãã¼ã¹ã·ã¹ãã æ¦è«
å¯ä¸ã®æ¡ä»¶ã¯, ã¹ã«ã©å¤ã®å 鍿§é 㯠DBMS ã«å¯¾ã㦠"è¦ããªã" ããã«ããªããã°ãªããªããã¨ã§ããâããªãã¡, 4 ç« ã§èª¬æãããã, DBMS ããè¦ãéã, å¤ã¯ã¹ã«ã© (ããªãã¡ "ååç") ã§ãã. ããã®ããããªãè¨èã使ãããã«ã¯, å¤ã¯ "ã«ãã»ã«å (encapsulation)" ããã¦ããªããã°ãªããªã.
19.2 定義域 (P.596)
ãã¹ã¦ã®ãªãã¸ã§ã¯ãã¯ã«ãã»ã«å (encapsulation) ããã¦ãã. ãã®æå³ããã¨ããã¯, ä¸ãããããªãã¸ã§ã¯ã, ä¾ãã° DEPT ã®å é¨è¡¨ç¾âããªãã¡ãã®å 鍿§é âã¯, ãã®ãªãã¸ã§ã¯ãã®ã¦ã¼ã¶ã«ã¯è¦ããªãã¨ãããã¨ã§ãã. ãã®ä»£ãã, ã¦ã¼ã¶ã¯ãã®ãªãã¸ã§ã¯ããããæ©è½ (ãã¡ã½ããã) ãå®è¡ã§ããã¨ãããã¨ã ããç¥ã£ã¦ãã.
22.3 オブジェクト, メソッドおよびメッセージ (P.691)
ã»ã»ã»
ã«ãã»ã«åã®ã¢ã¤ãã£ã¢ã«å¾ã£ã¦, ãªãã¸ã§ã¯ãã¯, ãã大ã¾ãã ããç§ç¨ã¡ã¢ãª (private memory)ãã¨ãå ¬ç¨ã¤ã³ã¿ãã§ã¼ã¹ (public interface)ãããã¤ãã®ã¨è¨è¿°ããããã¨ããã.
ããã, ã«ãã»ã«åã®æ¦å¿µããã¾ãã«ãé 大ããã¦, å®ç¾ã§ããªããããããªãã¨ãããã¨ã«æ³¨æãããã. ãã¼ã¿ãã¼ã¹ãæåã«åµæãããã¨ãã«ã¯äºè¦ã§ããªãã£ãæ¹æ³ã§ãã¼ã¿ãã¢ã¯ã»ã¹ããè¦æ±ã¯å¸¸ã«ããã ããã, æ°ãããã¼ã¿ã¢ã¯ã»ã¹ã®è¦æ±ãèµ·ãããã³ã«, æ°ããæç¶ãã³ã¼ããæ¸ããªããã°ãªããªãã¨ããèãã¯åç´ã«åãå ¥ããããªã. å ¨ã, ãããªãã¨ã¯é¢ä¿å以åã®ã·ã¹ãã ã®ç¶æ³ã«ä»ãªããªãã, ããã¯, ãã¼ã¿ãã¼ã¹ã»ã·ã¹ãã ã®å è½ã«ä¸å½¹ããã ãã .
25.2 「オブジェクト指向モデル」の概観 (P.755-756)
ãã®ãã, ã·ã¹ãã ã¯, ã«ãã»ã«åãããªãã, ã©ãããã§ãè¦ããããã«ãã¤ã³ã¹ã¿ã³ã¹å¤æ°ããå ¬éãããããªããªãã¸ã§ã¯ããã®ãµãã¼ããä»ãå ããã¹ãã ã¨æã. ããã¦âå°ãå èµ°ããâãã®ãããªã«ãã»ã«åãããªãããªãã¸ã§ã¯ããã¯, ã¾ãããé¢ä¿ã«ãããã¿ãã«ãªã®ã§ãã (25.3 ç¯åç §). å°ãªãã¨ãåççã«ã¯ã«ãã»ã«åãããªãé¢ä¿ã¯, ã«ãã»ã«åããããªãã¸ã§ã¯ãã¨åãããããã¼ã¿ã®ç¬ç«æ§ãæä¾ãããã¨ãã§ãã (ä¸ã§èª¬æãããããã«) ã¨ãããã¨ã«æ³¨æãããã. ããã«åççã«ã¯, åã®é層, ç¶æ¿ãªã©ã®æ¦å¿µã¯, å°ãªãã¨ãã«ãã»ã«åããããªãã¸ã§ã¯ãã¨åãããããã¾ããã, ã«ãã»ã«åãããªãé¢ä¿ã«ãé©ç¨ããããã¨ã«ã注æãããã (19 ç« ã§èª¬æãããããã«). ããã¦, ãã¡ãã, å½è©²ã®é¢ä¿ã«å¯¾ããç¹æãªã¡ã½ããã«ãã£ã¦ã¢ã¯ã»ã¹ããã代ããã«, ããç¥ããã, çµã¿è¾¼ã¿åã®, é¢ä¿ä»£æ°ã®å æ¬çãªéåæ¼ç®ã«ãã£ã¦é¢ä¿ãã¢ã¯ã»ã¹ãã, ããã«ãã£ã¦ãæãããããªãã£ãè¦æ±ãã®ç®çãæºãããã¨ãã§ãã.
ããã¯ã»ã»ã»
ã¨ãããããããã°ã©ã ã®ãã¨ãè¨ã£ã¦ãããããªãã¦ãRDB ã®è©±ãªã®ã§ãããã¾ã§åèç¨åº¦ã«ãã
Ship It! ã½ããã¦ã§ã¢ããã¸ã§ã¯ã æåã®ããã®é人å¼ã¬ã¤ãããã¯
ãã¼ã¿ã¢ã¯ã»ã¹ã®ããã® API ãå®ç¾©ããã¨ããã¼ã¿ã®æ ¼ç´æ¹æ³ãå徿¹æ³ãã«ãã»ã«åããã¦ãã·ã¹ãã ã®ã»ãã®ãªãã¸ã§ã¯ãã¯ãã®è©³ç´°ãé¢ç¥ããå¿ è¦ããªããªãã¾ãã
システムオブジェクトを定義する (P.113)
ãã㯠getter/setter ã®ãã¨ãè¨ã£ã¦ããã®ããªï¼ããã ãã§ã¯ãªãã¨ã夿ãã§ããªããªã»ã»ã»
ããã°ã©ãã³ã°C#âC#2.0/.NET2.0/Visual Studio2005対å¿
ã¯ã©ã¹ãè¨è¿°ãããã¨ã§ããããã®ã®æ§è³ªã¨ãããã§ãããã¨ããåä¸ã§èªå·±å®çµãã¤èªç«ããã³ã¼ãã®å¡ã«ã«ãã»ã«åã§ãã¾ãããããã¯ã©ã¹ã¨ãããã®ã®å¤§ããªå©ç¹ã§ããä¾ãã°ãWindows ãªã¹ãããã¯ã¹ã³ã³ããã¼ã«ã®å 容ãä¸¦ã¹æ¿ãããã¨ãã¯ããã®ãªã¹ãããã¯ã¹ã«èªèº«ãã½ã¼ãããããã«æç¤ºããã°ããã®ã§ãããã®ãªã¹ãããã¯ã¹ãã½ã¼ããã©ããã£ã¦è¡ããã¯åé¡ã§ã¯ããã¾ãããããã°ã©ãã¯ããããã½ã¼ãå¯è½ã§ããã¨ãããã¨ã ããç¥ã£ã¦ããã°ããã®ã§ããã«ãã»ã«åã¯ããªã¢ã¼ãã£ãºã ãç¶æ¿ã¨ä¸¦ãã§ããªãã¸ã§ã¯ãæåããã°ã©ãã³ã°ã® 3 æ¬æ±ã® 1 ã¤ã§ãã
4章 クラスとオブジェクト (P.67)
ããããã£ã¯ã¡ã³ã夿°ã®ããã«è¦ããã®ã§ãå©ç¨è ã«ã·ã³ãã«ãªã¤ã³ã¿ã¼ãã§ã¤ã¹ãæä¾ã§ãã¾ããã¾ãåæã«ãã¡ã½ããã¨ãã¦å®è£ ããããã¨ã§ããããªãã¸ã§ã¯ãæåè¨è¨ã«å¿ è¦ãªãã¼ã¿é è½ãè¡ãã¾ãã
4.7 プロパティによるデータのカプセル化 (P.97〜100)
ã»ã»ã»
ããããã£ã«ã¯ããªãã¸ã§ã¯ãæåã«ã¯æ¬ ãããªããã¼ã¿ã®é è½ã¨ã«ãã»ã«åãç ç²ã«ãããã¨ãªããå©ç¨è å´ã§ã¯ç´æ¥çã«ã¢ã¯ã»ã¹ã§ããã¨ãããã¨ã¨ãéçºè å´ã§ã¯å ¥åãã¼ã¿ãæ¤è¨¼ã§ããã¨ãã 2 ã¤ã®å©ç¹ãããã¾ãã
ãã¼ãã夿ã«å°ãã
ãã¼ã¿é è½ã¯ãã£ã¼ã«ãã®é è½ã®ãã¨ãæãã¦ããããã ãã©ãã«ãã»ã«åã¯ä»ã¾ã§ã®ã©ãã¨ãéããããªãæã
ä¼¼ã¦ããããªã»ã»ã»
Java並è¡å¦çããã°ã©ãã³ã° âãã®ãåºç¤ãã¨ãææ°APIããç©¶ããâ
䏿ã«çµç¹åãããã¡ã³ããã³ã¹æ§ã®è¯ãã¯ã©ã¹ã®éã¾ããä½ãããªãã¸ã§ã¯ãæåã®ãã¯ããã¯âã«ãã»ã«åããã¼ã¿é è½ãªã©âã使ã£ã¦ããã°ããã®åããã¯ããã¯ãã¹ã¬ããã»ã¼ããªã¯ã©ã¹ä½ããæ¯ãã¦ããã¾ãããã®åé¡ã®å¤æ°ã«ã¢ã¯ã»ã¹ããã³ã¼ããå°ãªããã°å°ãªãã»ã©ããã¹ã¦ã®ã³ã¼ããæ£ããåæåããã¦ããç¶æ ã確ç«ãããããªãã夿°ãã¢ã¯ã»ã¹ãããæ¡ä»¶ã夿ããã®ã容æã«ãªãã¾ããJava è¨èªã¯ã¹ãã¼ãã®ã«ãã»ã«åãããã°ã©ãã«å¼·å¶ãã¾ããã
ã»ã»ã»
æ½è±¡å*1ãã«ãã»ã«åã¨å®è¡æ§è½ã両ç«ããªãã¨ããããã¾ãã
ã»ã»ã»第 2 章 スレッドセーフ (P.18-19)
- *1
- æ½è±¡å (abstraction)ãã¹ãã¼ãã大ããªã¯ã©ã¹ã®è£¸ã®ãã£ã¼ã«ãã«ããã®ã§ã¯ãªããç¹å®ã®ã¯ã©ã¹ã¨ãã®ãªãã¸ã§ã¯ãã§è¡¨ç¾ããå¿ è¦ãªã¤ã³ã¿ãã§ã¤ã¹ã ãã public ã¡ã½ããã§æä¾ãããä¾ï¼1 ãè¶³ãã¨ããæä½ã ãå¿ è¦ãªããä¸è¬ç㪠add() ã¡ã½ããã¯æä¾ãã¹ãã§ãªããpublic ã¡ã½ããã¯å¿ è¦ãªã synchronized ã¡ã½ããã«ãããã«ãã»ã«å (ï¼ãªãã¸ã§ã¯ãå) ã¨ã»ã¼åæç¾©ã ããã¨ãã«ãã¼ã¿ãç©ççã§ä½ã¬ãã«ã®æ©è½ã表ããªãã¸ã§ã¯ãã«é¢ãã¦ä½¿ãããã¨ãã°ã½ã±ãã㯠TCP/IP éä¿¡æ©è½ã®ãé«ç´ã§ä½¿ãããããªãã¸ã§ã¯ãã¸ã®æ½è±¡åã ã
ãªãã¸ã§ã¯ãã®å é¨çãªã¹ãã¼ã夿°ãå ¬éããã¨ã«ãã»ã«åã«éåããä¸å¤é ã®ä¿å ¨ãå°é£ã«ãªãã¾ãã
3-2 公開と逸出 (P.46)
ã¹ãã¼ãã£ã¦ã®ã¯ã¹ãã¼ããã¿ã¼ã³ãããªãã¦ããã£ã¼ã«ãã®å¤ã®ãã¨ã§ããã
ã¦ãã¨ã¯ã«ãã»ã«åã¨ãã¼ã¿é è½ã¯åããã®ãã£ã¦ãã¨ããªã
ãã ãæ½è±¡åã¨ã«ãã»ã«åã¨ãªãã¸ã§ã¯ãå (ã¤ã³ã¹ã¿ã³ã¹åã¨ã¯å¤åå¥ç©ãã¯ã©ã¹åã£ã¦ãã¨ï¼) ãã»ã¼åæç¾©ã£ã¦ã®ã¯ã¡ãã£ã¨å¼ã£ãããã
C++ããã°ã©ãã³ã°ã®å¦æ¹ç®âã²ã¨å³éãã³ã¼ããæ¸ãããã®99ã®éå (Programmerâs foundations)
Command ãã¿ã¼ã³ã¯å¦çããªãã¸ã§ã¯ãã¨ãã¦ã«ãã»ã«åããããããªãã¸ã§ã¯ããå©ç¨ããå©ç¹ãæå¹ã«æ´»ç¨ã§ãã¾ãã
鉄則 92 コード再利用のための public 継承
ããã ãã§ã¯å¤æã§ããªããã©ãã«ãã»ã«åããã£ã¼ã«ãã®é è½ã¨åããããªããã£ã¦ãã¨ã¯ãããã
Javaããã°ã©ãã³ã°ã®å¦æ¹ç® (Programmerâs foundations)
ãªãã¸ã§ã¯ãæåã®ç¹å¾´ã® 1 ã¤ãã«ãã»ã«åã§ããã«ãã»ã«åã«ãã£ã¦ããªãã¸ã§ã¯ãã®ãã£ã¼ã«ãã¸ã¢ã¯ã»ã¹ããéã«ã¯æå®ã®æç¶ããè¸ã¾ãªããã°ãªããªãããã«ãããã¨ãã§ãã¾ãã
鉄則 45 カプセル化
ã»ã»ã»
ã«ãã»ã«åã®å¤§ããªç®çã® 1 ã¤ã¯ãä¸å¤å¼ãç ´ãããªãããã«ãªãã¸ã§ã¯ããå®ããã¨ã§ãã
æå®ã®æç¶ããè¸ãã°ãªãã¸ã§ã¯ãã®ãã£ã¼ã«ãã«ã¢ã¯ã»ã¹ã§ããã»ã»ã»ï¼
ã½ããã¦ã§ã¢å·¥å¦âããã»ã¹ã»éçºæ¹æ³è«ã»UML (Information Science&Engineering)
ãã®ããã«æ½è±¡ãã¼ã¿åã«å¯¾ãã¦æ å ±ãæä½ãå¶éãããã¨ãæ å ±é è½ã¨å¼ã¶.
4.2.2 情報隠蔽
ã»ã»ã»
å ¨ã¦ã®æ½è±¡ãã¼ã¿åãã¯ã©ã¹ã¨ã, æ å ±é è½ãè¡ããã¨ã§, å ã®ãããªããã°ã©ã ã®ä½æãç¦æ¢ãããã¨ãå¯è½ã«ãªã.
ãã®æ¬ã¯ããããã¨é§ç®ãªæ¬ãªã®ã§åèç¨åº¦ã«ã
人æã®ç¥è©±âç¼äººéãæã¤éã®å¼¾ã¯ãªã (Professional computing series (å¥å·»3))
äºçªç®ã®è¦æ¹ã¯ãã«ãã»ã«åã強調ãããã®ã ãããã¯ãé¨åã®å 鍿§é ã¯è¦ããã¨ãã¾ãã¦ããã¶ã¤ã³ãããã¨ãã§ããªããã¨ãæå³ããã
オブジェクト指向プログラミング―真鍮の弾丸は使えるのか? (P.207)
ãã«ãã¹ã®ã¢ã¸ã¥ã¼ã«ã«é¢ããæ å ±é è½ã®å®ç¾©ã¯ãé常ã«éè¦ãªç ç©¶è¨ç»ã®ç¬¬ä¸çºè¡¨æ®µéã«ãããããªãã¸ã§ã¯ãæåããã°ã©ãã³ã°ã®ç¥çå ç¥ãªã®ã ãå½¼ã¯ãã¢ã¸ã¥ã¼ã«ãç¬èªã®ãã¼ã¿ã¢ãã«ããã³æ¼ç®ä¸å¼ãåããã½ããã¦ã§ã¢å®ä½ã¨å®ç¾©ããããã¼ã¿ã¯é©åãªæä½ãä»ãã¦ã®ã¿ã¢ã¯ã»ã¹ã§ããã
情報隠蔽に関して、パルナスは正しく、私は誤っていた (P.264)
ã»ã»ã»
ã ãå®ã¯ããªãã¸ã§ã¯ãæåããã°ã©ãã³ã°ã§å®ç¾ããã£ã¨ãæå¾ ããã¦ããã®ã¯ãç¬¬ä¸æ®µéã«ç±æ¥ãããã®ã ãããªãã¡ãã¢ã¸ã¥ã¼ã«ã®ã«ãã»ã«å (é è½) ã¨ãããã«å ãã¦ãåå©ç¨ã®ããã«ãã¶ã¤ã³ããããã¹ãæ¸ã¿ã®äºå使ã®ã¢ã¸ã¥ã¼ã«ã©ã¤ãã©ãªã¾ãã¯ã¯ã©ã¹ã«é¢ããã¢ã¤ãã£ã¢ã§ããã
æ å ±é è½ã¨ã«ãã»ã«åã¯åããã®ã¨ãã¦ãããã ãã©ããã®æå³ããã¨ããã¯ã¡ãã£ã¨èªã¿åããªãã
ãã«ããã©ãã¤ã ãã¶ã¤ã³
ã¯ã©ã¹ã¤ã³ã¿ãã§ã¼ã¹ã®èå¾ã«å®è£ ã®ç´°é¨ãé è½ãããã¨ã¯, ãªãã¸ã§ã¯ããã©ãã¤ã ã®è§¦ãè¾¼ã¿æå¥ã® 1 ã¤ã§ãã. ããããã®ã¢ã¤ãã£ã¢ã¯, ãã¡ãã, ãªãã¸ã§ã¯ãã¨å ±ã«ç»å ´ããæ°ããæ¦å¿µã§ã¯ãªã. ã¢ã¸ã¥ã¼ã«è¨è¨ã謳ãå§ããããé ã«ç»å ´ãã¦ããåçã§ãã. ã¨ã³ãã¦ã¼ã¶ã¯ãã¸ãã¹ãã¡ã¤ã³ã®ããªã·ã¼ã«å¯¾å¿ããè¨è¨é¨åã ããæä½ã§ããã®ãæã¾ãã. ããã Parnas ã®èª¬ããæ å ±é è½ã®ç²¾ç¥ã§ãã.
1.9.1 ポリシーとメカニズム (P.27)
ããã°ã©ãã³ã°è¨èªã®è¦ç¹ããè¦ãã¨, ãªãã¸ã§ã¯ãæåããã°ã©ãã³ã°ã¯ã¢ã¸ã¥ã¼ã«ããã°ã©ãã³ã° (ã«ãã»ã«å, encapsulation) + ã¤ã³ã¹ã¿ã³ã¹å (instantiation, 1 ã¤ã®ã¢ã¸ã¥ã¼ã«ã«å¯¾ãã¦è¤æ°ã®ã¤ã³ã¹ã¿ã³ã¹ãçæã§ããè½å) + ç¶æ¿ã¨ããªã¢ã¼ãã£ãºã ã§ãã.
5.1.3 仮想関数 (P.114)
private ç¶æ¿ã®ã»ãã³ãã£ã¯ã¹ã IS-A ã§ã¯ãªã HAS-A ã§ããã¨ããçç±ãã, ã»ã¨ãã©ã®ããã°ã©ã (ç¹ã«ç´ç²ä¸»ç¾©è ) ã¯, private ç¶æ¿ã®ä»£ããã«, æç¤ºçã«ã«ãã»ã«å (encapsulation) ã使ããã¨ã好ã (å³ 6.5).
6.7.1 2 つのドメインを整合させる (P.132)
å§è²ãã«ãã»ã«åã¨ãã¦ãããã¨ãããã«ãã»ã«åã¯ãã£ã¼ã«ãã®é è½ã ããæããã®ãããªãã¨ãã¦ããã£ã¦ãã¨ã§ããã®ããªã
Effective C++ åè第3ç (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)
ã«ãã»ã«åã®å©ç¹ã¯ãã¡ãã£ã¨èãã以ä¸ã«éè¦ã§ãããã¼ã¿ã¡ã³ããã¯ã©ã¹ã®ã¯ã©ã¤ã¢ã³ãããé ã㦠(ã¤ã¾ããã«ãã»ã«å)ãã¡ã³ã颿°ã®ã¿ããã®ãã¼ã¿ã«ã¢ã¯ã»ã¹ã§ããããã«ãã¦ããã°ã常ã«ã¯ã©ã¹ã®ä¸å¤ãªæ¡ä»¶ãæãç«ã¤ããã«ãã¦ããã¾ãã
22 項 データメンバは private 宣言しよう (P.98-99)
ã»ã»ã»
public ã«ããã¨ãããã¨ã¯ãã«ãã»ã«åããªãã¨ãããã¨ã§ãã
ã»ã»ã»
ã«ãã»ã«åã®è¦³ç¹ããè¨ãã°ãäºå®ä¸ã2 ã¤ã®ã¢ã¯ã»ã¹ã¬ãã«ãããªãã®ã§ãã(ã«ãã»ã«åã«ãªã) private 㨠(ã«ãã»ã«åã«ãªããªã)ããã®ä»ãã§ãã
ä½ããã«ãã»ã«åããã¦ããã¨ãããã¨ã¯ããããè¦ããªãã¨ããã«é ããã¦ããã¨ãããã¨ã§ããè¦ãããã®ãå°ãªãã»ã©ããããããªå¤æ´ãå¯è½ã«ãªããæè»æ§ãå¢ãã¾ãã夿´ã®å½±é¿ãåããã®ã¯ããã®å¤æ´ãè¦ãããã®ã ãã ããã§ããã¤ã¾ããã«ãã»ã«åããã»ã©ã夿´ããè½åãå¢ãããã§ãã
23 項 メンバ関数より、メンバでも friend でもない関数を使おう (P.101)
ãã£ã¼ã«ãã®é è½ãã«ãã»ã«åãæå³ããã£ã¦ãã¨ã§ããã
ãã ä¸ã§ãä½ãããã¨ãã表ç¾ãããã®ã§ãä¸ã¯ã«ãã»ã«åã®ä¸ã§ããã¼ã¿ã®ãã«ãã»ã«åãåã«ã«ãã»ã«åã¨å¼ãã§ããå¯è½æ§ã¯æ¨ã¦ãããªãã
ã«ãã»ã«åãæ å ±é è½ããã¼ã¿é è½ã¨ããè¨èã使ããã¦ããã§ä½¿ããã¦ããªãã£ãæ¬
æ¢ãæ¹ãè¶³ããªãã®ãããããªããã©ã
å¢è£æ¹è¨çJavaè¨èªã§å¦ã¶ãã¶ã¤ã³ãã¿ã¼ã³å
¥é
å¢è£æ¹è¨ç Javaè¨èªã§å¦ã¶ãã¶ã¤ã³ãã¿ã¼ã³å
¥é ãã«ãã¹ã¬ããç·¨
Smalltalkã§å¦ã¶ãªãã¸ã§ã¯ãæåããã°ã©ãã³ã°ã®æ¬è³ª
εÏιÏÏημηã®ãªãã¸ã§ã¯ãæåçæ¥å¸¸âC++,Java,STLâ¦ãªãã¸ã§ã¯ãæåããããã話ãããã (DeV Selectionã·ãªã¼ãº)
ã¨ã³ã¿ã¼ãã©ã¤ãº ã¢ããªã±ã¼ã·ã§ã³ã¢ã¼ããã¯ãã£ãã¿ã¼ã³ (Object Oriented Selection)
ããã«ãã¦ãé·ãã»ã»ã»
ããã¦ç ãã»ã»ã»
*1:屿åã®ãã¨ã¨æããã