°´Ã¼ÁöÇâÀÇ °³³ä

1. °´Ã¼ÁöÇâÀÇ ±â¿ø
2. °´Ã¼ÁöÇâ µîÀåÀÇ ¹è°æ
3. °´Ã¼ÁöÇâÀÇ ¿ä¼Ò
4. °´Ã¼ÁöÇâÀÇ ¿ø¸®
5. °´Ã¼ÁöÇâ ÆÐ·¯´ÙÀÓÀÇ Àü¸Á

ÃÖ±ÙÀÇ ¼ÒÇÁÆ®¿þ¾î °³¹ß ȯ°æÀº "°´Ã¼ÁöÇâ(Object Oriented)"ÀÇ ¹Ù¶÷À» Ÿ°í ÀÖ´Ù. °´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹Ö, °´Ã¼ÁöÇ⠸𵨸µ, °´Ã¼ÁöÇâ ¹æ¹ý·Ð µî ¼ÒÇÁÆ®¿þ¾î¿Í °ü·ÃµÈ ¿©·¯ ±â¼úµéÀÌ °´Ã¼ÁöÇâ°ú À½À¸·Î ¾çÀ¸·Î °ü·ÃÀ» ¸Î°í ÀÖ´Ù. ¾ÕÀ¸·Î ¸î °³¿ù°£ °´Ã¼ÁöÇâ°ú °ü·ÃµÈ ¿©·¯ ±â¼úµéÀ» Â÷·Ê·Î ¿¬ÀçÇÔÀ¸·Î½á °´Ã¼ÁöÇâÀÇ Ã¼°è¸¦ Á¤¸®ÇØ º¸°íÀÚ ÇÑ´Ù.

¾ÕÀ¸·Î ¿¬ÀçµÇ´Â ¸ðµç ±ÛÀº ¾Æ·¡ ³ª¿­µÈ ¼­Àûµé°ú ÄÄÇ»ÅÍ ÀâÁö ¹× ÀÎÅÍ³Ý »óÀÇ ÀÚ·áµéÀ» ÀçÁ¤¸®ÇÑ °ÍÀÓÀ» ¹àÇôµÐ´Ù.

- Grady Booch, Object-Oriented Analysis And Design With Applications, Addison Wesley, 1994
- Ivar Jacobson, Object-Oriented Software Engineering, Addison Wesley, 1994
- Grady Booch, James Rumbaugh, Ivar Jacobson, The Unified Modeling Language User Guide, Addison Wesley, 1999
- James Martin, James J. Odell, Object-Oriented Methods, Prentice-Hall, 1995
- Martin Fowler, Kendall Scott, UML Distilled, Addison Wesley, 1997
- ´ë¸²Á¤º¸Åë½Å¢ß ÄÁ¼³ÆÃ¼¾ÅÍ, °´Ã¼¶õ ¹«¾ùÀΰ¡, ÀüÀڽŹ®»ç, 1997
- ¹ÚÇöö, °´Ã¼ÁöÇ⠺м®¼³°è, ºñ¾Ø¾¾, 1999
- À±Á¤¸ð, ÇѱÔÁ¤ ¿ª, °´Ã¼ÁöÇ⠽ýºÅÛ °³¹ß, µ¿ÀÏÃâÆÇ»ç, 1996


1. °´Ã¼ÁöÇâÀÇ ±â¿ø


°´Ã¼(object)ÀÇ °³³äÀÌ Ã³À½ µîÀåÇÏ´Â °ÍÀº 60³â´ë Á߹ݿ¡ ¼Ò°³µÈ Simula¶ó°íÇÏ´Â ½Ã¹Ä·¹ÀÌ¼Ç ¾ð¾î¸¦ ÅëÇØ¼­ÀÌ´Ù. ±× ÀÌÀü¿¡µµ °´Ã¼¶ó´Â ¿ë¾î´Â ÀΰøÁö´É µî ¸î¸î ºÐ¾ß¿¡¼­ °¡²û ³ªÅ¸³ª±âµµ ÇÏ¿´Áö¸¸ "ĸ½¶È­(encapsulation)", "´ÙÇü¼º(polymorphism)" µî °´Ã¼ÁöÇâÀÇ °³³äÀÌ ºñ·Î¼­ ¼Ò°³µÇ¾ú´Ù.

°´Ã¼ÁöÇâÀ̶õ ¿ë¾î°¡ Áß¿äÇÏ°Ô ÀνĵDZ⠽ÃÀÛÇÑ °ÍÀº 70³â´ë ÃÊ¹Ý XEROX»çÀÇ PARC(Palo Alto Research Center)¿¡¼­ "Dynabook" ½Ã½ºÅÛÀ» °³¹ßÇϸ鼭 ¼ÒÇÁÆ®¿þ¾î·Î SmalltalkÀ» ¸¸µé¾ú°í, ¿©±â¿¡´Â ÇöÀçÀÇ °´Ã¼ÁöÇâ °³³äÀÇ »ó´ç¼ö°¡ Æ÷ÇԵǾî ÀÖ´Ù.

80³â´ë Á߹ݿ¡ µé¾î¼­´Â °´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹ÖÀÌ »ó´çÈ÷ Ȱ¹ßÈ÷ È®»êµÇ¾ú°í C++, Objective C, Eiffel, Ada95 µî ¼ö ¸¹Àº °´Ã¼ÁöÇâ ¾ð¾îµéÀÌ ¿¬À̾î ź»ýÇÏ°Ô µÈ´Ù.

°´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹ÖÀÌ ÀϹÝÈ­µÇ¾î°¡¸é¼­ ¼³°è¿Í ºÐ¼®, ¹æ¹ý·Ð, Tool µî ¿©·¯ ¼ÒÇÁÆ®¿þ¾î °³¹ß ¿µ¿ªÀ¸·Î °´Ã¼ÁöÇâÀ» È®»êÇÏ·Á´Â ½Ãµµ°¡ 90³â´ë ÃʺÎÅÍ ÀϾÀ¸¸ç, ÀÌ¿¡ µû¸¥ ±â¼úÀÇ Ç¥ÁØÈ­µµ ÇÔ²² ÀÌ·ç¾îÁ® °¬´Ù.

