µðÀÚÀÎ ÆÐÅÏ(2) - ¼ö¹Ú ¸ÀÀ» º¸ÀÚ!!


À̽ÂÀÏ
E-mail:gaialee@icu.ac.kr
Çѱ¹Á¤º¸Åë½Å´ëÇпø´ëÇб³
Homepage:http://www.icu.ac.kr/


1.  ¼ö¹ÚÀ» ÀÚ¸£±â Àü¿¡¡¦

Áö³­ È£¿¡´Â ¼ö¹Ú(µðÀÚÀÎ ÆÐÅÏ) ¸ÀÀ» º¸¿©ÁÖÁö´Â ¾Ê°í, ±× ¸ÀÀÌ ÀÌ·¸´Ù Àú·¸´Ù ±×·¨´Ù. ÀÌ ¹ø È£¿¡´Â ±× ¸ÀÀÌ ¾î¶²Áö º¸¿©ÁÖ·Á°í ¸ÀÀÖ´Â ³ðÀ» °í¸£±â À§ÇØ ½ÃÀåÀ» ¿©±â Àú±â µ¹¾Æ´Ù³æ´Ù(¾ÆÀÌ°í ´Ù¸®¾ß~~). ÀÌ ¸À¿¡ ¸¹Àº »ç¶÷µéÀÌ °¨µ¿ÇØ¾ß Çϴµ¥.. 

ÀÌ ¹øÈ£ÀÇ À̾߱⸦ ½ÃÀÛÇϱâ Àü¿¡ µÎ °¡Áö ¸íÈ®ÇÏ°Ô ÇÏ°í ³Ñ¾î°¡¾ß ÇÒ °ÍÀÌ ÀÖ´Ù. 

  • ¿¹Á¦ÀÇ ¼Ò½º ÄÚµå´Â ÀÚ¹Ù(Java) ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ ÀÌ¿ëÇÒ °ÍÀÌ´Ù.

    ÇÁ·Î±×·¡¹Ö ¾ð¾î »ç¿ë¿¡ À־ ÀÚ¹Ù ¾ð¾î¸¦ ¼±ÅÃÇÑ ÀÌÀ¯´Â ÇöÀç ´ëÁßÀûÀÎ ÇÁ·Î±×·¡¹Ö ¾ð¾î Áß¿¡¼­ °´Ã¼ÁöÇâÀÇ Æ¯Â¡À» °¡Àå ¸¹ÀÌ °¡Áö°í ÀÖ´Ù°í »ý°¢Çϱ⠶§¹®ÀÌ´Ù. (¿ì¸®³ª¶óÀÇ ÇÁ·Î±×·¡¹Ö Çö½Ç¿¡¼­ ´ëÁßÀûÀÎ °´Ã¼ÁöÇâ ¾ð¾î´Â C++¿Í Java ¾ð¾î¸¦ µé ¼ö ÀÖÀ» °ÍÀÌ´Ù.)

  • Ŭ·¡½º ´ÙÀ̾î±×·¥(class diagram)Àº Unified Modeling Language(UML)À» ÀÌ¿ëÇÏ¿© Ç¥ÇöÇÒ °ÍÀÌ´Ù.

    ÀÚ¹Ù ¾ð¾î¿¡¼­ °´Ã¼¸¦ »ý¼ºÇϱâ À§Çؼ­´Â Ŭ·¡½º¸¦ ¸ÕÀú Á¤ÀÇÇÏ¿©¾ß ÇÑ´Ù. Ŭ·¡½º´Â °´Ã¼ÀÇ Å¸ÀÔ(Type)ÀÌ µÇ°í ÀÌ Å¬·¡½º¸¦ ÀÌ¿ëÇÏ¿© ÇØ´ç ŸÀÔÀÇ °´Ã¼¸¦ »ý¼ºÇÏ°Ô µÈ´Ù. (³Ê¹« ´ç¿¬ÇÑ À̾߱⸦ ÇÑ´Ù°í »ý°¢ÇÏÁö ¸»¶ó. °´Ã¼ÁöÇâ ¾ð¾î Áß¿¡´Â Ŭ·¡½º °³³äÀÌ ¾ø´Â °Íµµ ÀÖ´Ù.) °´Ã¼ÁöÇ⠽ýºÅÛ µðÀÚÀÎÀ» Çϱâ À§Çؼ­´Â ÇÊ¿äÇÑ Å¬·¡½ºµé »çÀÌÀÇ °ü°è¸¦ ¸í½ÃÇØ¾ß ÇÏ´Â °úÁ¤, Áï, Ŭ·¡½º ´ÙÀ̾î±×·¥À» ¸¸µé ÇÊ¿ä°¡ Àִµ¥, ÀÌ °æ¿ì¿¡ À¯¿ëÇÏ°Ô »ç¿ëµÉ ¼ö ÀÖ´Â °ÍÀÌ UMLÀÌ´Ù. UML¿¡ ´ëÇÑ ±¸Ã¼ÀûÀÎ À̾߱â´Â UML °ü·Ã ¼½¼Ç¿¡¼­ ¾ò±â ¹Ù¶õ´Ù. 

À§¿¡¼­ À̾߱âÇÑ °Íó·³ ÀÚ¹Ù ¾ð¾î¿Í UMLÀ» »ç¿ëÇϱâ À§Çؼ­ ÀÚ¹Ù ¾ð¾î »ç¿ë¿¡ ´ëÇÑ ÄÚµù ±ÔÄ¢(coding rule)°ú °£´ÜÈ÷ UMLÀ» Á¤¸®ÇÏ¿© ¡°ÄÚµù ±ÔÄ¢°ú UML ´ÙÀ̾î±×·¥¡±À̶ó´Â Á¦¸ñÀ¸·Î ´Ù¸¥ ¹®¼­¸¦ ¸¸µé°í ÀÖ´Ù. »ç½Ç ÀÌ ¹øÈ£¿¡ ÷ºÎ ½Ãų °èȹÀ» °¡Áö°í ÀÖ¾ú´Âµ¥, ¿©·¯ °¡Áö »çÁ¤À¸·Î ±×·¯ÇÏÁö ¸øÇß´Ù. ¹®¼­°¡ ¿Ï¼ºµÇ´Â ´ë·Î µðÀÚÀÎ ÆÐÅÏ ¼½¼Ç¿¡ ÷ºÎÇÏ¿© ³õ°Ú´Ù.

ÀÚ²Ù ¼ö¹Ú, ¼ö¹ÚÇÏ´Ï ³»°¡ ¼ö¹Ú¿¡ °ü·ÃµÈ À̾߱⸦ ÇÏ°í ÀÖ´Â °Í °°Àº Âø°¢ÀÌ µç´Ù. ÀÌÁ¦ ¼ö¹Ú¿¡ ´ëÇÑ À̾߱â´Â ±×¸¸ ÇÏ°í º»°ÝÀûÀÎ ÆÐÅÏ À̾߱⸦ ÇØ º¸°Ú´Ù.

