»õ·Î¿î ±â´ÉÀ¸·Î dzºÎÇØÁø C++·Î ´Ù½Ã ¹è¿î´Ù
C++´Â C++11/14/17À» °ÅÄ¡¸é¼ °·ÂÇÑ ¾ð¾î·Î ¹ßÀüÇßÀ¸¸ç, Ç¥Çö·ÂÀÌ Ç³ºÎÇØÁ³´Ù. GoFÀÇ ÀüÅëÀûÀÎ µðÀÚÀÎ ÆÐÅÏÀ» Ç¥Çö·ÂÀÌ Ç³ºÎÇØÁø ¸ð´ø C++·Î »õ·Ó°Ô ÇнÀÇÑ´Ù. ¶ÇÇÑ, ¸ð´ø C++À» µðÀÚÀÎ ÆÐÅÏ¿¡ È°¿ëÇÏ´Â ¹æ¹ýÀ» ÅëÇØ ¸ð´ø C++À» ÀÀ¿ëÇÏ´Â ¹æ¹ýµµ ÇнÀÇÒ ¼ö ÀÖ´Ù.
°´Ã¼ ÁöÇâ ¼ÒÇÁÆ®¿þ¾î µðÀÚÀÎÀ» ÇнÀÇÑ´Ù
GoFÀÇ µðÀÚÀÎ ÆÐÅÏÀº ±âº»! °´Ã¼ ÁöÇâ ¼ÒÇÁÆ®¿þ¾îÀÇ µðÀÚÀÎ ¿øÄ¢Àº SOLID ¿øÄ¢, CRTP ÆÐÅÏ, Mixin »ó¼Ó, ¸ð³ªµå ÆÐÅÏÀ» ÇнÀÇÏ¸é¼ °´Ã¼ ÁöÇâ ¼ÒÇÁÆ®¿þ¾î µðÀÚÀÎÀÇ ±âº»À» ÇнÀÇÑ´Ù.
Á¡ÁøÀûÀÎ ¼³°è·Î ÆÐÅÏÀÇ Àå´ÜÁ¡À» »ìÇÉ´Ù
ÆÐÅÏÀÇ ±¸ÇöÀ» ´Ü¼øÈ÷ ³ª¿ÇÏÁö ¾Ê¾Ò´Ù. °¢ ÆÐÅÏÀ» °£´ÜÇÏ°Ô ±¸ÇöÇغ¸°í ±â¼úÀû º¹Àâµµ¿¡ µû¶ó ÆÐÅÏÀ» ¹ßÀü½ÃÄÑ°¡¸é¼ °¢ º¹Àâµµ ´Ü°è¿¡ µû¶ó ¹ß»ýÇÏ´Â Àå´ÜÁ¡À» ¸é¹ÐÇÏ°Ô ¼³¸íÇß´Ù.
±ÝÀ¶ ºÐ¼®°¡(ÄöÆ®), ¼ÒÇÁÆ®¿þ¾î °³¹ßÀÚ, ±³À°/Àú¼ú°¡, ÄÜÆÛ·±½º ¿¬»çÀÌ´Ù. ¼ÒÇÁÆ®¿þ¾î °³¹ß°ú ´õºÒ¾î °è»ê, ±ÝÀ¶ ºÐ¼®, ¾Ë°í¸®Áò Æ®·¹À̵ùÀÇ ¸ð¹ü »ç·ÊµéÀ» ÅëÇÕÇÏ´Â µ¥ Àü¹®¼º°ú °ü½ÉÀ» °®°í ÀÖ´Ù. ±â¼úÀûÀ¸·Î´Â C# ¹× C++ ÇÁ·Î±×·¡¹Ö ¾ð¾î¿Í CUDA, FPGA µîÀ» È°¿ëÇÑ °í¼º´É ÄÄÇ»Æÿ¡ °ü½ÉÀÌ ¸¹´Ù. ±×¸®°í 2009³âºÎÅÍ C# MVP·Î ¼±Á¤µÇ¾î È°µ¿ÇÏ°í ÀÖ´Ù.
1Àå °³¿ä
__1.1 »çÀü Áö½Ä
__1.2 Áß¿äÇÑ °³³ä
__1.3 SOLID µðÀÚÀÎ ¿øÄ¢
Á¦ I ºÎ »ý¼º ÆÐÅÏ
I.1 ÇÔ¼ö¿¡¼ÀÇ °´Ã¼ ¸®ÅÏ
2Àå ºô´õ
__2.1 ½Ã³ª¸®¿À
__2.2 ´Ü¼øÇÑ ºô´õ
__2.3 È帧½Ä ºô´õ
__2.4 Àǵµ ¾Ë·ÁÁÖ±â
__2.5 ±×·çºñ-½ºÅ¸ÀÏ ºô´õ
__2.6 ÄÄÆ÷ÁöÆ® ºô´õ
__2.7 ¿ä¾à
3Àå ÆÑÅ͸®
__3.1 ½Ã³ª¸®¿À
__3.2 ÆÑÅ͸® ¸Þ¼µå
__3.3 ÆÑÅ͸®
__3.4 ³»ºÎ ÆÑÅ͸®
__3.5 Ãß»ó ÆÑÅ͸®
__3.6 ÇÔ¼öÇü ÆÑÅ͸®
__3.7 ¿ä¾à
4Àå ÇÁ·ÎÅäŸÀÔ
__4.1 °´Ã¼ »ý¼º
__4.2 Æò¹üÇÑ Áߺ¹ ó¸®
__4.3 º¹Á¦ »ý¼ºÀÚ¸¦ ÅëÇÑ Áߺ¹ ó¸®
__4.4 Á÷·ÄÈ(Serialization)
__4.5 ÇÁ·ÎÅäŸÀÔ ÆÑÅ͸®
__4.6 ¿ä¾à
5Àå ½Ì±ÛÅÏ(Singleton)
__5.1 Àü¿ª °´Ã¼·Î¼ÀÇ ½Ì±ÛÅÏ
__5.2 ÀüÅëÀûÀÎ ±¸Çö
__5.2.1 ¸ÖƼ½º·¹µå ¾ÈÁ¤¼º
__5.3 ½Ì±ÛÅÏÀÇ ¹®Á¦
__5.4 ½Ì±ÛÅÏ°ú Á¦¾î ¿ªÀü(Inversion of Control)
__5.5 ¸ð³ë½ºÅ×ÀÌÆ®(Monostate)
__5.6 ¿ä¾à
Á¦ II ºÎ ±¸Á¶ ÆÐÅÏ
6Àå ¾î´ðÅÍ
__6.1 ½Ã³ª¸®¿À
__6.2 ¾î´ðÅÍ
__6.3 ÀϽÃÀû ¾î´ðÅÍ
__6.4 ¿ä¾à
7Àå ºê¸´Áö
__7.1 Pimpl °ü·Ê
__7.2 ºê¸´Áö
__7.3 ¿ä¾à
8Àå ÄÄÆ÷ÁöÆ®
__8.1 ¹è¿¿¡ ±â¹ÝÇÑ ¼Ó¼º
__8.2 ±×·¡ÇÈ °´Ã¼ÀÇ ±×·çÇÎ
__8.3 ´º·² ³×Æ®¿öÅ©
__8.4 ¿ä¾à
9Àå µ¥Ä¿·¹ÀÌÅÍ
__9.1 ½Ã³ª¸®¿À
__9.2 µ¿Àû µ¥Ä¿·¹ÀÌÅÍ
__9.3 Á¤Àû µ¥Ä¿·¹ÀÌÅÍ
__9.4 ÇÔ¼öÇü µ¥Ä¿·¹ÀÌÅÍ
__9.5 ¿ä¾à
10Àå ÆÛ»çµå( )
__10.1 Å͹̳ÎÀº ¾î¶»°Ô µ¿ÀÛÇÒ±î?
__10.2 °í±Þ Å͹̳Î
__10.3 ÆÛ»çµå´Â ¾îµð¿¡ Àִ°¡?
__10.4 ¿ä¾à
11Àå ÇöóÀÌ¿þÀÌÆ®(Flyweight)
__11.1 »ç¿ëÀÚ À̸§
__11.2 Boost.Flyweight
__11.3 ¹®ÀÚ¿ ¹üÀ§
__11.4 ¼²ºÎ¸¥ Á¢±Ù ¹æ¹ý
__11.5 ÇöóÀÌ¿þÀÌÆ®ÀÇ ±¸Çö
__11.6 ¿ä¾à
12Àå ÇÁ·Ï½Ã(Proxy)
__12.1 ½º¸¶Æ® Æ÷ÀÎÅÍ
__12.2 ¼Ó¼º ÇÁ·Ï½Ã
__12.3 °¡»ó ÇÁ·Ï½Ã
__12.4 Ä¿¹Â´ÏÄÉÀÌ¼Ç ÇÁ·Ï½Ã
__12.5 ¿ä¾à
Á¦ III ºÎ ÇàÅ ÆÐÅÏ
13Àå Ã¥ÀÓ »ç½½(Chain of Responsibility)
__13.1 ½Ã³ª¸®¿À
__13.2 Æ÷ÀÎÅÍ »ç½½
__13.3 ºê·ÎÄ¿ »ç½½
__13.4 ¿ä¾à
14Àå Ä¿¸Çµå
__14.1 ½Ã³ª¸®¿À
__14.2 Ä¿¸Çµå ÆÐÅÏÀÇ ±¸Çö
__14.3 µÇµ¹¸®±â(Undo) ÀÛ¾÷
__14.4 ÄÄÆ÷ÁöÆ® Ä¿¸Çµå
__14.5 ¸í·É°ú Á¶È¸ÀÇ ºÐ¸®
__14.6 ¿ä¾à
15Àå ÀÎÅÍÇÁ¸®ÅÍ
__15.1 »ê¼ú Ç¥Çö½ÄÀÇ °è»ê
__15.2 Boost.SpiritÀ» ÀÌ¿ëÇÑ ÆĽÌ
__15.3 ¿ä¾à
16Àå ¹Ýº¹ÀÚ(Iterator)
__16.1 Ç¥ÁØ ¶óÀ̺귯¸®ÀÇ ¹Ýº¹ÀÚ
__16.2 ÀÌÁø Æ®¸®ÀÇ Å½»ö
__16.3 ÄÚ·çƾ(Coroutine)À» ÀÌ¿ëÇÑ ¼øȸ
__16.4 ¿ä¾à
17Àå ¸Å°³ÀÚ(Mediator)
__17.1 äÆà ·ë
__17.2 ¸Å°³ÀÚ¿Í À̺¥Æ®
__17.3 ¿ä¾à
18Àå ¸Þ¸àÅä(Memento)
__18.1 ÀºÇà °èÁÂ
__18.2 Undo¿Í Redo
__18.3 ¿ä¾à
19Àå Null °´Ã¼
__19.1 ½Ã³ª¸®¿À
__19.2 Null °´Ã¼
__19.3 shared_ptr´Â Null °´Ã¼°¡ ¾Æ´Ï´Ù
__19.4 °³¼±µÈ µðÀÚÀÎ
__19.5 ¹¬½ÃÀûÀÎ Null °´Ã¼
__19.6 ¿ä¾à
20Àå °üÂûÀÚ(Observer)
__20.1 ¼Ó¼º °üÂûÀÚ
__20.2 Observer
__20.3 Observable
__20.4 °üÂûÀÚ(Observer)¿Í °üÂû ´ë»ó(Observable)ÀÇ ¿¬°á
__20.5 Á¾¼Ó¼º ¹®Á¦
__20.6 ¼ö½Å ÇØÁ¦¿Í ½º·¹µå ¾ÈÁ¤¼º
__20.7 ÀçÁøÀÔ¼º(Reentrancy)
__20.8 Boost.Signals2¸¦ ÀÌ¿ëÇÑ °üÂûÀÚ
__20.9 ¿ä¾à
21Àå »óÅÂ(State)
__21.1 »óÅ ±â¹Ý »óÅ ÀüÀÌ
__21.2 ¼öÀÛ¾÷À¸·Î ¸¸µå´Â »óÅ ¸Ó½Å
__21.3 Boost.MSMÀ» ÀÌ¿ëÇÑ »óÅ ¸Ó½Å
__21.4 ¿ä¾à
22Àå Àü·«
__22.1 µ¿Àû Àü·«
__22.2 Á¤Àû Àü·«
__22.3 ¿ä¾à
23Àå ÅÛÇø´ ¸Þ¼µå
__23.1 °ÔÀÓ ½Ã¹Ä·¹À̼Ç
__23.2 ¿ä¾à
24Àå ¹æ¹®ÀÚ(Visitor)
__24.1 ħ½ÀÀû ¹æ¹®ÀÚ
__24.2 ¹ÝÃßÀû(reflective) Ãâ·Â
__24.3 µð½ºÆÐÄ¡(Dispatch)?
__24.4 ÀüÅëÀûÀÎ ¹æ¹®ÀÚ
__24.5 ºñ¼øȯ ¹æ¹®ÀÚ
__24.6 std::variant¿Í std::visit
__24.7 ¿ä¾à
Á¦ IV ºÎ ºÎ·Ï: ÇÔ¼öÇü µðÀÚÀÎ ÆÐÅÏ
25Àå ~¶ó¸é ¸ð³ªµå(Maybe Monad)