ÃÖ±Ù¿¡´Â ÀÎÅͳÝÀÇ ±Þ°ÝÇÑ ½ÅÀåÀ¸·Î Java µî ºÐ»ê ÄÄÇ»ÆÃ ȯ°æ¿¡ ¸Â´Â °´Ã¼ÁöÇâ ¾ð¾î¿Í CORBA, DCOM µî ºÐ»ê °´Ã¼ ¹× »÷ÇÁ¶õ½Ã½ºÄÚ(San Fransisco) °°Àº ±â¾÷ ÇÁ·¹ÀÓ¿öÅ©ÀÇ º¸±Þ »Ó¸¸ ¾Æ´Ï¶ó ¸ÞŸ ¹æ¹ý·ÐÀ̶ó ÇÒ ¼ö ÀÖ´Â UML(Unified Modeling Language)·ÎÀÇ Ç¥ÁØÈ­ ÀÛ¾÷±îÁö Âø½ÇÀÌ ÁøÇàµÇ°í ÀÖ´Â ÁßÀÌ´Ù.

2. °´Ã¼ÁöÇâ µîÀåÀÇ ¹è°æ


°´Ã¼ÁöÇâÀÇ ÆÐ·¯´ÙÀÓ(paradigm)ÀÌ Àα⸦ ¾ò°Ô µÈ ¹è°æÀº ±× ÀüºÎÅÍ Á¸ÀçÇØ ¿À´ø °³¹ß ¹æ½Ä¿¡ ¹º°¡ ¹®Á¦°¡ ÀÖ¾ú°í À̸¦ °´Ã¼ÁöÇâ ¹æ½ÄÀÌ ÇØ°áÇØ ÁÙ ¼ö ÀÖ´Ù´Â ½Ç¸¶¸®°¡ º¸À̱⠶§¹®ÀÌ´Ù.

ÇÁ·Î±×·¡¹Ö°ú ºÐ¼®/¼³°è¸¦ ÅëÆ²¾î ¼ÒÇÁÆ®¿þ¾îÀÇ °³¹ß ¹æ½ÄÀº ±¸Á¶ÀûÀÌÁö ¸øÇÑ ¹æ½Ä¿¡¼­ ±¸Á¶ÀûÀÎ ¹æ½ÄÀ¸·Î, ±¸Á¶ÀûÀÎ ¹æ½ÄÀº ´Ù½Ã ÇÁ·Î¼¼½º¸¦ ¿ì¼±Àû ºÐ¼®ÇÏ´Â ¹æ½Ä¿¡¼­ µ¥ÀÌÅ͸¦ ¿ì¼±ÀûÀ¸·Î ºÐ¼®ÇÏ´Â ¹æ½ÄÀ¸·Î º¯ÃµÇؿԴÙ.

70³â´ë ÀÌÀü ±¸Á¶ÀûÀÌÁö ¸øÇÑ °³¹ß ¹æ½Ä¿¡¼­´Â ¹«°èȹÀûÀ¸·Î ÇÏÀ§ ÇÁ·Î±×·¥µéÀ» °³¹ßÇÏ¿© °¡¸é¼­ ÃÖÁ¾ ½Ã½ºÅÛÀ» ¸ÂÃ߾°¡´Â »óÇâ½Ä(bottom-up)À̾ú´Ù. ±×·¯´Ù º¸´Ï, ÇÁ·Î±×·¥µé°£ÀÇ ¿¬°áÀÌ ¾î·Æ°Ô µÇ°í ¸ðµâÈ­°¡ µÇÁö ¾ÊÀ¸¸ç Áߺ¹ ÄÚµùÀ¸·Î Á¶ÀâÇÑ °á°ú°¡ ³ª¿Ã ¼ö ¹Û¿¡ ¾ø¾ú´Ù.

±¸Á¶Àû °³¹ß ¹æ½Ä¿¡¼­´Â ¸ðµâÈ­¿¡ ÀÇÇÑ ÄÚµù°ú ÇÏÇâ½Ä(top-down)À¸·Î SDLC(Software Development Life Cycle)ÀÇ Àü°³¸¦ µû¸§À¸·Î½á °èȹÀûÀÌ µÇ°í ºÐÇÒ°ú Á¤º¹(devide and conquer)ÀÇ ¿øÄ¢ÀÌ ¼º¸³µÇ¾ú´Ù. Áï, ¼ÒÇÁÆ®¿þ¾î¸¦ ¸ðµâ·Î ºÐÇÒÇÑ ´ÙÀ½ °øÅë ¸ðµâ°ú ¸ðµâ°£ ÀÎÅÍÆäÀ̽º¸¦ °èȹÇÏ¿© Àüü ½Ã½ºÅÛÀ» ÅëÇÕÇÒ ¼ö ÀÖ°Ô µÈ °ÍÀÌ´Ù.

ÀÌ·¯ÇÑ ±¸Á¶ÀûÀÎ ¹æ½ÄÀº ±¸Á¶Àû ºÐ¼®°ú ¼³°è(structured analysis & design)·Î »ó¡µÇ´Â ±¸Á¶Àû ±â¹ý(structured technique)°ú ±× µÚ¿¡ ³ª¿Â Á¤º¸°øÇÐ(information engineering)À¸·Î ¹ßÀüÇÏ¿´´Ù.

À̵éÀÌ ¹Ù·Î °¢°¢ ÇÁ·Î¼¼½º ÁöÇâ ¹æ½Ä°ú µ¥ÀÌÅÍ ÁöÇâ ¹æ½ÄÀ» ´ëÇ¥ÇÏ´Â °³¹ß ¹æ½ÄÀÌ´Ù.