ȤÀÚ´Â 99³â 3¿ù ´ÞÀ» ±âÁØÀ¸·Î ¡°ÇöÀç 30¿© °³ Á¤µµÀÇ ÆÐÅÏÀÌ ¹ßÇ¥µÇ¾î ÀÖ´Ù¡±¶ó°í ÇÏ¿´´Âµ¥,ÀÌ °ÍÀº Àß ¸ð¸£°í ÇÑ À̾߱â´Ù[¸¶ÀÌÅ©·Î¼ÒÇÁÆ®¿þ¾î 1999³â 3¿ùÈ£, µðÀÚÀÎ ÆÐÅÏ Æ¯Áý±â»ç, p. 254]. 1998³â ¹Ì±¹ÀÇ PLoP98 ÄÁÆÛ·±½º(conference)¿¡ ¹ßÇ¥µÈ ÆÐÅϸ¸ ÇÏ´õ¶ó°í 30¿© °³°¡ ³Ñ´Â´Ù. ¾Æ¸¶µµ GoF Ã¥[1]¿¡ ³ª¿Í ÀÖ´Â ÆÐÅÏ°ú ½ÃÁß¿¡ ³ª¿Í Àִ å¿¡ ±â¼úµÇ¾î ÀÖ´Â °ÍÀÌ ÀüºÎÀÎ °ÍÀ¸·Î »ý°¢ÇÑ ¸ð¾çÀÌ´Ù. ¾î·µç, Áö±Ý±îÁö °ø½ÄÀûÀ¸·Î ¹ßÇ¥µÈ ÆÐÅÏÀÇ ¼ö´Â Áö³­ È£¿¡¼­µµ À̾߱â ÇßµíÀÌ ¼ö ¹é °¡Áö°¡ µÈ´Ù. ÀÌ Áß¿¡¼­ ÆÐÅÏÀÇ Àǹ̸¦ ¾Ë¸®±â¿¡ ÁÁÀº °ÍÀ» ã´Â ´Ù´Â °ÍÀº ½¬¿î ÀÏÀÌ ¾Æ´Ï´Ù. °³ÀÎÀûÀ¸·Î ¡°°´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ »ç¿ëÇÏ¿© ½Ã½ºÅÛÀ» °³¹ßÇÏ°í ÀÖ´Â ÀϹÝÀûÀÎ °³¹ßÀÚ°¡ ÀÏ»óÀûÀ¸·Î º¼ ¼ö ÀÖ´Â ¶Ç´Â ÇÊ¿ä·Î ÇÏ´Â °Íµé Áß¿¡¼­ µðÀÚÀÎ ÆÐÅÏÀ¸·Î Á¤¸®µÇ¾î ÀÖ´Â °Í¡±À» ÆÐÅÏ ¼±ÅÃÀÇ ±âÁØÀ¸·Î »ï°í ÀÖ´Ù. ÀÌ¿Í °°Àº ±âÁØÀ» »õ¿î ¹è°æ¿¡´Â µðÀÚÀÎ ÆÐÅÏÀÇ Ã¹ È£¿¡¼­ ¾ð±ÞÇßµíÀÌ µðÀÚÀÎ ÆÐÅÏÀº »õ·Î¿î °ÍÀ» ÀǹÌÇÏ´Â °ÍÀÌ ¾Æ´Ï°í, ¡°ÇÁ·Î±×·¡¸ÓÀÇ °æÇ衱À» ÀǹÌÇÏ´Â °ÍÀ̱⠶§¹®ÀÌ´Ù. µû¶ó¼­, ¼±ÅõǴ ÆÐÅÏÀº ÀϹÝÀûÀ¸·Î °´Ã¼ÁöÇâ ¾ð¾î¸¦ »ç¿ëÇÏ´Â ÇÁ·Î±×·¡¸Ó°¡ ½±°Ô Á¢ÇÒ ¼ö ÀÖ´Â ³»¿ëÀ̾î¾ß ÇÏ°í ±× Áß¿¡¼­µµ ½ÇÁúÀûÀ¸·Î µµ¿òÀÌ ¸¹ÀÌ µÉ ¼ö ÀÖ¾î¾ß ÇÑ´Ù°í »ý°¢Çß´Ù. ÀÌ ¹øÈ£¿¡¼­´Â À§¿¡¼­ ¾ð±ÞÇÑ ±âÁØ¿¡ ÀûÇÕÇÑ °Í Áß¿¡¼­ ±× ù¹ø°·Î Factory ÆÐÅÏÀ» °ñ¶ó º¸¾Ò´Ù.

 

2.  Àß ÀÍÀº ¼ö¹Ú Çϳª ? - Factory ÆÐÅÏ

ÀÌ ¹øÈ£¿¡ ¼Ò°³ÇÏ·Á°í ÇÏ´Â Factory ÆÐÅÏÀº °ø½ÄÀûÀ¸·Î ¡°Factory Method¡±·Î Ç¥±âµÇ¾î ÀÖÀ¸¸ç, °´Ã¼ »ý¼º¿¡ °üÇÑ ³»¿ëÀ» ´ã°í ÀÖ´Ù[1]. °´Ã¼ »ý¼ºÀº ÀϹÝÀûÀÎ ÇÁ·Î±×·¡¸ÓµéÀÌ °´Ã¼ÁöÇâ ¾ð¾î¸¦ ÀÌ¿ëÇÏ¿© ÇÁ·Î±×·¡¹ÖÀ» ÇÒ ¶§ ´Ã»ó ÇÏ°í ÀÖ´Â ÀÏÀ̱⠶§¹®¿¡ °£°úµÇ¾îÁú ¼öµµ ÀÖÁö¸¸, °´Ã¼ÁöÇâÀûÀ¸·Î µðÀÚÀÎµÈ ½Ã½ºÅÛÀº °á±¹ °´Ã¼ÀÇ »ý¼º°ú ¼Ò¸ê ±×¸®°í »ý¼ºµÈ °´Ã¼µé °£ÀÇ ¸Þ½ÃÁö Àü´ÞÀ» ÀǹÌÇϹǷΠ°´Ã¼ÀÇ »ý¼ºÀÌ ±× ±Ùº»ÀÌ µÈ´Ù°í º¼ ¼ö ÀÖ´Ù. ÀÌ·± Àǹ̿¡¼­ °´Ã¼¸¦ ¾î¶»°Ô Çϸé È¿À²ÀûÀ¸·Î »ý¼ºÇÒ ¼ö ÀÖ´ÂÁö¿¡ ´ëÇÑ °ÍÀ» ÇѹøÂëÀº ±íÀÌ »ý°¢ÇØ º¼ ÇÊ¿ä°¡ ÀÖ´Â °ÍÀÌ´Ù. 

