1-1.°´Ã¼ ÁöÇâ

1.¼ÒÇÁÆ®¿þ¾î À§±â

ÃʱâÀÇ ÄÄÇ»ÅÍ´Â °í°¡ÀÇ Àåºñ¿©¼­ °úÇÐ, °øÇÐ¿ë µîÀÇ Á¦ÇÑÀûÀÎ ºÐ¾ß¿¡¸¸ »ç¿ëµÇ¾ú´Ù. Çϵå¿þ¾îÀÇ ¼º´ÉÀÌ Çâ»óµÇ°í °¡°Ýµµ Àú·ÅÇØÁ® ÀÏ»ó »ýÈ°¿¡±îÁö ÀÀ¿ë ¹üÀ§°¡ ³Ð¾îÁö¸é¼­ ´õ ¸¹Àº ¼ÒÇÁÆ®¿þ¾î°¡ ÇÊ¿äÇØÁ³´Ù. ±âº»ÀûÀÎ ¼º´ÉÀ̳ª ¾ÈÁ¤¼ºÀº ¹°·ÐÀÌ°í ¿¹»Ú°í Æí¸®ÇÑ ÇÁ·Î±×·¥À» ¿øÇß´Ù.

¾çÀûÀ¸·Î ÁúÀûÀ¸·Î ¼ÒÇÁÆ®¿þ¾î¿¡ ´ëÇÑ ¿ä±¸´Â ´ëÆø Áõ°¡ÇßÁö¸¸ °³¹ß ÀηÂÀÌ ºÎÁ·ÇÏ°í »ý»ê¼ºÀÌ ³·¾Æ º¹Àâµµ¿¡ °É¸Â´Â ½Å·Ú¼ºÀ» È®º¸ÇÏÁö ¸øÇß´Ù. ±âÁ¸ÀÇ ÈÄÁøÀûÀÎ ¹æ¹ýÀ¸·Î´Â °íÇ°ÁúÀÇ ÇÁ·Î±×·¥À» ½Å¼ÓÇÏ°Ô ¸¸µé±â ¾î·Á¿ü´Ù. ¼ÒÇÁÆ®¿þ¾î°¡ Çϵå¿þ¾îÀÇ ¹ßÀüÀ» µû¶ó°¡Áö ¸øÇÏ´Â Çö»óÀ» ¼ÒÇÁÆ®¿þ¾î À§±â(Software Crisis)¶ó°í ÇÑ´Ù.

Çϵå¿þ¾î´Â 18 °³¿ù¸¶´Ù 2¹è¾¿ ±âÇϱ޼öÀûÀ¸·Î »¡¶óÁ® 10³â¿¡ 80¹è³ª ¼º´É Çâ»óÀ» ´Þ¼ºÇßÁö¸¸ ¼ÒÇÁÆ®¿þ¾îÀÇ ¹ßÀüÀº À̸¦ µû¸£Áö ¸øÇß´Ù. ÀýÂ÷½Ä ÇÁ·Î±×·¡¹Ö ¹æ¹ýÀº ¹®Á¦¸¦ Áß½ÉÀ¸·Î Äڵ带 ÀÛ¼ºÇϴµ¥ Çö½ÇÀÇ ¹®Á¦°¡ ³Ê¹« Ư¼öÇؼ­ ÀÌ¹Ì ¸¸µç Äڵ带 Àç»ç¿ëÇϱ⠾î·Á¿ü´Ù. ¸Å¹ø Äڵ带 »õ·Î ÀÛ¼ºÇÏ´Ù º¸´Ï »ý»ê¼ºÀÌ ³·°í °í±Þ Àηµµ ºÎÁ·ÇØ ¼ÒÇÁÆ®¿þ¾îÀÇ ÁúÀº °¥¼ö·Ï ¶³¾îÁ³´Ù.

Çϵå¿þ¾î´Â óÀ½ºÎÅÍ ´Ù½Ã ¸¸µå´Â ½ÄÀÌ ¾Æ´Ï¶ó ÀÌ¹Ì Àß ¸¸µé¾îÁø Æ®·£Áö½ºÅÍ, ÀúÇ×, IC °°Àº ºÎÇ°À» Á¶¸³ÇÏ´Â ½ÄÀÌ´Ù. ºÎÇ°ÀÇ ½Å·Ú¼ºÀÌ È®º¸µÇ¾î ÀÖÀ¸´Ï Á¶¸³ÀÌ °£´ÜÇÏ¸ç °³¹ß ±â°£ÀÌ Âª°í ¿ÏÁ¦Ç°ÀÇ Áúµµ ÈǸ¢ÇÏ´Ù. ¹Ý¸é ¼ÒÇÁÆ®¿þ¾î´Â ¾ðÁ¦³ª óÀ½ºÎÅÍ ´Ù½Ã °³¹ßÇÏ´Â ½ÄÀ̶ó ¿À·¡ °É¸®°í ½Å·Ú¼ºµµ ¶³¾îÁø´Ù.