±¸Á¶Àû ±â¹ý¿¡¼­´Â ÇÁ·Î¼¼½ºµéÀ» ´ÜÀ§ ¸ðµâ±îÁö ºÐÇÒÇØ ³»·Á°¡¸ç °¢ ÇÁ·Î¼¼½ºµéÀÇ È帧À» ºÐ¼®ÇÏ°í ¿©±â¼­ ÇÁ·Î¼¼½º°£¿¡ Àü´ÞµÇ´Â µ¥ÀÌÅ͸¦ Ãß°¡ÀûÀ¸·Î ºÐ¼®Çس½´Ù. µ¥ÀÌÅͺ£À̽º¶ó´Â °³³äµµ ¾ø´ø ½ÃÀýÀ̹ǷΠ³í¸®ÀÇ ±¸¼ºÀÌ ¿ì¼±ÀÎ °ÍÀº ´ç¿¬ÇÒÁö ¸ð¸¥´Ù. ÀÌ ¹æ½Ä¿¡¼­´Â ÇÁ·Î¼¼½ºÀÇ ºÐÇÒ°ú È帧, µ¥ÀÌÅÍÀÇ È帧ÀÌ Ç¥ÇöµÇ´Â DFD(Data Flow Diagram)¸¦ Á᫐ ¸ðµ¨¸µ µµ±¸·Î »ï´Â´Ù.

Á¤º¸°øÇÐÀº ±¸Á¶Àû ±â¹ýÀÇ ´ëºÎºÐÀÇ ³»¿ëÀ» ¼ö¿ëÇϰí ÀÖÁö¸¸, µ¥ÀÌÅÍ ÁöÇâÀ̶ó´Â µ¥ Å« Â÷ÀÌÁ¡ÀÌ ÀÖ´Ù. ¸ÕÀú ¿£Æ¼Æ¼(entity)ÀÇ ½Äº°À» ÅëÇÏ¿© µ¥ÀÌÅÍÀÇ °ü°è¿Í ±¸Á¶¸¦ ¸íÈ®È÷ ÇÑ ´ÙÀ½ ÀÌ·¯ÇÑ µ¥ÀÌÅÍ ±¸Á¶¸¦ Áö¿øÇÏ´Â ÇÁ·Î¼¼½º¸¦ ¼³°èÇÑ´Ù. À̰ÍÀº ÄÄÇ»ÅÍ ½Ã½ºÅÛÀÇ °íÀ¯ÇÑ µ¥ÀÌÅÍ ±¸Á¶¸¦ ¾ÈÁ¤ÀûÀ¸·Î ¸¸µé¸é ¾÷¹« ÇÁ·Î¼¼½ºÀÇ º¯È­¿¡µµ ÇÁ·Î±×·¥ ¼öÁ¤À» ÁÙÀÏ ¼ö ÀÖ´Ù´Â ÀåÁ¡ÀÌ ÀÖ´Ù.

ÇÁ·Î¼¼½º ÁöÇâÀ̳ª µ¥ÀÌÅÍ ÁöÇâ ¸ðµÎ ÇÁ·Î¼¼½º¿Í µ¥ÀÌÅ͸¦ ºÐ¸®Çϴ öÇÐÀ» °¡Áö°í ÀÖ¾î, ºÐ¼® ´Ü°è¿¡¼­ ¹ß°ßÇÑ °ÍµéÀ» ¼³°è ´Ü°è¿¡¼­ ±â´ÉÀ¸·Î ±¸ÇöµÇµµ·Ï ´ÊÃß¾î ³õ´Â´Ù. µû¶ó¼­ ºÐ¼® ´Ü°èÀÇ ¸í¼¼¼­¿¡¼­ "¹«¾ù(what)"À» ÇÏ´Â °ÍÀΰ¡¸¦ Àß Á¤¸®ÇØ ³õ°íµµ ¼³°è ´Ü°è¿¡¼­ "¾î¶»°Ô(how)"ÇÏ´Â °ÍÀΰ¡·Î º¯Çü½ÃŰ´Â µ¥ ¾î·Á¿òÀ» °Þ´Â´Ù.

¶ÇÇÑ µ¥ÀÌÅÍ¿Í ÇÁ·Î¼¼½ºÀÇ ºÐ¸®´Â Àΰ£ÀÌ »ç°íÇÏ´Â ¹æ½Ä°ú´Â Â÷À̰¡ ÀÖ´Ù. Áï, Àΰ£Àº »ç¹°°ú ±× »ç¹°ÀÇ ÇàÀ§¸¦ ¹­¾î¼­ »ý°¢ÇÏÁö µû·Î ¶¼¾î °³º°ÀûÀ¸·Î »ý°¢ÇÏÁö ¾Ê´Â´Ù. µû¶ó¼­ µ¥ÀÌÅÍ¿Í ÇÁ·Î¼¼½º°¡ ºÐ¸®µÈ ±â¼úÀûÀÎ »êÃâ¹°Àº ºñÀü¹®°¡°¡ º¸¾Æ¼­ ½±°Ô ÀÌÇØÇϱâ Èûµé¸ç, ¶§¹®¿¡ °³¹ßÀÚ¿Í »ç¿ëÀÚ°£¿¡ ÀÇ»ç¼ÒÅë¿¡µµ ¾î·Á¿òÀÌ ¹ß»ýÇÑ´Ù.

°´Ã¼ÁöÇâ ±â¹ý¿¡¼­´Â ¿ä±¸¸í¼¼¼­¿¡ Á¸ÀçÇÏ´Â »ç½ÇÀ» ±×´ë·Î °´Ã¼·Î ã¾Æ ¸ðµ¨¸µÀ» ÇÑ´Ù. À̰ÍÀº °ð¹Ù·Î ¼³°è¿Í ±¸ÇöÀ¸·Î À̾îÁø´Ù. µ¥ÀÌÅÍ¿Í ÇÁ·Î¼¼½º°¡ ºÐ¸®µÇÁö ¾ÊÀ¸¹Ç·Î ÀÌµé »çÀÌÀÇ ¿¬°á°í¸®µµ ÇÊ¿ä ¾ø°í, °´Ã¼ ³»ºÎ¿¡ ¾î¶² µ¥ÀÌÅͰ¡ ÀÖ°í ¾î¶² ÇÁ·Î¼¼½º·Î ¾î¶»°Ô °¡°øÇÏ´ÂÁö ¾Ë Çʿ䵵 ¾ø´Ù. ´ÜÁö ¹«¾ùÀÌ ÇÊ¿äÇÏ¸é ´Ù¸¥ °´Ã¼¿¡ ¸Þ½ÃÁö¸¸ Àü´ÞÇÏ¸é µÈ´Ù.