Factory ÆÐÅÏÀº ¿À·£ ±â°£µ¿¾È °´Ã¼ÁöÇ⠽ýºÅÛ µðÀÚÀ̳ʵéÀÌ °´Ã¼ »ý¼º¿¡ ´ëÇÑ °í¹ÎÀ» ÇÑ ³¡¿¡ ÀϹÝÀûÀÎ ½Ã½ºÅÛ¿¡¼­ °´Ã¼ »ý¼º½Ã¿¡ ÀÚÁÖ µîÀåÇÏ´Â µðÀÚÀÎÀ» ÆÐÅÏÈ­ ½ÃÅ°°í À̸§Àº ºÙ¿© ³õÀº °ÍÀ¸·Î ÀÌÇØÇÏ¸é µÉ °ÍÀÌ´Ù. µû¶ó¼­, ¼÷·ÃµÈ ½Ã½ºÅÛ µðÀÚÀ̳ʿ¡°Ô´Â Factory ÆÐÅÏÀÌ ³Ê¹«³ª Àͼ÷ÇÑ ³»¿ëÀÏ °ÍÀÌ°í, °æÇèÀÌ ÀûÀº °³¹ßÀÚ¿¡°Ô´Â °´Ã¼ »ý¼º¿¡ ´ëÇÑ ÁÁÀº ¹æ¹ý Çϳª¸¦ ÀÍÈ÷´Â ±âȸ°¡ µÉ °ÍÀ¸·Î »ý°¢ÇÑ´Ù.

2.1 °´Ã¼»ý¼ºÀÇ µÎ °¡Áö ¹æ¹ý

¿©·¯ºÐµéÀÌ °´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ °¡Áö°í ÇÊ¿äÇÑ °´Ã¼¸¦ »ý¼ºÇÏ´Â °úÁ¤À» »ý°¢ÇØ º¸¶ó. Áö±Ý±îÁö ÀÚ½ÅÀÌ °´Ã¼¸¦ »ý¼ºÇϴµ¥ »ç¿ëÇÑ °úÁ¤ÀÌ Å©°Ô µÎ °¡Áö¶ó´Â °ÍÀ» ¹ß°ßÇÏ°Ô µÉ °ÍÀÌ´Ù. ¸ÕÀú °´Ã¼ »ý¼ºÀÇ ÁÖü°¡ µÇ´Â °´Ã¼¿¡¼­ ´Ù¸¥ °´Ã¼¸¦ Á÷Á¢ »ý¼ºÇÏ´Â °ÍÀÌ Çϳª¿ä, ´Ù¸¥ Çϳª´Â °´Ã¼ »ý¼ºÀÇ ÁÖü°¡ µÇ´Â °´Ã¼°¡ »ý¼ºÇÏ·Á´Â °´Ã¼¸¦ Á÷Á¢ »ý¼ºÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ´Ù¸¥ °´Ã¼¿¡ ÇØ´ç °´Ã¼ »ý¼ºÀ» ÀÇ·ÚÇÏ´Â °ÍÀÌ´Ù. 

µÎ °¡Áö °´Ã¼ »ý¼º °úÁ¤À» ÀÌÇØÇϱâ À§Çؼ­ ¡°¹ø¿ª±â¡± ½Ã½ºÅÛÀ» µðÀÚÀÎ ÇÏ¿© º¸ÀÚ. ¹ø¿ª±â ½Ã½ºÅÛÀ̶õ »ç¿ëÀÚ°¡ ¿µ¾î¿Í ÀÏ¾î µÎ °¡Áö ¾ð¾î Áß¿¡¼­ Çϳª¸¦ ¼±ÅÃÇÏ°í ¿ì¸®³ª¶ó ¹®ÀåÀ» ³ÖÀ¸¸é ±× ¹®Àå¿¡ ´ëÇÑ ÇØ´ç ¾ð¾î·Î ¹ø¿ªÇØ ÁÖ´Â ½Ã½ºÅÛÀÌ´Ù. ÀÌ ½Ã½ºÅÛÀ» À§¿¡¼­ ±¸ºÐÁöÀº °´Ã¼ »ý¼º¿¡ ´ëÇÑ µÎ °¡Áö °úÁ¤À¸·Î ³ª´©¾î¼­ µðÀÚÀÎÇÏ¿© º¸°í, ÀÌ µÎ °¡Áö µðÀÚÀÎÀÌ °¢°¢ ¾î¶² Â÷À̸¦ º¸ÀÌ´ÂÁö »ìÆ캸°Ú´Ù. ¿©±â¼­ ¿¹·Î µç ¹ø¿ª±â ½Ã½ºÅÛ¿¡ ´ëÇÑ ¾ÆÀ̵ð¾î´Â [3] ¹®¼­¿¡¼­ ¾ò¾ú´Ù.

2.2 Á÷Á¢ °´Ã¼¸¦ »ý¼ºÇÏ´Â °æ¿ì

¹ø¿ª±â¸¦ ¸¸µé±â À§Çؼ­ ±×¸² 2¿Í °°Àº ±¸Á¶·Î ¿µ¾î ¹ø¿ª±â¿Í ÀϺ»¾î ¹ø¿ª±â¸¦ µðÀÚÀÎ ÇÏ¿´´Ù°í ÇÏÀÚ. ±×¸² 2¿Í °°Àº µðÀÚÀÎÀÇ ÀåÁ¡Àº ÀÎÅÍÆäÀ̽º(¾Æ·¡ ÷ºÎ ±ÛÀ» º¸±â ¹Ù¶õ´Ù)¸¦ ÀÌ¿ëÇÏ¿© °¢ ¹ø¿ª±â¸¦ »ç¿ëÇϴ Ŭ¶óÀ̾ðÆ®¿Í °¢ ¹ø¿ª±â¿ÍÀÇ ÀÇÁ¸¼ºÀ» ÀϺκРÁ¦°ÅÇß´Ù´Â °ÍÀÌ´Ù. 

±×¸² 2. Translator ÀÎÅÍÆäÀ̽º¸¦ ÀÌ¿ëÇÑ ¹ø¿ª °´Ã¼ÀÇ ÀÌ¿ë

±×¸² 2ÀÇ µðÀÚÀÎÀ» Åä´ë·Î ¹ø¿ª±â ½Ã½ºÅÛÀÇ Å¬¶óÀ̾ðÆ® ºÎºÐÀÇ ±¸ÇöÀ» ÇÑ´Ù¸é ¼Ò½º 1°ú °°Àº Äڵ尡 µÉ °ÍÀÌ´Ù. 
 

public class TranslatorClient {
     ¡¦
     private Translator tr_;

     if(language == ENGLISH) {

          tr_ = new EnglishTranslator();

     } else if (language == JAPANESE) {

          tr_ = new JapaneseTranslator();

     }
     ¡¦
     translatedSentence = tr_.translate(inputSentence);
     ¡¦
}

¼Ò½º 1. ±×¸² 1ÀÇ ±¸Çö ¼Ò½º

¹ø¿ª±â¸¦ À§ÇÑ ±×¸² 2¿Í °°Àº µðÀÚÀÎÀº ±×·±´ë·Î ¾µ¸¸ÇÏ´Ù. ±× ÀÌÀ¯´Â ÀÌ¹Ì À̾߱â ÇßµíÀÌ ÀÎÅÍÆäÀ̽º¸¦ Ŭ¶óÀ̾ðÆ®¿Í °¢°¢ÀÇ ¹ø¿ª±â »çÀÌ¿¡ µÎ¾î¼­ ¼Ò½º 1 Áß¿¡¼­