ÀÌ·± À§±â »óȲÀ» Ÿ°³Çϱâ À§ÇØ Çа迡¼­´Â ¿©·¯ °¡Áö »õ·Î¿î °³¹ß ¹æ¹ýÀÌ Á¦½ÃµÇ¾ú´Ù. ±× Áß °¡Àå Ź¿ùÇÑ ¹æ¹ýÀ¸·Î °øÀιÞÀº °ÍÀÌ ¹Ù·Î °´Ã¼ ÁöÇâ ÇÁ·Î±×·¡¹Ö(Object Oriented Programming)ÀÌ´Ù. ÀýÂ÷°¡ ¾Æ´Ñ µ¥ÀÌÅ͸¦ Áß½ÉÀ¸·Î ÇÏ¿© Çö½ÇÀÇ »ç¹°À» °´Ã¼·Î Á¤ÀÇÇÏ°í Àß ¸¸µé¾îÁø °´Ã¼¸¦ Á¶¸³ÇÏ¿© ÇÁ·Î±×·¥À» ¿Ï¼ºÇÏ´Â ¹æ½ÄÀÌ´Ù.

ÀüÀÚ »ó°¡¿¡ °¡¸é °¢Á¾ ÀüÀÚ ºÎÇ°°ú Á¶¸³ ¼³¸í¼­°¡ Æ÷ÇÔµÈ ¶óµð¿À Á¶¸³ Å°Æ®¸¦ ÆÇ´Ù. Çϵå¿þ¾î¿¡ ´ëÇÑ º°´Ù¸¥ Áö½ÄÀÌ ¾ø¾îµµ ¼³¸í¼­¸¦ µû¶ó ºÎÇ°À» ¹èÄ¡ÇÏ°í ³³¶«¸¸ ÇÏ¸é µÈ´Ù. ÁßÇлý Á¤µµ¸¸ µÇµµ ºÎÇ°ÀÇ ¿ªÇÒÀ» ´ëÃæ ¾Ë°í ÀÖ¾î ¶óµð¿À³ª ¹«Àü±â Á¤µµ´Â ½±°Ô ¸¸µé ¼ö ÀÖ´Ù. ºÎÇ°À» Á¶¸³¸¸ ÇÏ¸é µÇ´Ï »ý»ê¼ºÀÌ ³ôÀºµ¥ ¼ÒÇÁÆ®¿þ¾îµµ ÀÌ·±½ÄÀ¸·Î ¸¸µé¾î¾ß ÇÑ´Ù.

°´Ã¼´Â ÇÊ¿äÇÑ ¸ðµç °ÍÀ» ÀÚüÀûÀ¸·Î Ç°°í ÀÖ¾î µ¶¸³ÀûÀ̸ç ÀçÈ°¿ë¼ºÀÌ ³ô´Ù. ±×·¡¼­ ÇÑ ¹ø Àß ¸¸µé¾î ³õÀ¸¸é ´Ù¸¥ ÇÁ·ÎÁ§Æ®¿¡µµ ½±°Ô »ç¿ëÇÒ ¼ö ÀÖ¾î »ý»ê¼ºÀÌ ±ØÀûÀ¸·Î Çâ»óµÈ´Ù. °´Ã¼ ÁöÇâÀ» ÇѸ¶µð·Î Á¤ÀÇÇÏÀÚ¸é Á¶¸³½Ä ¼ÒÇÁÆ®¿þ¾î °³¹ß ¹æ¹ýÀÌ´Ù. ¸ÖƼ¹Ìµð¾î, ³×Æ®¿öÅ©, ±×·¡ÇÈ µîÀÇ ±â´ÉÀ» °¡Áø °´Ã¼¸¦ ôô Á¶¸³ÇÏ¿© º¹ÀâÇÑ ÇÁ·Î±×·¥À» ½±°Ô ¸¸µé ¼ö ÀÖ´Ù.

¸ÂÃãÇüÀÎ ÀýÂ÷½Ä¿¡ ºñÇØ ¼º´ÉÀº ¾à°£ ¶³¾îÁöÁö¸¸ Çϵå¿þ¾îÀÇ ¹ßÀüÀÌ ¿ö³« »¡¶ó ¹«½ÃÇÒ¸¸ÇÏ´Ù. Çö´ëÀÇ ÇÁ·Î±×·¡¹ÖÀº ¼º´Éº¸´Ù´Â ½Å¼ÓÇÑ °³¹ß°ú ½Å·Ú¼º, À¯Áö º¸¼öÀÇ ÆíÀǼºÀÌ ´õ Áß¿äÇÏ´Ù. ÀΰǺñº¸´Ù Çϵå¿þ¾î°¡ ÈξÀ ´õ Àú·ÅÇÏ´Ï ¼Óµµ¸¦ Á¶±Ý Èñ»ýÇÏ´õ¶óµµ ÃÖ´Ü ±â°£¿¡ ½Ñ ºñ¿ëÀ¸·Î °³¹ßÇÏ´Â °ÍÀÌ ´õ À̵æÀÌ¸ç ±× ÇØ´äÀÌ ¹Ù·Î °´Ã¼ ÁöÇâÀÌ´Ù.