ÀÌ·¯ÇÑ »ç½ÇÀº °³¹ßµµÁß¿¡ °³¹ß¹æ¹ýÀÇ ÀüÀ̰¡ ÀÌ·ç¾îÁöÁö ¾Ê°í ºÎµå·´°Ô À̾îÁö¸ç, ¸ðµ¨ÀÌ ´Ü¼øÈ­ÇØÁ® ÀÚ¿¬½º·´°Ô ¿©·¯ »ç¶÷ÀÌ °³¹ß ÀÛ¾÷¿¡ Âü¿©ÇÒ ¼ö ÀÖ´Ù´Â ÀåÁ¡ÀÌ ÀÖ´Ù.

3. °´Ã¼ÁöÇâÀÇ ¿ä¼Ò


°´Ã¼ÁöÇâÀÇ ±âº» »ç»óÀº º¹ÀâÇÑ ¸ÞÄ¿´ÏÁòÀÇ Çö½Ç ¼¼°è¸¦ Àΰ£ÀÌ ÀÌÇØÇÏ´Â ¹æ½ÄÀ¸·Î ½Ã½ºÅÛ¿¡ Àû¿ë½ÃÄѺ¸ÀÚ´Â °ÍÀÌ´Ù. À̸¦ À§ÇØ °´Ã¼ÁöÇâ ±â¼ú¿¡´Â °´Ã¼(object)¿Í °´Ã¼µéÀÇ ¹üÁÖ¸¦ ³ªÅ¸³»´Â Ŭ·¡½º(class), ±×¸®°í °´Ã¼°£ÀÇ »óÈ£ÀÛ¿ëÀ» À§ÇÑ ¸Þ½ÃÁö(message)¸¦ ±âº» ¸ðÇüÀ¸·Î Á¦½ÃÇϰí ÀÖ´Ù.

3.1 °´Ã¼

°´Ã¼(object)¶õ º¸°í ¸¸Áú ¼ö ÀÖ´Â °Í, Áö¼ºÀûÀ¸·Î ÀÌÇØÇÒ ¼ö ÀÖ´Â °Í, »ý°¢À̳ª ÇൿÀÌ Ãß±¸ÇÏ´Â ¹Ù¸¦ ¸»ÇÑ´Ù. ¶Ç´Â ¹®Á¦¿µ¿ª¿¡¼­ Àß Á¤ÀÇµÈ ¿ªÇÒÀ» °®°í ÀÖ´Â °¢°¢¿¡ ´ëÇØ¼­ ±¸º°ÇÒ ¼ö Àִ ǰ¸ñ(item), ´ÜÀ§(unit), °³Ã¼(entity)¶ó Á¤ÀÇÇϱ⵵ ÇÏ¸ç ´Ü¼øÈ÷, Á¤ÀÇµÈ °æ°è¸¦ °®°í ±¸º°µÇ´Â ¾î¶² °ÍÀÌ¶ó ¸»ÇÒ ¼öµµ ÀÖ´Ù.

´Ù½Ã ¸»Çؼ­ °´Ã¼´Â Çлý, ±³½Ç, Ã¥ °°Àº »ý°¢ÇÒ ¼ö ÀÖ´Â ¸ðµç »ç¹°À̳ª °øºÎ, ¼öÇÐ °°Àº °³³ä»óÀ¸·Î Á¸ÀçÇÏ´Â °Í µî ¸ðµç °ÍÀÌ µÉ ¼ö ÀÖ´Ù. Á» ´õ ±¸Ã¼ÀûÀ¸·Î, ¹®Á¦¿µ¿ª¿¡ ¼ÓÇÑ »ç¹° Áß¿¡ °ü¸®ÀÇ Çʿ伺ÀÌ Àְųª Áß¿äÇÑ °³³äÀ̶ó¸é ´õ ÁÁÀº °´Ã¼°¡ µÉ ¼ö ÀÖ´Ù.

½Ã½ºÅÛÀÇ °üÁ¡¿¡¼­ º»´Ù¸é ¾î¶² »óÅÂ(state)¸¦ ³ªÅ¸³»´Â µ¥ÀÌÅÍÀÇ ±¸Á¶¿Í µ¿ÀÛÀ» ¼öÇàÇÏ´Â ¿¬»ê(operation)À¸·Î ÀÌ·ç¾îÁø ÇÁ·Î±×·¥ÀÇ ÇÑ ¿ä¼ÒÀÌ´Ù. ¿©±â¼­ÀÇ ¿¬»êÀ» °´Ã¼ÁöÇâ¿¡¼± ¸Þ¼Òµå(method)¶ó°í ÇÑ´Ù. ÀÌ·¸°Ô °´Ã¼ÀÇ »óÅ´ µ¥ÀÌÅÍ¿¡ ÀÇÇØ °áÁ¤µÇ°í µ¿ÀÛÀº ¸Þ¼Òµå¿¡ ÀÇÇØ °áÁ¤µÈ´Ù. ´ÙÀ½Àº ¼ÒÇÁÆ®¿þ¾î¿¡¼­ °´Ã¼°¡ ¾î¶»°Ô ±¸¼ºµÇ°í ¿¬°üµÇ´ÂÁö º¸¿©ÁÖ´Â ±×¸²ÀÌ´Ù.



[±×¸² 1] ¼ÒÇÁÆ®¿þ¾îÀÇ °´Ã¼

3.2 ¸Þ½ÃÁö