translatedSentence = tr_.translate(inputSentence);

ó·³ »ç¿ëµÇ´Â ¹ø¿ª±â¿¡ »ó°ü¾øÀÌ °°Àº ¸Þ¼Òµå¸¦ È£ÃâÇÑ´Ù´Â °ÍÀÌ´Ù. µû¶ó¼­, ÀÌ °æ¿ì ÇØ´ç ¹ø¿ª±âÀÇ ¼Ò½º°¡ ¼öÁ¤µÇ´õ¶óµµ Ŭ¶óÀ̾ðÆ®ÀÇ ¸Þ¼Òµå È£ÃâºÎºÐ¿¡ ´ëÇÑ ¼Ò½º´Â °íÄ¥ °÷ÀÌ ¾ø´Ù. ±×·¯³ª, ÀÌ µðÀÚÀο¡´Â ÇÑ °¡Áö ¾Æ½¬¿î ºÎºÐÀÌ ³²¾Æ ÀÖ´Ù. ¹Ù·Î ÇØ´ç ¹ø¿ª±â¸¦ »ý¼ºÇÏ´Â ºÎºÐÀÌ´Ù. 

±×¸² 2¿Í °°Àº µðÀÚÀÎÀ¸·Î´Â ÇÊ¿äÇÑ ¹ø¿ª±âÀÇ °´Ã¼¸¦ »ý¼ºÇϱâ À§Çؼ­ ±× ÇØ´ç ¹ø¿ª±âÀÇ Å¸ÀÔÀ» ¾Ë¾Æ¾ß ÇÏ´Â ¹®Á¦Á¡ÀÌ ³²¾Æ ÀÖ´Ù. Áï, ¼Ò½º 1¿¡¼­

if(language == ENGLISH) {

     tr_ = new EnglishTranslator();

} else if (language == JAPANESE) {

     tr_ = new JapaneseTranslator();

}

ó·³ ÇÊ¿äÇÑ ¹ø¿ª±âÀÇ °´Ã¼¸¦ »ý¼º½ÃÅ°·Á¸é ±½°Ô Ç¥½ÃµÈ ºÎºÐó·³ ±¸Ã¼ÀûÀÎ ¹ø¿ª±âÀÇ Å¸ÀÔÀ» ¾Ë¾Æ¾ß ÇÑ´Ù. ÀÌ ºÎºÐÀÌ ¹ß»ý½ÃÅ°´Â ¹®Á¦Á¡Àº °´Ã¼ »ý¼º¿¡ À־, Ŭ¶óÀ̾ðÆ®¿Í ¹ø¿ª±â »çÀÌÀÇ ÀÇÁ¸¼ºÀ» Á¦°ÅÇÏÁö ¸øÇߴٴµ¥ ÀÖ´Ù. ´Ù½Ã ¸»Çؼ­, Áö±ÝÀº ¿µ¾î ¹ø¿ªÀ» À§Çؼ­ »ç¿ëÇÏ´Â °´Ã¼°¡ EnglishTranslatorÀÌÁö¸¸, ³ªÁß¿¡ ½Ã½ºÅÛÀ» ¾÷±×·¹À̵å ÇÒ °æ¿ì ´Ù¸¥ ŸÀÔÀÇ ¹ø¿ª±â¸¦ »ç¿ëÇÏ°Ô µÇ¸é ÀÌ ºÎºÐÀ» ¹Ù²Ù¾î ÁÖ¾î¾ß ÇÏ´Â °ÍÀÌ´Ù. Á÷Á¢ ÇØ´ç °´Ã¼¸¦ »ý¼ºÇÒ ¶§ ¹ß»ýÇÏ´Â ÀÌ·¯ÇÑ ÀÇÁ¸¼º ¹®Á¦¸¦ ÇØ°áÇϱâ À§Çؼ­ °´Ã¼ »ý¼ºÀ» ´Ù¸¥ °´Ã¼¿¡ ÀÇ·ÚÇÏ´Â µðÀÚÀÎÀ» »ý°¢ÇÏ°Ô µÈ °ÍÀÌ´Ù. ÀÌÁ¦ ±× À̾߱⸦ ÇÒ Â÷·Ê´Ù.

2.3 ´Ù¸¥ °´Ã¼¿¡ ÇÊ¿äÇÑ °´Ã¼ÀÇ »ý¼ºÀ» ÀÇ·ÚÇÏ´Â °æ¿ì

À§¿¡¼­ ÁöÀûÇÑ´ë·Î ÇÊ¿äÇÑ °´Ã¼¸¦ »ý¼ºÇÏ´Â °÷¿¡¼­ ¹ß»ýÇÏ´Â °´Ã¼ »çÀÌÀÇ ÀÇÁ¸¼ºÀ» ¾ø¾Ö±â À§Çؼ­ »ý¼º¿¡ ´ëÇÑ ºÎºÐÀ» µû·Î ¶¼³»¾î »ý¼º¸¸ Àü´ãÇÏ´Â °´Ã¼¸¦ Çϳª ´õ ¸¸µå´Â ¹æ¹ýÀ» »ç¿ëÇÑ´Ù. ±×¸² 3Àº °´Ã¼ »ý¼º¿¡ µû¸¥ ÀÇÁ¸¼º ¹®Á¦¸¦ ÇØ°áÇÑ µðÀÚÀÎÀÌ´Ù. 

±×¸² 3. °´Ã¼ »ý¼ºÀ» ´Ù¸¥ °´Ã¼¿¡ ÀÇ·ÚÇÏ´Â °æ¿ìÀÇ µðÀÚÀÎ - Factory Method

±×¸² 2ÀÇ µðÀÚÀΰú ±×¸² 3ÀÇ µðÀÚÀÎÀ» ºñ±³ÇØ º¸¸é, ´Þ¶óÁø ºÎºÐÀÌ Çϳª ÀÖ´Ù. °´Ã¼ »ý¼ºÀ» Àü´ãÇÏ´Â TranslatorFactoryImpl °´Ã¼¸¦ Çϳª ¸¸µé¾î Ŭ¶óÀ̾ðÆ®°¡ Translator¸¦ ÅëÇؼ­ ÇÏ´ø ¹ø¿ª±â °´Ã¼ »ý¼º ÀÏÀ» ¸Ã°å´Ù´Â °ÍÀÌ´Ù. °³¼±µÈ ¹ø¿ª±â ½Ã½ºÅÛÀÇ µðÀÚÀο¡ ´ëÇÑ Å¬¶óÀ̾ðÆ® ºÎºÐÀÇ ¼Ò½º ÄÚµå´Â ¼Ò½º 2¿Í °°ÀÌ ¼öÁ¤ÀÌ °¡ÇØÁú °ÍÀÌ´Ù.

public class TranslatorClient {
     ¡¦
     private TranslatorFactory tf_;

     private Translator tr_;
     ¡¦
     tf_ = new TranslatorFactoryImpl();