2.OOPÀÇ Æ¯Â¡

°´Ã¼ ÁöÇâÀº ÀÌÀü ¹æ½ÄÀÎ ÀýÂ÷Àû ÇÁ·Î±×·¡¹Ö°ú´Â ¹®Á¦¸¦ Ǫ´Â ¹æ½ÄÀÌ ¿ÏÀüÈ÷ ´Ù¸£´Ù. °´Ã¼ ÁöÇâÀÇ ÁÖ¿ä Ư¡Àº ´ëü·Î ´ÙÀ½°ú °°µÇ ÇÐÀÚ¿¡ µû¶ó ¸î °¡Áö Ư¡À» ´õ Ãß°¡Çϱ⵵ ÇÏ°í °¢ Ư¡ÀÇ ¹üÁÖ¿¡ ´ëÇؼ­µµ °ßÇØ°¡ Á¶±Ý¾¿ ´Ù¸£´Ù.

 

¡á ĸ½¶È­(Encapsulation) : Ç¥ÇöÇÏ°íÀÚ ÇÏ´Â ÀÚ·á(Data)¿Í µ¿ÀÛ(Function)À» ÇϳªÀÇ ´ÜÀ§·Î ¹­¾î °´Ã¼(Object)¸¦ Á¤ÀÇÇÑ´Ù. ´ë»óÀÇ Æ¯Â¡À» ³ªÅ¸³»´Â µ¥ÀÌÅÍ¿Í µ¿ÀÛÀ» ó¸®ÇÏ´Â ÇÔ¼ö°¡ ÇϳªÀÇ ¹­À½ÀÌ µÇ¾î µ¶¸³ÀûÀÎ ºÎÇ°ÀÌ µÈ´Ù. Àç»ç¿ë¼ºÀÌ ³ô¾Æ °´Ã¼¸¦ ¼ÒÇÁÆ®¿þ¾î IC¶ó°í ºÎ¸¥´Ù.

¡á Á¤º¸ ÀºÆó(Information Hiding) : °´Ã¼´Â ¿ÜºÎ¿¡¼­ »ç¿ëÇÏ´Â ±â´É¸¸ °ø°³ÇÏ°í ³»ºÎÀûÀÎ µ¿ÀÛÀº ¼û°Ü ½º½º·Î ¹æ¾îÇÑ´Ù. ¿ÜºÎ¿¡¼­ °´Ã¼ÀÇ »óŸ¦ ÇԺηΠ¹Ù²Ü ¼ö ¾ø¾î ¾ÈÁ¤¼ºÀÌ Çâ»óµÈ´Ù.

¡á Ãß»óÈ­(Abstraction) : Çö½ÇÀÇ »ç¹°À» °´Ã¼·Î Á¤ÀÇÇϱâ À§ÇØ Æ¯¼º°ú µ¿ÀÛÀ» Á¶»çÇÏ´Â °ÍÀ» µ¥ÀÌÅÍ ¸ðµ¨¸µ ¶Ç´Â °³³äÈ­¶ó°í ÇÑ´Ù. ¸ðµ¨¸µ¿¡ ÀÇÇØ ¼Ó¼º°ú µ¿ÀÛÀÇ ¸ñ·ÏÀ» ÀÛ¼ºÇÏ°í °ø°³ÇÒ ±â´É°ú ¼û±æ ±â´ÉÀ» °áÁ¤ÇÏ¿© °´Ã¼·Î Á¤ÀÇÇÑ´Ù. ¿ÜºÎ¿¡¼­´Â º¹ÀâÇÑ ³»ºÎ¸¦ º¼ ¼ö ¾ø°í °ø°³µÈ ¼Ò¼öÀÇ ÀÎÅÍÆäÀ̽º¸¸ º¼ ¼ö ÀÖ¾î »ç¿ë¹ýÀÌ °£´ÜÇÏ¸ç °´Ã¼¸¦ ¼öÁ¤Çϱ⵵ ¿ëÀÌÇÏ´Ù.

¡á »ó¼Ó(Inheritance) : ÀÌ¹Ì ¸¸µé¾îÁø Ŭ·¡½º¸¦ ÆÄ»ý½ÃÄÑ »õ·Î¿î Ŭ·¡½º¸¦ Á¤ÀÇÇÑ´Ù. ÆÄ»ý Ŭ·¡½º´Â ±âÁ¸ Ŭ·¡½ºÀÇ ¸ðµç ¼Ó¼º°ú µ¿ÀÛÀ» ¹°·Á ¹ÞÀ¸¸ç »õ·Î¿î ±â´ÉÀ» Ãß°¡Çϰųª º¯°æÇÒ ¼öµµ ÀÖ´Ù. Çö½ÇÀÇ ¹®Á¦°¡ Ư¼öÇؼ­ ±âÁ¸ Ŭ·¡½º°¡ ÀûÇÕÇÏÁö ¾ÊÀ» °æ¿ì »ó¼Ó¹Þ¾Æ Ãß°¡, ¼öÁ¤ÇÑ´Ù.