Ȧ·Î Á¸ÀçÇÏ´Â °´Ã¼´Â ¾Æ¹«·± Àǹ̰¡ ¾ø´Ù. ´ëºÎºÐÀÇ °´Ã¼´Â ¹«¾ð°¡¸¦ ½ÇÇàÇϱâ À§Çؼ­ ´Ù¸¥ °´Ã¼¸¦ ÇÊ¿ä·Î ÇÑ´Ù. ¿¹¸¦ µé¾î, ¼±»ý´ÔÀº Çлý°úÀÇ °ü°è¿¡¼­ Á¸ÀçÀÇ Àǹ̰¡ ÀÖ°í ¼ö¾÷À» ÇÏ°í Æò°¡¸¦ ÇÏ´Â µîÀÇ »óÈ£ÀÛ¿ëÀ» ÀÏÀ¸Å²´Ù. ÀÌ·¯ÇÑ »óÈ£ÀÛ¿ëÀº ¸Þ½ÃÁö(message)¸¦ ÅëÇØ¼­ ÀÌ·ç¾îÁø´Ù.

¸Þ½ÃÁö´Â ¼¼ºÎºÐ, Áï ¸Þ½ÃÁö¸¦ ¹Þ´Â ¼ö½ÅÀÚ °´Ã¼(receiver)ÀÇ À̸§°ú ¼ö½ÅÀÚ°¡ ¼öÇàÇÒ ¸Þ¼Òµå(method)ÀÇ À̸§, ¸Þ¼Òµå ¼öÇà½Ã Àü´ÞµÇ´Â ÀÎÀÚ(argument)·Î ±¸¼ºµÈ´Ù. °´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹Ö¿¡¼­ ¾²´Â ¿ë¾îÀÎ ¸Þ¼Òµå(method)´Â ¸Þ½ÃÁö¿Í µ¿ÀǾîÀ̸ç ÀϹÝÀûÀ¸·Î ÇÔ¼ö(function)¿Íµµ °°Àº °³³äÀÌ´Ù.

¿¹¸¦ µé¾î myCustomer¶ó´Â °´Ã¼¿¡°Ô ¸Þ½ÃÁö¸¦ º¸³»´Â Java ¹®Àå¿¡¼­,

myCustomer.addToOrder(itemNumber, price, quantity);

¼ö½ÅÀÚ´Â myCustomer, ¸Þ¼Òµå´Â addToOrder, ÀÎÀÚ´Â itemNumber, price, quantityÀÇ 3°³°¡ µÈ´Ù.

3.3 Ŭ·¡½º

¸ðµç °´Ã¼´Â ¹Ýµå½Ã Ŭ·¡½º¸¦ ÅëÇØ¼­¸¸ Á¤ÀÇµÉ ¼ö ÀÖ´Ù. Ŭ·¡½º´Â °´Ã¼ÀÇ Å¸ÀÔÀ» Á¤ÀÇÇÏ´Â ÅÛÇø´(template)À¸·Î¼­, ¿©·¯ °´Ã¼ÀÇ °øÅëÀûÀÎ ¼Ó¼º(attribute)°ú ¸Þ¼Òµå(method)¸¦ °¡Áö°í Àִ Ŭ·¡½º°¡ ¸ÕÀú Á¤ÀǵǸé, ÀÌ Å¬·¡½º¸¦ ÅëÇØ¼­ ´Ù½Ã °´Ã¼°¡ Á¤ÀǵǴ °ÍÀÌ´Ù.

À̸¦ Å׸é ȸ»ç¶ó´Â Á¶Á÷¿¡´Â ¸¹Àº »ç¿øµéÀÌ ÀÖ°í, À̵é Áß¿¡´Â À̰úÀåµµ ÀÖ°í ±è´ë¸®µµ ÀÖ´Ù°í ÇÏÀÚ.

À̵éÀ» ½Ã½ºÅÛÀ¸·Î Ç¥ÇöÇÏ·Á¸é ¸¹Àº °øÅëÀûÀÎ ¿ä¼Ò, Áï ¼Ó¼ºµéÀÌ Àִµ¥, ¼º¸í, »ç¹ø, ºÎ¼­, ±ÞÈ£ µîÀÌ ±×°ÍÀÌ´Ù. ±Þ¿©°è»êÀ̳ª ¾÷¹«Ã³¸®´Â ¸Þ¼Òµå°¡ µÉ °ÍÀÌ´Ù. ÀÌ·¯ÇÑ ¼Ó¼º°ú ¸Þ¼Òµå¸¦ °¡Áö´Â »ç¿øÀº Ŭ·¡½º°¡ µÇ°í À̸¦ ÅëÇØ À̰úÀå, ±è´ë¸® µîÀÇ °´Ã¼°¡ ¸¸µé¾îÁø´Ù.

ÀÌ·¸°Ô ÇÑ Å¬·¡½º¿¡ ¼ÓÇÏ´Â °¢°¢ÀÇ °´Ã¼¸¦ ±× Ŭ·¡½ºÀÇ ÀνºÅϽº(instance)¶ó°í Çϰí, °´Ã¼µéÀÇ À¯ÇüÀÌ µÇ´Â Ŭ·¡½º¸¦ °´Ã¼ÀÇ Å¸ÀÔ(object type)À̶ó°í ÇÑ´Ù.

4. °´Ã¼ÁöÇâÀÇ ¿ø¸®


°´Ã¼, ¸Þ½ÃÁö, Ŭ·¡½º°¡ °´Ã¼ÁöÇâÀÇ Çٽɿä¼ÒÀ̰í ÀÌ·¯ÇÑ ¿ä¼Ò¸¦ ÀÌ¿ëÇÏ¿© °´Ã¼ÁöÇâÀÇ ¿ø¸®¸¦ ÀÌ·ç¾î³»´Â ¿ä¼Ò°¡ ÀÖ´Ù¸é Ãß»óÈ­, ĸ½¶È­, »ó¼Ó¼ºÀ» µé ¼ö ÀÖ´Ù.

4.1 Ãß»óÈ­