     if(language == ENGLISH) {

          tr_ = tf_.getEnglishTranslator();

     } else if (language == JAPANESE) {

          tr_ = tf_.getJapaneseTranslator();

     }
     ¡¦
     translatedSentence = tr_.translate(inputSentence);

    ¡¦

}

¼Ò½º 2. °³¼±µÈ ¹ø¿ª±â ½Ã½ºÅÛÀÇ Å¬¶óÀ̾ðÆ® ¼Ò½º

¼Ò½º 2¸¦ º¸¸é¼­ Ŭ¶óÀ̾ðÆ® ±¸ÇöºÎ°¡ ´õ º¹ÀâÇØ Á³´Ù°í Åõ´úµÇ´Â µ¶ÀÚµµ ÀÖÀ» °ÍÀÌ´Ù. ±×·¯³ª, Àß ¶â¾î º¸¸é ÀÌÁ¦´Â °´Ã¼ »ý¼º ºÎºÐ¿¡ ³²¾Æ ÀÖ´ø ÀÇÁ¸¼º ºÎºÐ±îÁöµµ Á¦°Å ÇßÀ½À» º¼ ¼ö ÀÖ´Ù. °´Ã¼ »ý¼º ºÎºÐ¿¡ ³²¾Æ ÀÖ´ø ÀÇÁ¸¼º ºÎºÐÀÌ Á¦°ÅµÈ ºÎºÐÀº ¼Ò½º 2¿¡¼­ ´ÙÀ½ ºÎºÐÀÌ´Ù.

if(language == ENGLISH) {

     tr_ = tf_.getEnglishTranslator();

} else if (language == JAPANESE) {

     tr_ = tf_.getJapaneseTranslator();

}

À§¿¡¼­ ±½Àº ±Û¾¾·Î µÇ¾î ÀÖ´Â ºÎºÐÀÌ ¿¹Àü¿¡´Â ÇØ´ç ¹ø¿ª±â °´Ã¼ÀÇ Å¸ÀÔÀÌ ¸í½ÃµÇ¾îÀÖ´ø ºÎºÐÀÌ´Ù. ÀÌ ºÎºÐÀÌ ÀÌÁ¦´Â »ý¼º Ã¥ÀÓÀ» ¸Ã°í ÀÖ´Â °´Ã¼ÀÇ ÀÎÅÍÆäÀ̽º·Î ¹Ù²ñÀ¸·Î Çؼ­ ¹ø¿ª±â°¡ ¹Ù²î´Â °Í¿¡ ´ëÇÑ ÀÇÁ¸¼ºÀ» ¿ÏÀüÈ÷ Á¦°ÅµÇ¾ú´Ù. Áï, ¹ø¿ª±â ½Ã½ºÅÛÀº ±âº»ÀûÀ¸·Î ¹ø¿ªÀ» ÇÏ´Â ½Ã½ºÅÛÀÌ°í µû¶ó¼­ TranslatorFactory, Translator ÀÎÅÍÆäÀ̽º¸¦ ÅëÇؼ­ Á¤ÀÇµÈ ±â´É¿¡ ´ëÇÑ ¼öÁ¤ÀÌ °¡ÇØÁö´Â ÀÏÀº °ÅÀÇ ¾øÀ» °ÍÀÌ´Ù. ¾÷±×·¹À̵带 À§Çؼ­ ¼öÁ¤ÀÌ °¡ÇØÁö´Â ÀÏÀÌ ¹ß»ýÇÑ´Ù¸é, ±×°ÍÀº ¹ø¿ª Á¤µµÀÇ Çâ»óÀ» À§ÇÑ ¾Ë°í¸®ÁòÀÇ º¯È­³ª ¹ø¿ª±â ±³Ã¼¿¡ ´ëÇÑ °ÍÀ̹ǷΠ±×¸² 3°ú °°Àº µðÀÚÀÎÀ¸·Î ¹ø¿ª±â ŸÀÔ°ú ÇØ´ç ¹ø¿ª±âÀÇ ¸Þ¼Òµå »ç¿ë¿¡ ´ëÇÑ ÀÇÁ¸¼ºÀ» ¸ðµÎ ¾ø¾Ø´Ù¸é À¯Áö, º¸¼ö°¡ ¸Å¿ì ³ôÀº ½Ã½ºÅÛÀÌ µÉ °ÍÀÌ´Ù.

¾Õ¿¡¼­µµ À̾߱âÇßÁö¸¸ ±×¸² 3°ú °°Àº ½Ã½ºÅÛ µðÀÚÀÎÀº °´Ã¼ÀÇ »ý¼º ¹®Á¦¸¦ È¿°úÀûÀ¸·Î ÇØ°áÇÒ ¼ö ÀÖ´Â ±¸Á¶¿©¼­ °æÇèÀÌ ¸¹Àº °³¹ßÀÚµéÀº ¾Ë°Ô ¸ð¸£°Ô ÀÌ·¯ÇÑ µðÀÚÀÎÀ» ÀÚ½ÅÀÌ °³¹ßÇÏ°í ÀÖ´Â ½Ã½ºÅÛ¿¡ »ç¿ëÇÏ¿© ¿Ô´Ù. ÀÌ·± °æÇè¿¡ À̸§À» ºÙ¿©¼­ Á¤¸®ÇØ ³õÀº °ÍÀÎ Factory Method´Ù. GoF Ã¥¿¡ ±â¼úµÇ¾î ÀÖ´Â ÀÌ ÆÐÅÏÀÇ Àǵµ´Â ´ÙÀ½°ú °°À¸¸ç, ÀÌ ÆÐÅÏ ±¸Á¶¸¦ ÀϹÝÈ­ ½ÃÄѼ­ ±×¸² 4¿Í °°ÀÌ Á¤¸®ÇÏ¿´´Ù(ÇÊÀÚ°¡ UML ¹öÀüÀ¸·Î ¹Ù²Ù¾ú´Ù).

Àǵµ(Intent)

Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.

    °´Ã¼ »ý¼º¿¡ ´ëÇÑ ÀÎÅÍÆäÀ̽º¸¦ Á¤ÀÇÇÑ´Ù. ±×·¯³ª, »ý¼ºÇÒ °´Ã¼¿¡ ´ëÇÑ Å¬·¡½ºÀÇ ¼±ÅÃÀº ÀÌ ÀÎÅÍÆäÀ̽º¸¦ ±¸Çö(Implementation)ÇÑ Å¬·¡½º°¡ °áÁ¤Çϵµ·Ï ÇÑ´Ù. Factory Method´Â °´Ã¼ »ý¼º¿¡ ´ëÇÑ Ã¥ÀÓÀ» ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÑ Å¬·¡½º¿¡ Àü°¡ÇÑ °ÍÀÌ´Ù.[1]

¡¡

¡¡±×¸² 4. Factory Method


2.4 °ü·Ã ÆÐÅÏ