¡á ´ÙÇü¼º(Polymorphism) : ¶È°°Àº È£ÃâÀÌ¶óµµ »óȲ¿¡ µû¶ó, È£ÃâÇÏ´Â °´Ã¼¿¡ µû¶ó ´Ù¸¥ µ¿ÀÛÀ» ÇÒ ¼ö ÀÖ´Â ´É·ÂÀÌ´Ù. ½ÇÁ¦ ³»ºÎ ±¸ÇöÀº ´Ù¸£´õ¶óµµ °³³äÀûÀ¸·Î µ¿ÀÏÇÑ µ¿ÀÛÀ» ÇÏ´Â ÇÔ¼ö¸¦ ÇϳªÀÇ ÀÎÅÍÆäÀ̽º·Î ÀÏ°üµÇ°Ô È£ÃâÇÒ ¼ö ÀÖ´Ù.

 

OOPÀÇ Æ¯¼ºÀº óÀ½ º¸´Â »ç¶÷¿¡°Ô´Â ´ë´ÜÈ÷ ³­ÇØÇؼ­ ÀÌ ¼³¸í¸¸À¸·Î OOPÀÇ º»ÁúÀ» ÀÌÇØÇϱâ´Â ¹«Ã´ ¾î·Æ´Ù. °´Ã¼ ÁöÇâ Àüü¸¦ ´Ù °æÇèÇØ ºÁ¾ß ¾Ë ¼ö ÀÖ´Â ¾î·Á¿î ³»¿ëÀε¥ Áö±Ý ´çÀåÀº ½¬¿î ¸»·Î °³³ä¸¸ ÀÌÇØÇÏ°í ³Ñ¾î°¡ÀÚ.

 

Ư¡

°£´ÜÇÑ ¼³¸í

ĸ½¶È­

¹­´Â´Ù

Á¤º¸ ÀºÆó

¼û±ä´Ù

Ãß»óÈ­

Ç¥ÇöÇÑ´Ù

»ó¼Ó

Àç»ç¿ëÇÑ´Ù

´ÙÇü¼º

»óȲ¿¡ µû¶ó ´Þ¶óÁø´Ù.

 

¹°·Ð ÀÌ´Â ÀÌÇظ¦ À§ÇÑ ´ë·«ÀûÀÎ ºñÀ¯ÀÏ »Ó Á¤È®ÇÑ Á¤ÀÇ´Â ÈξÀ ´õ º¹ÀâÇÏ´Ù. Ư¼º Çϳª´ç 1 ~ 2°³ÀÇ ÀåÀ» ÇÒ¾ÖÇÏ¿© ÇнÀÇÏ°í ½Ç½ÀÇØ ºÁ¾ß Á¦´ë·Î ÀÌÇØÇÒ ¼ö ÀÖ´Ù.

3.OOP ¸Àº¸±â

ÀýÂ÷½Ä(Procedural) ÇÁ·Î±×·¡¹ÖÀº ¹®Á¦¸¦ Ǫ´Â ÀýÂ÷¿¡ µû¶ó Äڵ带 ÀÛ¼ºÇÑ´Ù. ¹®Á¦¸¦ ºÐ¼®ÇÏ°í ÇØ°á¿¡ ÇÊ¿äÇÑ ¸í·ÉÀ» ¼±Á¤ÇÏ¿© ¿¬»ê¹®, Á¶°Ç¹®, ¹Ýº¹¹® µîÀÇ ¹®¹ýÀ¸·Î Ç¥ÇöÇÏ¸ç ¼ø¼­¿¡ ¸Â°Ô ¸í·ÉÀ» ¹èÄ¡ÇÏ¿© ÇÁ·Î±×·¥À» ¿Ï¼ºÇØ ³ª°¡´Â ¹æ½ÄÀÌ´Ù. ÀڷᱸÁ¶¿¡ ÁßÁ¡À» µÐ´Ù°í ÇÏ¿© ±¸Á¶Àû(Structural) ÇÁ·Î±×·¡¹Ö ±â¹ýÀ̶ó°íµµ ÇÑ´Ù.

Å« ÀÛ¾÷Àº ±â´É¿¡ µû¶ó ´õ ÀÛÀº ÇÔ¼ö ´ÜÀ§·Î ³ª´©´Âµ¥ ÇÔ¼ö ³»ºÎµµ ÀýÂ÷°¡ Áß½ÉÀÌ´Ù. ¿¹¸¦ µé¾î ¼ºÀû ó¸® ÇÁ·Î±×·¥À» ¸¸µç´Ù¸é ÀԷºÎ, °è»êºÎ, Ãâ·ÂºÎ·Î ºÐÇÒÇÏ°í °è»êºÎ´Â ÃÑÁ¡À» ±¸ÇÏ´Â ÄÚµå¿Í Æò±Õ, ¼®Â÷¸¦ ³»´Â ÄÚµå·Î ºÐÇÒÇÑ´Ù. °Å´ëÇÑ ¹®Á¦¸¦ ÇÔ¼ö, ¸í·É, ±¸¹®ÀÇ ÀÛÀº ´ÜÀ§·Î ³»·Á°¡¸ç °³¹ßÇϱ⠶§¹®¿¡ ÀýÂ÷½ÄÀ» ÇÏÇâ½Ä(Top Down)À̶ó°í ÇÑ´Ù.