Çö½Ç¼¼°èÀÇ »ç½ÇÀ» ±×´ë·Î °´Ã¼·Î Ç¥ÇöÇϱ⠺¸´Ù´Â ¹®Á¦ÀÇ Áß¿äÇÑ Ãø¸éÀ» ÁÖ¸ñÇÏ¿© »ó¼¼³»¿ªÀ» ¾ø¾Ö³ª°¡´Â °úÁ¤À» Ãß»óÈ­(abstraction)¶ó ÇÑ´Ù. °´Ã¼ÁöÇâ¿¡¼­´Â Ŭ·¡½º¸¦ ÅëÇØ¼­ Ãß»óÈ­¸¦ Áö¿øÇϰí ÀÖÀ¸¸ç, À̰ÍÀº ´Ù¸¥ ÀüÅëÀû ÇÁ·Î±×·¡¹Öº¸´Ù °­·ÂÇÑ Ãß»óÈ­ÀÇ ¹æ¹ýÀÌ´Ù.

Ãß»óÈ­ÀÇ °¡Àå ±âº»ÀûÀÎ ÇüÅ´ "ÇÁ·Î¼¼½º Ãß»óÈ­(process abstraction)"ÀÌ´Ù. ÇÁ·Î±×·¥¿¡¼­ ÀÚÁÖ ³ª¿À´Â »ó¼¼ÇÑ ºÎºÐÀ» ÇÔ¼ö·Î ¹­¾î È£ÃâÇÏ°Ô ÇÔÀ¸·Î½á ÀÌÇØÇϱ⠽±°í °£´ÜÇÑ ¸ð¾çÀ¸·Î ¸¸µé¾î ÁØ´Ù.

´ÙÀ½ÀÇ Java ±¸¹®¿¡¼­

public static void printMessage() {
System.out.println("Hellow, World!");
}


System.out.println("Hellow, World!"); ÀÇ °æ¿ì´Â ÇÔ¼ö·Î Ãß»óÈ­µÈ °¡Àå ±âº»ÀûÀÎ ¿¹ÀÌ´Ù. printlnÀ̶ó´Â ÇÔ¼ö(¸Þ¼Òµå)´Â ¹®ÀÚ¿­ÀÇ ³¡¿¡ \nÀ» ³Ö¾î Ãâ·ÂÇÏ´Â µ¿ÀÛÀ» ¼öÇàÇÏÁö¸¸, °³¹ßÀÚ´Â ³»ºÎÀûÀ¸·Î ±×°ÍÀÌ ¾î¶»°Ô ÀÛµ¿µÇ´Â °ÍÀÎÁö »ó¼¼ ³»¿ªÀ» ¾Ë ÇÊ¿ä¾ø°í ´ÜÁö println¿¡ Ãâ·ÂÇϰíÀÚ ÇÏ´Â ¹®ÀÚ¿­À» °ýÈ£¾È¿¡ ³Ö¾îÁÖ¸é ±×¸¸ÀÌ´Ù.

Ãß»óÈ­ÀÇ ¶Ç´Ù¸¥ ÃàÀº "µ¥ÀÌÅÍ Ãß»óÈ­(data abstraction)"Àε¥, µ¥ÀÌÅÍ Ãß»óÈ­ÀÇ °¡Àå ±âº»ÀûÀÎ ÇüÅ´ integer, real, date °°Àº µ¥ÀÌÅÍ Å¸ÀÔÀÌ´Ù. °³¹ßÀÚ´Â Á¤¼ö ¿¬»êÀÇ °ªÀÇ ¹üÀ§³ª Áø¹ý, º¸¼ö ÇüÅÂÀÇ Ä¡È¯ µîÀ» ÀÏÀÏÀÌ ÇÁ·Î±×·¥ÇØ ³ÖÀ» ÇÊ¿ä¾øÀÌ ±×Àú ¼±¾ð¸¸ ÇØÁÖ¸é µÈ´Ù. ¶ÇÇÑ C¿¡¼­´Â typedef struct °°Àº Ãß»ó µ¥ÀÌÅÍ Å¸ÀÔ, »ç¿ëÀÚ Á¤ÀÇ µ¥ÀÌÅÍ Å¸ÀÔÀ» ÅëÇØ µ¥ÀÌÅÍ ±¸Á¶¸¦ ¿øÇÏ´Â µ¥·Î Ãß»óÈ­ÇÏ¿© ¾µ ¼ö ÀÖ´Ù.

±×·¯³ª ÀÌ·¸°Ô ÀüÅëÀû ¾ð¾î¿¡¼­ÀÇ Ãß»óÈ­ ¹æ½ÄÀº µ¥ÀÌÅÍ¿Í ÇÁ·Î¼¼½º¸¦ º°µµ·Î Ãß»óÈ­ÇÔÀ¸·Î½á Ãß°¡ÀûÀÎ ÀÛ¾÷ÀÇ °¡´É¼ºÀÌ ¸¹°í ³»ºÎ ¸ÞÄ¿´ÏÁòÀÌ Ã¶ÀúÇÏ°Ô ¼û°ÜÁöÁö ¸øÇÏ¿© ÁøÁ¤ÇÑ Ãß»óÈ­¶ó°í º¼ ¼ö ¾ø´Ù.

°´Ã¼ÁöÇâ ¾ð¾î¿¡¼­´Â Ŭ·¡½º¸¦ ÀÌ¿ëÇÔÀ¸·Î½á µ¥ÀÌÅÍ¿Í ÇÁ·Î¼¼½º¸¦ ÇÔ²² Ãß»óÈ­ÀÇ ±¸Á¶¿¡ ³Ö¾î º¸´Ù ¿Ïº®ÇÑ Ãß»óÈ­¸¦ ½ÇÇöÇÑ´Ù.

4.2 ĸ½¶È­

°´Ã¼ÀÇ »ó¼¼ÇÑ ³»¿ëÀ» °´Ã¼ ¿ÜºÎ¿¡ öÀúÈ÷ ¼û±â°í ´Ü¼øÈ÷ ¸Þ½ÃÁö¸¸À¸·Î °´Ã¼¿ÍÀÇ »óÈ£ÀÛ¿ëÀ» ÇÏ°Ô ÇÏ´Â °ÍÀ» ĸ½¶È­(encapsulation)¶ó°í ÇÏ°í ´Ù¸¥ ¸»·Î Á¤º¸ Àº´Ð(information hiding)À̶ó°í ÇÑ´Ù. Áï, ĸ½¶È­´Â Ãß»óÈ­¿Í °ÅÀÇ °°Àº °³³äÀÌÁö¸¸ Ãß»óÈ­¸¦ Áö¿øÇÏ¸ç º¸´Ù ±¸Ã¼ÀûÀ̰í Á¦ÇÑÀûÀÌ´Ù.