ÆÐÅÏÀ¸·Î Á¤¸®µÇ¾î ÀÖ´Â °ÍµéÀ» º¸¸é, ¼­·Î ¹ÐÁ¢ÇÏ°Ô ¿¬°üµÇ¾î ÀÖ´Â °Íµéµµ ÀÖ°í ±×·¸Áö ¾ÊÀº °Íµéµµ ÀÖ´Ù. ½Ã½ºÅÛ µðÀÚÀÎ ½Ã¿¡ ÀÚÁÖ ¹ß»ýÇÏ´Â °ÍµéÀ» ÆÐÅÏÀ¸·Î Á¤¸®ÇÏ´Â ¾çÅ´ ũ°Ô ¼¼ °¡Áö·Î ³ªÅ¸³ª´Â °ÍÀ» È®ÀÎ ÇÒ ¼ö ÀÖ´Ù. Áö±Ý±îÁö ¹ß°ßÇÏÁö ¸øÇß´ø »õ·Î¿î ³»¿ëÀ» ÆÐÅÏÀ¸·Î Á¤¸®ÇÏ´Â °æ¿ì°¡ ±× Çϳª°í,  ±âÁ¸ÀÇ °ÍÀ» ¼öÁ¤Çϰųª Æ÷ÇÔÇÏ¿© ÇϳªÀÇ ÆÐÅÏÀ¸·Î Á¤¸®ÇÏ´Â °æ¿ì°¡ µÎ ¹ø°´Ù. ¸¶Áö¸·À¸·Î´Â ±âÁ¸¿¡ ÆÐÅÏÀ¸·Î Á¤¸®µÇ¾î ÀÖ´ø °ÍÀ» À̸§À» ´Þ¸®ÇÏ¿© »ç¿ëÇÏ´Â °æ¿ì°¡ ÀÖ´Ù[4]. ¿©±â¼­ ¼Ò°³ÇÑ Factory Methodµµ ÀÌ¿Í ¸¶Âù°¡Áö·Î ´Ù¸¥ ÆÐÅϵé°ú ¿¬°üµÇ¾î ÀÖ´Ù. ÀÌ ÆÐÅÏ°ú °ü·ÃµÇ¾î ÀÖ´Â °ÍÀ¸·Î´Â Abstract Factory, Template Methods, Prototype µî°ú ¿¬°ú µÇ¾îÀÖ´Ù[1]. ¿©±â¼­ Abstract Factory ÆÐÅÏÀº Factory ÆÐÅÏ°ú ¾ÆÁÖ ¹ÐÁ¢ÇÏ°Ô ¿¬°üµÇ¾î ÀÖ´Ù. À̾߱⸦ Àü°³ÇØ ³ª°¡¸é¼­ Abstract Factory ÆÐÅϵµ °Çµå·Á º¼±î »ý°¢À» Çß¾ú´Âµ¥, ±¸Áö ±×·² ÇÊ¿ä°¡ ¾ø´Ù°í »ý°¢À» Çß´Ù.  µ¶ÀÚµéÀÌ ÇÑ ¹ø Abstract Factory ÆÐÅÏÀÇ ³»¿ëÀ» Á÷Á¢ º¸´Â °ÍÀÌ ´õ µµ¿òÀÌ µÉ °Í °°´Ù°í »ý°¢À» Çß´Ù. Àо¸é ¾Ë°ÚÁö¸¸ ±×¸® ¾î·ÆÁö ¾Ê°Ô ±× ³»¿ëÀ» ÀÌÇØÇÏ¿© È°¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

 

3. ¸ÎÀ½¸»..

ÀÌ ±ÛÀ» Àд µ¶ÀÚµé Áß¿¡¼­ ¾î´À Á¤µµÀÇ ¼öÁØ¿¡ À̸£·¯ ÀÖ´Â ÇÁ·Î±×·¡¸ÓµéÀº Áö±Ý±îÁö Factory Method¶ó´Â À̸§À¸·Î Æ÷ÀåµÈ ³»¿ëÀ» ÀÌ¹Ì Àß ÀÌÇØÇÏ°í ÀÖÀ¸¸ç, ÀÚ½ÅÀÌ Âü¿©ÇÏ°í ÀÖ´Â ÇÁ·ÎÁ§Æ®ÀÇ ±¸ÇöºÎ¿¡¼­ ÀÌ¹Ì ¸¹ÀÌ »ç¿ëÇÑ °æÇèÀ» °¡Áö°í ÀÖÀ» ¼öµµ ÀÖÀ» °ÍÀÌ´Ù. ±×·¯³ª ÇÊÀÚ°¡ ±¸Áö ÀÌ·± ³»¿ëÀ» ¿©±â¼­ ù ¹ø° µðÀÚÀÎ ÆÐÅÏÀ¸·Î ¼Ò°³ÇÑ ÀÌÀ¯´Â ÀÌ ±ÛÀÇ Ãʹݺο¡¼­µµ ¾ð±ÞÇßµíÀÌ ¡°°´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ »ç¿ëÇÏ¿© ½Ã½ºÅÛÀ» °³¹ßÇÏ°í ÀÖ´Â ÀϹÝÀûÀÎ °³¹ßÀÚ°¡ ÀÏ»óÀûÀ¸·Î º¼ ¼ö ÀÖ´Â ¶Ç´Â ÇÊ¿ä·Î ÇÏ´Â °Íµé Áß¿¡¼­ µðÀÚÀÎ ÆÐÅÏÀ¸·Î Á¤¸®µÇ¾î ÀÖ´Â °Í¡±À» ÆÐÅÏ ¼±ÅÃÀÇ ±âÁØÀ¸·Î »ï´Â °ÍÀÌ Àǹ̰¡ ÀÖ´Ù°í ÆÇ´ÜÇ߱⠶§¹®ÀÌ´Ù. 