C ¾ð¾î´Â ÀÌ ¹æ¹ýÀ¸·Î ÇÁ·Î±×·¥À» ÀÛ¼ºÇÑ´Ù. 1±Ç¿¡¼­ ¸¸µé¾ú´ø ¼ýÀÚ ¸ÂÃ߱⠰ÔÀÓÀÎ randnumÀº ³­¼ö »ý¼º -> ÀÔ·Â -> ºñ±³ ÈÄ ¸Þ½ÃÁö Ãâ·Â °úÁ¤À» ¸ÂÃâ ¶§±îÁö ¹Ýº¹ÇÑ´Ù. ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ´Â ÀýÂ÷°¡ Áß½ÉÀÌ¸ç ´õ Å« ÇÁ·Î±×·¥µµ ¸¶Âù°¡ÁöÀÌ´Ù. ÀýÂ÷½ÄÀº ±¸Á¶°¡ °£°áÇÏ°í ¼º´ÉÀÌ ÁÁÁö¸¸ ±Ô¸ð°¡ Ä¿Áú¼ö·Ï º¹Àâµµ°¡ Áõ°¡ÇØ È®ÀåÀÌ ¾î·Æ°í À¯Áö, º¸¼ö ºñ¿ëÀÌ ¸¹ÀÌ µç´Ù.

ÀÌ¿¡ ºñÇØ °´Ã¼ ÁöÇâ ÇÁ·Î±×·¡¹ÖÀº °´Ã¼¿¡ ÃÊÁ¡À» µÎ°í ¹®Á¦¸¦ ÇØ°áÇÑ´Ù. ÇÁ·Î±×·¥Àº Çö½Ç ¼¼°èÀÇ ¸ð¹æÀ̸ç Äڵ忡¼­ ´Ù·ç´Â ¸ðµç »ç¹°Àº Ãß»óÀûÀÎ °´Ã¼·Î ¸ðµ¨¸µµÈ´Ù. randnum ¿¹Á¦ÀÇ ÇÙ½É »ç¹°Àº ÄÄÇ»ÅÍ°¡ ¹«ÀÛÀ§·Î »ý¼ºÇÑ ³­¼öÀÌ´Ù. ³­¼ö´Â ¼ýÀÚ°ªÀ» ¼Ó¼ºÀ¸·Î °¡Áö°í ³­¼ö¸¦ »ý¼ºÇÏ´Â µ¿ÀÛ°ú ³­¼ö¿Í »ç¿ëÀÚÀÇ ÀԷ°ªÀ» ºñ±³ÇÏ´Â µ¿ÀÛÀ¸·Î ±¸¼ºµÈ´Ù. ÀÌ ¼Ó¼º°ú µ¿ÀÛÀ» ¹­°í ÇÊ¿äÇÑ ÀÎÅÍÆäÀ̽º¸¦ ¿ÜºÎ·Î °ø°³ÇÏ¿© °´Ã¼·Î Ãß»óÈ­ÇÑ´Ù.

»ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ ¼ýÀÚµµ °´Ã¼ÀÌ´Ù. ÀԷ¹ÞÀº °ª°ú Áú¹®Çϱâ, ÀԷ¹ޱ⠵îÀÇ µ¿ÀÛÀ» °¡Áö¸ç ¿ª½Ã °´Ã¼·Î ĸ½¶È­ÇÑ´Ù. ºÎÇ°ÀÌ µÇ´Â °´Ã¼¸¦ ¿Ï¼ºÇÑ ÈÄ ÀÌ ºÎÇ°À» Á¶¸³ÇÏ°í °´Ã¼³¢¸® »óÈ£ ÀÛ¿ëÇϵµ·Ï ¿¬°áÇÏ¿© ÇÁ·Î±×·¥À» ¿Ï¼ºÇÑ´Ù. ºÎÇ°À» ¸ÕÀú ¸¸µé¾î ³õ°í°í ºÎÇ°À» Á¶¸³ÇÏ¿© »óÀ§ÀÇ ÇÁ·Î±×·¥À» ¿Ï¼º½ÃÄÑ ³ª°¡´Â ¹æ½ÄÀ» »óÇâ½Ä(Bottom Up)À̶ó°í ÇÑ´Ù.