¿¹¸¦ µé¸é, Ŭ·¡½º¸¦ ¼±¾ðÇÏ°í ±× Å¬·¡½º¸¦ ±¸¼ºÇÏ´Â °´Ã¼¿¡ ´ëÇÏ¿© "public" ¶Ç´Â "private" µîÀ¸·Î Á¤ÀÇÇØÁØ´Ù. ÀÌ·¸°Ô µÇ¸é "public"À¸·Î Á¤ÀÇµÈ ÇÔ¼ö ¶Ç´Â µ¥ÀÌÅÍ´Â ¿ÜºÎ¿¡¼­ »ç¿ëÀÌ °¡´ÉÇϸç, "private"À¸·Î ¼±¾ðµÈ °æ¿ì´Â ¿ÜºÎ¿¡¼­ Á¦¾îÇÒ ¼ö ¾ø°í ³»ºÎ¿¡¼­¸¸ »ç¿ëµÈ´Ù.

À̰ÍÀº Ŭ·¡½º ¿ÜºÎ¿¡´Â Á¦ÇÑµÈ Á¢±Ù ±ÇÇÑÀ» Á¦°øÇÏ¸ç ¿øÇÏÁö ¾Ê´Â ¿ÜºÎÀÇ Á¢±Ù¿¡ ´ëÇØ ³»ºÎ¸¦ º¸È£ÇÏ´Â ÀÛ¿ëÀ» ÇÑ´Ù. ÀÌ·¸°Ô ÇÔÀ¸·Î½á ÀÌµé ºÎºÐÀÌ ÇÁ·Î±×·¥ÀÇ ´Ù¸¥ ºÎºÐµé¿¡ ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê°í º¯°æµÉ ¼ö ÀÖ´Ù.

4.3 »ó¼Ó¼º

Ãß»óÈ­´Â º¹ÀâÇÑ ÇÁ·Î±×·¥À» °£´ÜÇÏ°Ô ÇØÁÖ°í ºÐ¼®ÀÇ ÃÊÁ¡À» ¸íÈ®È÷ ÇÒ ¼ö ÀÖ´Ù. ĸ½¶È­´Â °´Ã¼ÀÇ ³»ºÎ±¸Á¶¿Í ½Çü¸¦ ºÐ¸®ÇÔÀ¸·Î½á ³»ºÎÀÇ º¯°æÀÌ ¼Ò½º ÇÁ·Î±×·¥¿¡ ¹ÌÄ¡´Â ¿µÇâÀ» ÃÖ¼ÒÈ­ÇÑ´Ù. µû¶ó¼­ À¯Áöº¸¼öµµ ¿ëÀÌÇØÁø´Ù.

»ó¼Ó¼º(inheritance)´Â °´Ã¼±â¼úÀÇ °¡Àå ÇÙ½ÉÀÌ µÇ´Â °³³äÀ¸·Î ÇÁ·Î±×·¥À» ½±°Ô È®ÀåÇÒ ¼ö ÀÖµµ·Ï ÇØÁÖ´Â °­·ÂÇÑ ¼ö´ÜÀÌ µÈ´Ù. ¾ÕÀÇ µÎ °³³äÀº °´Ã¼ÁöÇâÀÌ ¾Æ´Ñ °³¹ß ¹æ¹ý¿¡¼­µµ Èä³»¸¦ ³¾ ¼ö ÀÖÀ¸³ª À̰ÍÀº °´Ã¼ÁöÇâ ¾ð¾î¿Í °³¹ß ¹æ¹ý¸¸ÀÇ Æ¯¼ºÀÌ´Ù.

¿¹¸¦ µé¾î, ¾î¶² ȸ»ç¿¡ ±Ù¹«ÇÏ´Â »ç¿øÀÌ Á¤±ÔÁ÷ »ç¿ø, °è¾àÁ÷ »ç¿øÀ¸·Î ±¸ºÐµÈ´Ù°í ÇÏÀÚ. À̶§ »ç¿øÀ̶ó´Â Á¤º¸´Â »ç¿øÀÇ À̸§°ú ÁÖ¼Ò, »ç¿ø¹øÈ£, ¼ºº° µîÀÇ °øÅëµÈ ¼Ó¼ºÀ» °¡Áö°í ÀÖ´Ù. Á¤±ÔÁ÷ »ç¿øÀº È£ºÀ°ú ¿¬ºÀÀ», °è¾àÁ÷ »ç¿øÀº °è¾à±â°£°ú ½Ã°£±Þ °°Àº °íÀ¯ÀÇ ¼Ó¼ºµéÀ» °¡Áö°Ô µÈ´Ù. ¹°·Ð Á¤±ÔÁ÷ »ç¿ø°ú °è¾àÁ÷ »ç¿øÀº ¸ðµÎ »ç¿øÀ̶ó´Â Ŭ·¡½ºÀÇ ¼Ó¼ºÀ» ±×´ë·Î ¹°·Á¹Þ´Â´Ù. ¿©±â¿¡ Ãß°¡ÇÏ¿© °íÀ¯ÀÇ ¼Ó¼ºÀ» Á¤ÀÇÇÏ°Ô µÇ´Â °ÍÀÌ´Ù. »ç¿øÀº Ŭ·¡½º °èÃþ¿¡¼­º¸¸é ¼öÆÛŬ·¡½º(super class)°¡ µÇ°í Á¤±ÔÁ÷°ú °è¾àÁ÷Àº ¼­ºêŬ·¡½º(sub class)°¡ µÈ´Ù. ÀÌ·¸°Ô ¼öÆÛŬ·¡½º¿Í ¼­ºêŬ·¡½º°£ÀÇ °ü°è°¡ °´Ã¼ÁöÇâÀÇ »ó¼Ó¼ºÀÇ °³³äÀÌ´Ù.