Factory ÆÐÅÏÀº º¸°í ÀÌ ±ÛÀ» Àд µ¶ÀÚ°¡ µðÀÚÀÎ ÆÐÅÏ¿¡ ´ëÇÏ¿© ¾î¶² ´À³¦À» °¡Áö°Ô µÇ¾ú´ÂÁö ±Ã±ÝÇÏ´Ù. ¡®¹¹ º°°Å ¾Æ´Ï±º¡¯ ÇÏ´Â µ¶ÀÚµµ ÀÖÀ» °ÍÀÌ°í, ¡®¾ß ¹Ù·Î À̰žߡ¯ ÇÏ´Â µ¶ÀÚµµ ÀÖÀ» °ÍÀÌ´Ù. ÇÊÀÚÀÇ °æ¿ì´Â ÈÄÀÚ¿¡ ¼ÓÇß¾ú´Ù.  ÇÊÀÚ°¡ ÈÄÀÚ¿¡ ¼ÓÇÑ ÀÌÀ¯´Â ´ÙÀ½°ú °°´Ù. °´Ã¼ÁöÇâ Æз¯´ÙÀÓÀº ´ÙÇü¼º(polymorphism)ÀÇ ¼ºÁúÀÌ ÀÖ¾î Àç»ç¿ë¼ºÀ» ³ôÀÏ ¼ö ÀÖ´Ù°í ¶°µé¾î ´ë´Â ¼ö¸¹Àº »ç¶÷µé°ú Ã¥µéÀ» º¸¾Ò°í, ÇÊÀÚ´Â ´ÙÇü¼ºÀ» ÀÌÇØÇϱâ À§Çؼ­ ³ë·ÂÇÏ°í ¾ó¸¶°£Àº ÀÌÇØÇϴµ¥ ¼º°øÇϱ⵵ Çß´Ù. ±×·¯³ª, ´ÙÇü¼ºÀ» ½ÇÀç·Î Àß ÀÌÇØÇصµ ½ÇÁúÀûÀ¸·Î °´Ã¼ÁöÇ⠽ýºÅÛÀ» µðÀÚÀÎÇÒ °æ¿ì¿¡ À̸¦ ±¸Ã¼ÀûÀ¸·Î »ç¿ëÇÏ´Â µ¥´Â ÇÑ°è°¡ ÀÖ¾ú´Ù. ±×·¯´ø Áß¿¡ µðÀÚÀÎ ÆÐÅÏÀ» º¸¾Ò°í, µðÀÚÀÎ ÆÐÅÏÀº ³ª¿¡°Ô ´ÞÄÞÇÑ ²ÜÀ» ÁÖ¾ú´Ù. ù È£¿¡¼­µµ ¾ð±ÞÇßµíÀÌ µðÀÚÀÎ ÆÐÅÏÀº °´Ã¼ÁöÇ⠽ýºÅÛ µðÀÚÀνÃÀÇ Àç»ç¿ë¼º ½ÇÁúÀûÀ¸·Î Á¦°øÇÒ ¼ö ÀÖ´Ù´Â °ÍÀ» º¸¿© ÁÖ¾ú±â ¶§¹®ÀÌ´Ù.

³ª´Â µðÀÚÀÎ ÆÐÅÏ¿¡ °ü½ÉÀÌ ÀÖ´Â ¸¹Àº »ç¶÷µéÀÌ ÀÌ ±ÛÀ» ÀÐ°í ¡®¾î¼±¸¡¯, ¡®Àú¼±¸¡¯ ÇØ ÁÖ¾úÀ¸¸é ÁÁ°Ú´Ù.  ±× ÀÌÀ¯´Â µÎ °¡Áö´Ù. Çϳª´Â ÀÌ ±ÛÀ» Àд »ç¶÷µé¿¡ ´ëÇÑ ºÐÀ§±â¸¦ ÆľÇÇÏ´Â °ÍÀÌ ÇϳªÀÌ°í, ´Ù¸¥ Çϳª´Â ³»°¡ Àß ¸ø ÀÌÇØÇÏ°í ÀÖ´Â ºÎºÐ¿¡ ´ëÇÑ °íħÀ» ¹Þ±â À§Çؼ­´Ù. ±×¸®°í, °³ÀÎÀûÀ¸·Î´Â ÀÌ ±ÛÀÌ ¿ì¸®³ª¶óÀÇ µðÀÚÀÎ ÆÐÅÏ È°¼ºÈ­¿¡ ±âÆøÁ¦°¡ µÇ¾úÀ¸¸é ÇÏ´Â Å« ¹Ù¶÷ÀÌ ÀÖ´Ù.  ´ÙÀ½ È£¿¡´Â ¾î¶² °ÍÀ» °¡Áö°í À̾߱⸦ Ç®¾î°¥Áö ±â´ëÇØ ÁÖ˜Þ!!  ^(^

 

Âü°í ¹®Çå 

[1] Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns, Elements of Resuable Object-Oriented Software, Addison-Wesley, 1995

[2] Mark Grand, Patterns in Java, volume 1, Wiley, 1998

[3] Nigel Warren, Philip Bishop, Java in Practice, Design Styles and Idioms for Effective Java, Addison-Wesley, 1999

[4] Pattern languages of Program Design 3, edited by Robert Martin, Dirk Riehle, Frank Bschmann, Addison-Wesley, 1998


(÷ºÎ ±Û)

ÀÌ ±ÛÀº ¡°ÀÎÅÍÆäÀ̽º(Interface)¡±¿¡ ´ëÇÑ ÀÌÇØ°¡ ¾øÀÌ´Â ÀÌÇØÇϱⰡ ½±Áö ¾ÊÀ» °Å¶õ »ý°¢ÀÌ µç´Ù. ÇÏÁö¸¸ ÀÎÅÍÆäÀ̽º¶õ ÁÖÁ¦°¡ ±×¸® ½±°Ô µÇ¾îÁú ¼ö ÀÖ´Â °ÍÀº ¾Æ´Ï¶ó°í »ý°¢ÇÑ´Ù. ÀÌ ±ÛÀ» ¾²±â ½ÃÀÛÇÑ Ãʱ⿡´Â ÀÌ·± Á¡¿¡ ÁÖÀǸ¦ ±â¿ïÀÌÁö ¸øÇß´Ù°¡ ±ÛÀ» ¾²±â ½ÃÀÛÇÏ¿© ¸¶°¨ÀÏÀÌ ´Ù°¡¿À¸é¼­ ±× Á߿伺ÀÌ ´À²¸Áö±â ½ÃÀÛÇß´Ù. °³ÀÎÀûÀ¸·Îµµ ÇÑ ¹ø Á¤¸®ÇÏ°í ³Ñ¾î°¡°í ½ÍÀº ¿å½ÉÀÌ ÀÖ´Â ÁÖÁ¦´Ù. 

°³ÀÎÀûÀ¸·Î´Â ÀÎÅÍÆäÀ̽º¿¡ ´ëÇÑ °ÍÀÌ ¾î´À Á¤µµ Àß ÀÌÇØÇϱâ À§Çؼ­´Â ¡°Abstraction¡±, ¡°Abstract Data Type¡±, ¡°Type À̷С± µî¿¡ ´ëÇÑ ÀÌÇØ°¡ ¼±ÇàµÇ¾î¾ß ÇÒ °Å¶ó »ý°¢À» ÇÏ°í ÀÖ´Ù.  ÀÌ ºÎºÐ¿¡ ´ëÇÑ ÃæºÐÇÑ Áغñ¸¦ ÇÏÁö ¸øÇÑ Á¡¿¡ ´ëÇؼ­ ÀÌ ±ÛÀ» Àд ºÐµé¿¡°Ô ¹Ì¾ÈÇÑ ¸¶À½ÀÌ ¸¹´Ù. »õ·Î¿î ÁÖÁ¦°¡ »ý°åÀ¸´Ï, ÀÌ ºÎºÐ¿¡ ´ëÇÑ °ÍÀ» ´ÙÀ½ È£¿¡´Â ÃæºÐÈ÷ ¹Ý¿µÇÏ¿© °ü·Ã ³»¿ë¿¡ ´ëÇÑ ±ÛÀ» ½ÇÀ» ¼ö ÀÖµµ·Ï ³ë·ÂÇÏ°Ú´Ù. ¿©±â¼­´Â ÀÚ¹Ù ¾ð¾î¸¦ ÀÌ¿ëÇÏ¿© ÄÚµå ±¸ÇöÀÌ µÇ¾î ÀÖÀ¸´Ï, °£´ÜÇÏ°Ô ÀÌÇØÇÒ ¼ö ¹æµµ·Î ÀÚ¹Ù ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ ¼³¸íÇØ ³õÀº Ã¥ÀÇ ¡°interface¡± °ü·Ã ³»¿ëÀ» Âü°í Çϱ⠹ٶõ´Ù.


(±Û Èıâ)

°´Ã¼ÁöÇâ ´º½º·¹ÅÍÀÇ ¡°¹¯°í ´äÇϱ⡱¶õ¿¡ À¯È­½Ä´ÔÀÌ µðÀÚÀÎ ÆÐÅÏ¿¡ ´ëÇؼ­ Çѱ۷ΠµÈ Âü°í ¹®¼­³ª »çÀÌÆ®¸¦ ÃßõÇØ ÁÙ °ÍÀ» ¿äûÇÑ ÀûÀÌ ÀÖ¾ú½À´Ï´Ù. ÀÌ¿¡ ´ëÇؼ­ Àú´Â ¾ø´Ù¶ó°í ´äÀ» ÇØ ÁÖ¾ú´Âµ¥, ¼­¿µÁØ´ÔÀÌ ¸¶¼Ò 3¿ùÈ£¿¡ µðÀÚÀÎÆÐÅÏ Æ¯Áý±â»ç°¡ ÀÖ´Ù´Â Á¤º¸¸¦ ¾Ë·Á Á̴ּõ±º¿ä. ±×·¡¼­, °ð È®ÀÎ ÀÛ¾÷¿¡ µé¾î°¬½À´Ï´Ù. °³ÀÎÀûÀ¸·Î ¸ð¸£°í ÀÖ¾ú´ø »ç½ÇÀ̾ú°Åµç¿ä. ¸¶¼Ò¿¡ ½Ç¸° ±ÛÀ» º¸°í ÇÑ ¸¶µð ÇØ¾ß °Ú±â¿¡ ¿©±â¿¡ À̸® ±ÛÀ» Àû´Â °ÍÀÔ´Ï´Ù.

Ȥ½Ã ÀÌ ±ÛÀ» Àд ºÐµé Áß¿¡ µðÀÚÀÎ ÆÐÅÏ¿¡ °ü½ÉÀÌ ÀÖÀ¸½Ã´Ù¸é Á¦°¡ Âü°í¹®Çå [2]·Î ´Þ¾Æ ³õÀº ¡°Patterns in Java¡±¶ó´Â Ã¥À» ¾Æ½Ç °Ì´Ï´Ù.  ¸¶¼Ò¿¡ ¼Ò°³ µÇ¾î ÀÖ´Â ÆÐÅÏ°ú °ü·ÃµÈ ³»¿ëÀº °ÅÀÇ ÀÌ ³»¿ëÀ» ±×´ë·Î µû¶úÀ¸¸ç, Ŭ·¡½º ´ÙÀ̾î±×·¥µµ ÀÌ Ã¥ÀÇ °ÍÀ» °ÅÀÇ ±×´ë·Î »ç¿ëÇß´õ±º¿ä. ´Ù¸¥ Ã¥ÀÇ ³»¿ëÀ» Âü°íÇÑ´Ù´Â Ãø¸é¿¡¼­´Â ¾Æ¹« ¹®Á¦°¡ ¾ø½À´Ï´Ù. ¿©±â¼­ ¹®Á¦´Â ¾î´À Ã¥À» Âü°í Çß´Ù´Â À̾߱⵵ ¾ø°í ±×´ë·Î ¿Å°Ü ³õÀº Ŭ·¡½º ´ÙÀ̾î±×·¥µéµµ Àß ¸ø Ç¥±âµÇ¾î ¼³¸í°ú ´Ù¸£°Ô µÇ¾î ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. ÀÌ °ÍÀº ³Ê¹« ¹«Ã¥ÀÓÇÑ Ã³»ç°¡ ¾Æ´Ñ°¡ »ý°¢À» ÇØ º¾´Ï´Ù. ¿ì¸® ³ª¶óÀÇ °³¹ßÀÚµéÀÌ °¡Àå ¸¹ÀÌ º»´Ù´Â Àü¹® ÀâÁö¿¡¼­ ÀÌ·± ½ÄÀÇ ³»¿ëÀ» ¾Æ¹« »ý°¢ ¾øÀÌ Áö¸é¿¡ ½Ç¾ú´Ù´Â °ÍÀÌ µµµ¥Ã¼°¡ ³³µæÀÌ °¡Áö ¾Ê´õ±º¿ä. ÀÚ½ÅÀÇ ÀÌÇظ¦ ¹ÙÅÁÀ¸·Î ¾º¿© Á³´Ù±âº¸´Ù´Â ´Ù¸¥ »ç¶÷ÀÇ »ý°¢À» ±×´ë·Î ÀÚ½ÅÀÇ °ÍÀÎ ¾ç »ç¿ëÇؼ­, ÇÑ Ã¥¿¡¼­ ÁÖÀåÇÏ°í ÀÖ´Â ³»¿ëÀ» ±× °ÍÀÌ ÀüºÎÀÎ °Íó·³ À̾߱âÇÏ´Â ¾îó±¸´Ï ¾ø´Â À̾߱â Àü°³¸¦ ÇÏ°í ÀÖ´Â °ÍÀÌÁÒ. ±×·¯´Ï Àß ¸ð¸£´Â µ¶ÀÚµéÀº ±× ³»¿ë¿¡ ÀÐ´Â´Ù¸é ¸¹Àº È¥¶õÀÇ ¼ÒÁö°¡ ÀÖÀ» °ÍÀÔ´Ï´Ù.

»ç½Ç °´Ã¼ÁöÇâ ´º½º·¹Å͸¦ ¹ß°£ÇÏ´Â ÀúÈñµéµµ ÀÌ·± ¹®Á¦¿¡ ¾ÆÁÖ Á¶½ÉÀ» ÇØ¾ß ÇÒ °ÍÀ̶õ »ý°¢À» ÇÏ°í ÀÖ½À´Ï´Ù. Á¦°¡ ±ÛÀ» ¾²¸é¼­µµ ¹Ýº¹ÀûÀ¸·Î ¸»¾¸À» µå¸®Áö¸¸, À߸øµÈ °ÍÀº ¹Ù·Î¹Ù·Î ¿¬¶ôÀ» ÁÖ½Ã¸é °ð ¼öÁ¤À» Çϵµ·Ï ÇÏ°Ú½À´Ï´Ù.


ÀÌ ±Û¿¡»ðÀÔµÈ Å¬·¡½º ´ÙÀ̾î±×·¥Àº ¡°Plastic Software¡±ÀÇ UML ¸ðµ¨¸µ ÅøÀÎ ¡°PLASTIC 2.0¡±À» ÀÌ¿ëÇÏ¿©±×·È´Ù.


 oonewsletter - 2000/2/29