ÀýÂ÷½ÄÀ¸·Î ÀÛ¼ºÇß´ø randnum ¿¹Á¦¸¦ °´Ã¼ ÁöÇâÀûÀ¸·Î ´Ù½Ã ÀÛ¼ºÇÏ¿© µÎ ¹æ½ÄÀ» ºñ±³ÇØ º¸ÀÚ. ¹®Á¦¸¦ Ǫ´Â ¹æ½ÄÀº ´Ù¸£Áö¸¸ ½ÇÇà °á°ú´Â ¿ÏÀüÈ÷ °°´Ù. ±¸°æ¸¸ ÇØ º¸´Â °ÍÀ̹ǷΠ¾ÆÁ÷ ¸ðµç ±¸¹®À» ´Ù ÀÌÇØÇÒ ÇÊ¿ä´Â ¾ø´Ù.

 

randnumOop

#include <stdio.h>

#include <cursor.h>

 

class RandNum

{

private:

     int num;

 

public:

     RandNum() { randomize(); }

     void Generate() { num = random(100) + 1; }

     BOOL Compare(int input) {

          if (input == num) {

              printf("¸ÂÃè½À´Ï´Ù.\n");

              return TRUE;

          } else if (input>num) {

              printf("ÀÔ·ÂÇÑ ¼ýÀÚº¸´Ù ´õ ÀÛ½À´Ï´Ù.\n");

          } else {

              printf("ÀÔ·ÂÇÑ ¼ýÀÚº¸´Ù ´õ Å®´Ï´Ù.\n");

          }

          return FALSE;

     }

};

 

class Ask

{

private:

     int input;

 

public:

     void Prompt() { printf("\nÁ¦°¡ ¸¸µç ¼ýÀÚ¸¦ ¸ÂÃç º¸¼¼¿ä.\n"); }

     BOOL AskUser() {

          printf("¼ýÀÚ¸¦ ÀÔ·ÂÇϼ¼¿ä(³¡³¾ ¶§´Â 999) : ");

          scanf("%d", &input);

          if (input == 999) {

              return TRUE;

          }

          return FALSE;

     }

     int GetInput() { return input; }

};

 

int main()

{

     RandNum R;

     Ask A;

 

     for (;;) {

          R.Generate();

          A.Prompt();

          for (;;) {

              if (A.AskUser()) {

                   exit(0);

              }

              if (R.Compare(A.GetInput())) {

                   break;

              }

          }

     }

}

 

ÀÌ ¼Ò½ºÀÇ RandNum, Ask°¡ Ŭ·¡½ºÀÌ°í Ŭ·¡½º·ÎºÎÅÍ ¸¸µé¾îÁø A, RÀÌ °´Ã¼ÀÌ´Ù. RandNumÀº »ý¼ºµÈ ³­¼ö¸¦ ±â¾ïÇÏ´Â num ¸â¹ö¿Í ³­¼ö¸¦ »ý¼ºÇÏ´Â Generate, ÀԷ°ª°ú ºñ±³ÇÏ´Â Compare ¸â¹ö ÇÔ¼ö¸¦ ĸ½¶È­ÇÑ´Ù. »ç¿ëÀڷκÎÅÍ °ªÀ» ÀԷ¹޴ Ask Ŭ·¡½º´Â ÀԷ°ªÀ» ÀúÀåÇÏ´Â input º¯¼ö¿Í ¾È³» ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏ´Â Prompt, Å°º¸µå·Î ÀԷ¹޴ AskUser, ÀÔ·ÂµÈ °ªÀ» Á¶»çÇÏ´Â GetInput ÇÔ¼ö¸¦ ĸ½¶È­ÇÑ´Ù.

°´Ã¼°¡ ¿Ï¼ºµÇ¸é mainÀº ºÎÇ°À» Á¶¸³ÇÏ¿© °´Ã¼µé³¢¸® »óÈ£ ÀÛ¿ëÇϵµ·Ï Äڵ带 ÀÛ¼ºÇÑ´Ù. ³­¼ö¸¦ »ý¼ºÇϰųª ÀÔ·ÂÀ» ¹Þ´Â ÀÛ¾÷Àº ½Å°æ¾²Áö ¾Ê°í 999°¡ ÀÔ·ÂµÉ ¶§±îÁö °ÔÀÓÀ» °è¼Ó ¹Ýº¹ÇÒ »ÓÀÌ´Ù. ÀýÂ÷½ÄÀÇ randnum ¿¹Á¦º¸´Ù ´õ ±æ¾îÁ³Áö¸¸ ±¸Á¶´Â ÁÁ¾ÆÁ® ´ÙÀ½°ú °°Àº ÀÌÁ¡ÀÌ ÀÖ´Ù.

 