»ó¼ÓÀÇ È¿°ú´Â Ŭ·¡½º¸¦ ü°èÈ­ÇÒ ¼ö ÀÖÀ¸¸ç, ±âÁ¸ÀÇ Å¬·¡½º·ÎºÎÅÍ È®ÀåÀÌ ¿ëÀÌÇÏ´Ù´Â °ÍÀÌ´Ù. ÇÔ¼ö¿Í º¯¼ö¸¦ ¼­ºêŬ·¡½º¿¡¼­´Â µû·Î Á¤ÀÇÇÏÁö ¾Ê°í »óÀ§ÀÇ Å¬·¡½ºÀÇ ³»¿ë¿¡´Ù Ãß°¡ÀûÀΠƯ¼ºÀ» µ¡ºÙÀ̱⸸ ÇÏ¸é µÇ¹Ç·Î ¸Å¿ì È¿À²ÀûÀÌ´Ù. ¶ÇÇÑ °øÅëÀÇ Æ¯¼ºÀ» ¼­ºêŬ·¡½º¸¶´Ù ¹Ýº¹ÀûÀ¸·Î ±â¼úÇÏÁö ¾Ê°í Çѹø¸¸ ±â¼úÇϱ⠶§¹®¿¡ Áߺ¹À» ÁÙ¿© ÁØ´Ù.

5. °´Ã¼ÁöÇâ ÆÐ·¯´ÙÀÓÀÇ Àü¸Á


ÀÌÁ¦±îÁö ¾ð±ÞÇÑ °´Ã¼ÁöÇâÀÇ °³³äÀº ÇÁ·Î±×·¥ÀÇ °´Ã¼ÁöÇâÈ­·ÎºÎÅÍ Ãâ¹ßÇØ °´Ã¼ÁöÇâ ¾ð¾îÀÇ µîÀå, °´Ã¼ÁöÇ⠺м®/¼³°è, °´Ã¼ÁöÇâ µ¥ÀÌÅͺ£À̽º, °´Ã¼ÁöÇâ CASE Tool, °´Ã¼ÁöÇâ ¹æ¹ý·Ð, ºÐ»ê°´Ã¼±â¼ú µîÀ¸·Î ¹ßÀüµÇ¸é¼­ »õ·Î¿î °³¹ß ¹æ¹ýÀÇ ÆÐ·¯´ÙÀÓ(¸ðÇü)À» ÀÌ·ç¾ú´Ù. °´Ã¼ÁöÇâÀº Áö±Ý±îÁö ¼ÒÇÁÆ®¿þ¾î°øÇÐÀ» ÅëÇØ Á¦±âµÇ¾î ¿Ô´ø ¸¹Àº ¹®Á¦Á¡µéÀ» ½ÇÁúÀûÀ¸·Î ÇØ°áÇÒ ¼ö ÀÖ´Â °¡Àå ÃÖ½ÅÀÇ ±â¼úÀ̸ç, ºÐ»ê°ú Webȯ°æ, ¸ÖƼ¹Ìµð¾î µî Á¤º¸±â¼úÀÇ ±Þ°ÝÇÑ º¯È­¿¡µµ À¯¿¬ÇÏ°Ô ´ëóÇÒ ¼ö ÀÖ´Â ±¸Á¶¸¦ °¡Áö°í ÀÖ¾î ´ÙÀ½°ú °°Àº Àü¸ÁÀ» °®°Ô ÇÑ´Ù.

ù°, Àΰ£ÀÇ »ç°í¹æ½Ä°ú À¯»çÇÏ°í °³¹ßÁ¢±ÙÀÌ ½¬¿ö¼­ ÀΰøÁö´É, ½Å°æ¸Á °°Àº Â÷¼¼´ë ÄÄÇ»ÅÍ »ê¾÷¿¡ ÀÀ¿ëµÉ ¼ö ÀÖ´Ù.

µÑ°, Áö±Ý±îÁöÀÇ ¼ÒÇÁÆ®¿þ¾î »ý»ê¹æ½ÄÀÌ ¾Æ´Ñ "ÄÄÆ÷³ÍÆ®(component)" °³¹ß ¹æ½Ä, Áï ¼ÒÇÁÆ®¿þ¾î ºÎǰÀ» °¡Áö°í ¼Õ½±°Ô Á¶¸³ÇÏ¿© »ý»êÇÏ´Â CBD(Component Based Development)¸¦ °¡´ÉÇÏ°Ô ÇÑ´Ù. ÀÌ·¸°Ô µÇ¸é "¼ÒÇÁÆ®¿þ¾î °øÀå(software factory)"ÀÇ ½ÇÁúÀûÀÎ ±¸ÇöÀÌ °¡´ÉÇØÁú »Ó¸¸ ¾Æ´Ï¶ó, ¼ÒºñÀڵ鵵 °³¹ß(build) À§ÁÖÀÇ ¼ÒÇÁÆ®¿þ¾î°¡ ¾Æ´Ñ ±¸¸Å(buy) À§ÁÖÀÇ ¼ÒÇÁÆ®¿þ¾î ÀÌ¿ë ÆÐÅÏÀ» °¡Áú ¼ö ÀÖ´Ù.

¼¼Â°, ¹Ì·¡ÀÇ ºÐ»ê/°³¹æ ÄÄÇ»ÆÃ ȯ°æ¿¡ ´ëÇÑ ¼Ö·ç¼ÇÀÌ µÈ´Ù. °´Ã¼ÁöÇâÀÇ °³³äÀº ºÐ»ê°´Ã¼ µîÀ» ÅëÇØ °­·ÂÇÑ ºÐ»êȯ°æÀ» ±¸ÃàÇϴµ¥ À¯¿ëÇϰí Ç¥ÁØÈ­°¡ Àß ÀÌ·ç¾îÁö°í ÀÖ¾î ÀÌ ºÐ¾ß¿¡¼­´Â ´Ù¸¥ ¾î¶² ±â¼úº¸´Ùµµ ÀûÇÕÇÏ´Ù.


[±×¸² 2] °´Ã¼ÁöÇâ ±â¼úÀÇ ¹ßÀü


Copyright ¨Ï J. K. Lee. All right reserved.