¨ç ¸¸µé¾î ³õÀº °´Ã¼¸¦ Àç»ç¿ëÇϱ⠽±´Ù. RandNum, Ask ¸¦ Àç»ç¿ëÇÏ°í ½Í´Ù¸é Ŭ·¡½º Á¤ÀǺθ¸ °¡Á®°¡¸é µÈ´Ù. Ŭ·¡½º ³»ºÎ¿¡ ¸ðµç °ÍÀÌ Ä¸½¶È­µÇ¾î ÀÖ°í ¿ÜºÎ¿Í´Â Ãß»óÀûÀÎ ÀÎÅÍÆäÀ̽º·Î Åë½ÅÇϱ⠶§¹®ÀÌ´Ù. RandNumÀº Generate¸¸ È£ÃâÇÏ¸é ³­¼ö¸¦ ¸¸µé¾î num¿¡ ÀúÀåÇÏ°í Compare¸¦ È£ÃâÇÏ¸é ºñ±³ °á°ú¸¦ ¸®ÅÏÇÑ´Ù.

¨è ºÎÇ°ÀÇ ¾ÈÁ¤¼ºÀÌ ³ô¾ÆÁø´Ù. RandNumÀÇ num ¸â¹ö´Â ÀºÆóµÇ¾î ÀÖ¾î ¿ÜºÎ¿¡¼­ ÀÌ °ªÀ» ÇԺηΠº¯°æÇÒ ¼ö ¾ø´Ù. R.num = 1234; ´ëÀÔ¹®Àº ¿¡·¯ ó¸®µÇ¸ç ±×·¡¼­ ºÎÁÖÀÇÇÑ »ç¿ëÀÚ³ª ¿Àµ¿ÀÛÀ¸·ÎºÎÅÍ ½º½º·Î¸¦ ¹æ¾îÇÑ´Ù. ¿ÜºÎ¿¡¼­´Â ¿À·ÎÁö °ø°³µÈ ÀÎÅÍÆäÀ̽º¸¸ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

¨é È®À强ÀÌ °³¼±µÇ¾ú´Ù. Ask Ŭ·¡½º¿¡ ÀԷ°ªÀÇ À¯È¿¼ºÀ» Á¡°ËÇÏ´Â ±â´ÉÀ» ³Ö°í ½Í´Ù¸é AskUser ÇÔ¼ö¿¡ if Á¶°Ç¹®¸¸ ³ÖÀ¸¸é µÈ´Ù. ³»ºÎ ±¸Çö¸¸ ¹Ù²î¾úÀ» »Ó ¿ÜºÎ ÀÎÅÍÆäÀ̽º´Â º¯ÇÔÀÌ ¾øÀ¸¹Ç·Î mainÀº ÀüÇô ¿µÇâÀ» ¹ÞÁö ¾Ê´Â´Ù. È®ÀåÀÌ ½¬¿öÁ® À¯Áö, º¸¼öµµ Æí¸®ÇØÁø´Ù.

¨ê ºÎÇ°À» Á¶¸³ÇÏ´Â ½ÄÀÌ¶ó °³¹ß ¼Óµµ°¡ ºü¸£´Ù. RandNum, Ask Ŭ·¡½º°¡ ÀÌ¹Ì ¸¸µé¾îÁ® ÀÖ´Ù¸é mainÀº ´Ü ¸î ÁÙÀÇ Äڵ常À¸·Îµµ ÇÁ·Î±×·¥À» ¿Ï¼ºÇÒ ¼ö ÀÖ´Ù. Á¶¸³½ÄÀÌ¶ó °³¹ß ±â°£ÀÌ Âª°í ÀΰǺñ°¡ ÁÙ¾î ºñ¿ëÀÌ Àý°¨µÈ´Ù.

 

°´Ã¼ ÁöÇâÀº °£´ÜÈ÷ ¸»ÇØ ºÎÇ° Á¶¸³½ÄÀÌ¸ç ºÎÇ°ÀÌ µÇ´Â °´Ã¼¸¦ ¾ó¸¶³ª Àß ¸¸µå´Â°¡°¡ °ü°ÇÀÌ´Ù. ¹ü¿ë¼º, ¾ÈÀü¼º, ÀçÈ°¿ë¼º, È®À强 µîÀ» ÃæºÐÈ÷ °í·ÁÇؼ­ Á¤¹ÐÇÏ°Ô ¸¸µé¾î¾ß ÇÑ´Ù. C++ÀÇ ¸ðµç Ŭ·¡½º °ü·Ã ¹®¹ýÀº ÀÌ·± Á¶°ÇÀ» ¸¸Á·ÇÏ´Â °´Ã¼¸¦ Á¦ÀÛÇϱâ À§ÇÑ °ÍÀÌ´Ù.

ÈǸ¢ÇÑ ºÎÇ°À» ¸¸µå´Â °ÍÀº ¾ÆÁÖ ¾î·Á¿î ÀÏÀÌÁö¸¸ ÇÑ ¹ø¸¸ Àß ¸¸µé¾î ³õÀ¸¸é ¼ö¸¹Àº °³¹ßÀÚ°¡ ÀÌ ºÎÇ°À» Æí¸®ÇÏ°Ô È°¿ëÇÒ ¼ö ÀÖ´Ù. OOPÀÇ ±âº» öÇÐÀÌ ÀçÈ°¿ë¼ºÀÌ¸ç ºñ½ÁÇÑ Äڵ带 ¸Å¹ø ¸¸µéÁö ¸»°í µü ÇÑ ¹ø Á¦´ë·Î ¸¸µé¾î ³õ°í Àû±ØÀûÀ¸·Î ÀçÈ°¿ëÇÏÀÚ´Â °ÍÀÌ´Ù.

°´Ã¼ Á¦ÀÛÀÚ´Â ¿Ïº®ÇÑ ºÎÇ°À» ¸¸µé±â À§ÇØ »ó´çÇÑ ¼öÁØÀ̾î¾ß ÇÏ¸ç ºÒƯÁ¤ ´Ù¼öÀÇ »ç¿ëÀÚ¿Í ´Ù¾çÇÑ È¯°æ±îÁö °í·ÁÇÏ¿© Á¤¹ÐÇÏ°Ô Å×½ºÆ®ÇØ¾ß ÇÑ´Ù. ÀÌ·¸°Ô ¸¸µé¾îÁø ºÎÇ°Àº ÀçÈ°¿ëÀÌ ½¬¿ö Á¶¸³½ÄÀ¸·Î ´ë·®ÀÇ ¼ÒÇÁÆ®¿þ¾î¸¦ ½Å¼ÓÇÏ°Ô ¸¸µé ¼ö ÀÖ´Ù. ÃÖ»ó±ÞÀÇ ÀηÂÀÌ ¾Æ´Ï¾îµµ Á¶¸³ Á¤µµ´Â ¾î·ÆÁö ¾Ê´Ù. °á±¹ OOP´Â ¼ÒÇÁÆ®¿þ¾î Á¦ÀÛ¿¡ ÇÊ¿äÇÑ °³¹ßÀÚÀÇ ¼÷·Ãµµ¸¦ ¶³¾î¶ß·Á ¼ÒÇÁÆ®¿þ¾î À§±âÀÇ ÁÖ¿ä ¿øÀÎÀÎ Àη ºÎÁ· ¹®Á¦¸¦ ÇØ°áÇÑ´Ù.

°´Ã¼ ÁöÇâÀº ¹®Á¦¸¦ Ǫ´Â »ç°í ¹æ½ÄÀÇ ÇϳªÀÏ »Ó ƯÁ¤ ¾ð¾îÀÇ ±â´ÉÀÌ ¾Æ´Ï´Ù. °´Ã¼ ÁöÇâÀûÀÎ °³³ä¸¸ ÀÖ´Ù¸é C ¾ð¾î·Îµµ ±¸Á¶Ã¼³ª ¸ðµâ µîÀÇ ÀåÄ¡¸¦ È°¿ëÇÏ¿© °´Ã¼ ÁöÇâ ÇÁ·Î±×·¡¹ÖÀ» ÇÒ ¼ö ÀÖ´Ù. ÇÏÁö¸¸ ¾Æ¹«·¡µµ ¾ð¾î Â÷¿ø¿¡¼­ Ŭ·¡½º¸¦ Áö¿øÇÏ´Â C++ÀÌ ´õ È¿À²ÀûÀÌ´Ù. C·Î °´Ã¼ ÁöÇâÀÌ °¡´ÉÇÑ °Íó·³ C++·Î ÀýÂ÷Àû ÇÁ·Î±×·¡¹Öµµ °¡´ÉÇÏ´Ù. ±×·¡¼­ C++À» ¿ÏÀüÇÑ °´Ã¼ ÁöÇâÀÌ ¾Æ´Ñ È¥ÇÕÇü ¾ð¾î¶ó°í ÇÑ´Ù.

OOP´Â ÀýÂ÷½Ä¿¡ ºñÇØ ¼º´ÉÀÌ ¶³¾îÁø´Ù. ¿äÁòÀÇ ÄÄÇ»ÅÍ È¯°æ¿¡¼­´Â ½Å¼ÓÇÑ °³¹ß°ú ¾ÈÁ¤¼ºÀÌ ´õ Áß¿äÇϹǷΠ¼º´ÉÀ» À§ÇØ ÀýÂ÷½ÄÀ» °í¼öÇÒ ÇÊ¿ä´Â ¾ø´Ù. ¹Ý´ë·Î OOP°¡ ÃֽŠ°³¹ß ¹æ¹ýÀÌ´Ï ¹«Á¶°Ç OOP¿©¾ß ÇÑ´Ù´Â »ý°¢µµ ¹Ù¶÷Á÷ÇÏÁö ¾Ê´Ù. ÀýÂ÷½ÄÀº °í¸®Å¸ºÐÇÏ°í OOP°¡ ÃÖ»óÀ̶ó´Â À̺йýÀû »ç°í´Â °ï¶õÇÏ´Ù. µÎ ¹æ¹ýÀº ¸ñÀûÀÌ ´Ù¸¦ »ÓÀ̹ǷΠ»óȲ¿¡ ¸Â°Ô ¼±ÅÃÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù.