6-1.Ŭ·¡½º ¼±¾ð

6-1-1.Ŭ·¡½º

°´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹Ö ȯ°æ¿¡¼­ ÇÙ½É ÁÖÀΰøÀº Ŭ·¡½ºÀÌ´Ù. ÇÔ¼ö, º¯¼ö, »ó¼ö µî ¸ðµç °ÍÀÌ Å¬·¡½º¿¡ ¼Ò¼ÓµÇ¸ç ¾î¶² °Íµµ Àü¿ªÀ¸·Î Á¸ÀçÇÒ ¼ö ¾ø´Ù. ´å³ÝÀÇ ¶óÀ̺귯¸®´Â Ŭ·¡½ºÀÇ ÁýÇÕÀÌ°í string, int ŸÀÔÁ¶Â÷ Ŭ·¡½º·Î Ç¥ÇöµÈ´Ù. µû¶ó¼­ Ŭ·¡½º¸¦ Á¦´ë·Î ¸ð¸£°í´Â ÇÁ·Î±×·¡¹ÖÀ» ÇÒ ¼ö ¾ø´Ù

Ŭ·¡½º´Â °ü·ÃÀÖ´Â º¯¼ö¿Í ÇÔ¼öÀÇ ÁýÇÕÀÌ¸ç ½Ç¼¼°èÀÇ »ç¹°À» Ç¥ÇöÇÑ´Ù. º¯¼ö´Â »óŸ¦ Ç¥ÇöÇÏ°í ÇÔ¼ö´Â µ¿ÀÛÀ» ±â¼úÇÑ´Ù. »óÅÂ¿Í µ¿ÀÛÀ» ÇϳªÀÇ Å¸ÀÔÀ¸·Î ¹­¾î ¼±¾ðÇÑ °ÍÀÌ Å¬·¡½ºÀÌ´Ù. Ŭ·¡½º¿¡ ¼ÓÇÑ º¯¼ö¸¦ Çʵå(Field), ÇÔ¼ö¸¦ ¸Þ¼­µå(Method)¶ó°í ºÎ¸¥´Ù. ½Ç¼¼°èÀÇ »ç¹°À» °üÂûÇØ º¸¸é °íÀ¯ÇÑ »óÅÂ¿Í µ¿ÀÛÀ» °¡Áø´Ù.

 

»ç¹°

»óÅÂ

Çൿ

»ç¶÷

ÇǺλö, Å°, ³ªÀÌ, ¼ºº°, À̸§

»ý°¢ÇÑ´Ù, °øºÎÇÑ´Ù, ¸»ÇÑ´Ù, °È´Â´Ù.

Â÷

¹è±â·®, Â÷Á¾, ¿¬·áÀÇ Á¾·ù

´Þ¸°´Ù, ¸ØÃá´Ù, °íÀå³­´Ù, ÁüÀ» ½Æ´Â´Ù.

³ëÆ®ºÏ

CPU, ¾×Á¤ Å©±â, Çϵåµð½ºÅ© ¿ë·®

ºÎÆÃÇÑ´Ù, ÃæÀüÇÑ´Ù, CD-ROMÀ» Àд´Ù.

À©µµ¿ì

Å©±â, À§Ä¡, ¹è°æ»ö, ¾ÆÀÌÄÜ

À̵¿ÇÑ´Ù, ÃÖ´ëÈ­µÈ´Ù, ¼û´Â´Ù.

 

»ç¹°ÀÇ Æ¯¼ºÀ» Á¤¸®ÇÏ¿© Çʵå¿Í ¸Þ¼­µå·Î Ç¥ÇöÇÏ´Â °úÁ¤ÀÌ Ãß»óÈ­ÀÌ´Ù. Ãß»óÈ­µÈ °á°ú¸¦ ÇϳªÀÇ Å¬·¡½º¿¡ Æ÷ÇÔ½ÃÅ°°í º¸È£ÇÒ °ÍÀ» ¼û°Ü ½º½º·Î ¹æ¾îÇÏ´Â °ÍÀÌ Ä¸½¶È­ÀÌ´Ù. Ãß»óÈ­¿Í ĸ½¶È­¿¡ ÀÇÇØ ½Ç¼¼°èÀÇ »ç¹°Àº Ŭ·¡½º¶ó´Â ŸÀÔÀ¸·Î Ç¥ÇöµÈ´Ù. ¶ÇÇÑ Å¬·¡½º´Â »ó¼ÓÀ» ÅëÇØ °èÃþÀ» ±¸¼ºÇÏ¸ç ´ÙÇü¼ºÀ̶ó´Â °íÂ÷¿øÀÇ Æ¯¼ºÀ» ¹ßÈÖÇÑ´Ù.

C#¿¡¼­ Ŭ·¡½º¸¦ ¼±¾ðÇÏ´Â ±âº» Çü½ÄÀº C++°ú À¯»çÇ쵂 ¸î °¡Áö ´Ù¸¥ Á¡ÀÌ ÀÖ´Ù. ¼±¾ð¹® µÚ¿¡ ¼¼¹ÌÄÝ·ÐÀ» ºÙÀÌÁö ¾ÊÀ¸¸ç ¼±¾ð ¼ø¼­´Â Áß¿äÇÏÁö ¾Ê´Ù. ¸Þ¼­µåÀÇ º»Ã¼¸¦ Ŭ·¡½º ¼±¾ð¹® ³»¿¡ ÀÛ¼ºÇÏ¸ç ±×·¡¼­ Ŭ·¡½º ¼±¾ð¹®ÀÌ ±æ´Ù.

 

ÁöÁ¤ÀÚ class À̸§ : ±â¹ÝŬ·¡½º {

      // ¸â¹ö ¸ñ·Ï

}

 

Å°¿öµå class ´ÙÀ½¿¡ À̸§À» ¾²°í { } ºí·Ï ¾È¿¡ ¸â¹ö ¸ñ·ÏÀ» ÀÛ¼ºÇÑ´Ù. À̸§Àº »ç¹°À» »ó¡Çϴ ªÀº À̸§ÀÌ ÁÁ´Ù. ÁöÁ¤Àڴ Ŭ·¡½ºÀÇ ¼Ó¼ºÀ» °áÁ¤Çϴµ¥ ÇÊ¿ä ¾øÀ¸¸é »ý·«ÇÑ´Ù. ÄÝ·Ð µÚÀÇ ±â¹Ý Ŭ·¡½º´Â »ó¼Ó¹Þ°í ½ÍÀº ºÎ¸ð Ŭ·¡½ºÀÌµÇ ¿ª½Ã »ý·« °¡´ÉÇÏ´Ù.

¸â¹ö´Â ÁÖ·Î Çʵå¿Í ¸Þ¼­µåÀÌÁö¸¸ ÀÌ ¿Ü¿¡ »ó¼ö, À̺¥Æ®, ÇÁ·ÎÆÛƼ, Àε¦¼­, ¿¬»êÀÚ, »ý¼ºÀÚ, ³»ºÎ ŸÀÔ µî ´õ º¹ÀâÇÑ °Íµµ Æ÷ÇԵȴÙ. Ŭ·¡½º¿¡ Æ÷ÇԵǴ °ÍÀ» ÅëƲ¾î ¸â¹ö¶ó°í ºÎ¸¥´Ù. °¢ ¸â¹ö¿¡ ´ëÇØ ´ÙÀ½ ÀýºÎÅÍ ¼ø¼­´ë·Î °³º° ¸é´ãÀ» ÇÒ °ÍÀÌ´Ù.

´ÙÀ½ ¿¹Á¦ÀÇ Human Ŭ·¡½º´Â »ç¶÷À» Ç¥ÇöÇÑ´Ù. »ç¶÷Àº À̸§°ú ³ªÀÌ ¼Ó¼ºÀ» °¡Áö¸ç ÀÚ½ÅÀ» ¼Ò°³ÇÏ´Â ÇൿÀ» ÇÑ´Ù. ¹°·Ð »ç¶÷Àº º¹ÀâÇÑ Á¸Àç¿©¼­ À̺¸´Ù ÈξÀ ´õ ¸¹Àº ¼Ó¼º°ú ÇൿÀ» °¡ÁöÁö¸¸ ÆíÀÇ»ó °£´ÜÈ÷ Ãß»óÈ­Çß´Ù.

 

Human

½ÇÇà°á°ú

using System;

 

class CSTest {

     static void Main() {

          Human Kim;

          Kim = new Human();

          Kim.Name = "±è»óÇü";

          Kim.Age = 25;

          Kim.Intro();

     }

}

 

class Human {

     public string Name;

     public int Age;

     public void Intro() {

          Console.WriteLine($"{Age}»ì {Name}ÀÔ´Ï´Ù.");

     }

}

25»ì ±è»óÇüÀÔ´Ï´Ù.

 

class Human ºí·Ï ¾È¿¡ ¸â¹ö¸¦ ¼±¾ðÇÑ´Ù. À̸§À» Ç¥ÇöÇÏ´Â NameÀº ¹®ÀÚ¿­·Î, ³ªÀ̸¦ Ç¥ÇöÇÏ´Â Age´Â Á¤¼ö·Î ¼±¾ðÇß´Ù. Intro ¸Þ¼­µå´Â Äֿܼ¡ À̸§°ú ³ªÀ̸¦ Ãâ·ÂÇÏ¿© ÀÚ½ÅÀ» ¼Ò°³ÇÏ´Â µ¿ÀÛÀ» Ç¥ÇöÇÑ´Ù. »ç¶÷À̶ó´Â ½Ç¼¼°èÀÇ »ç¹°À» Ç¥ÇöÇϴ Ŭ·¡½º¸¦ Á¤ÀÇÇß´Ù.

Ŭ·¡½º´Â »ç¹°À» Ç¥ÇöÇϴ ƲÀÏ »ÓÀÌÁö ±× ÀÚü°¡ »ç¹°Àº ¾Æ´Ï´Ù. Ŭ·¡½º ŸÀÔÀÇ °´Ã¼¸¦ »ý¼ºÇØ¾ß ºñ·Î¼Ò ½ÇÁ¦ »ç¹°ÀÌ µÈ´Ù. Main¿¡¼­ Human ŸÀÔÀÇ Kim °´Ã¼¸¦ ¼±¾ðÇÑ ÈÄ new ¿¬»êÀÚ·Î »ý¼ºÇÑ´Ù. ÂüÁ¶ ŸÀÔÀΠŬ·¡½º´Â ¼±¾ð ÈÄ new ¿¬»êÀÚ·Î Èü¿¡ °´Ã¼¸¦ »ý¼ºÇϸç new´Â °´Ã¼ÀÇ ÂüÁ¶ÀÚ¸¦ ¸®ÅÏÇÑ´Ù. ¿¹Á¦¿¡¼­´Â Kim °´Ã¼·Î ÂüÁ¶ÀÚ¸¦ ¹Þ¾Ò´Ù.

Ŭ·¡½º¿¡ ¼Ò¼ÓµÈ Çʵå´Â Ưº°È÷ ÃʱâÈ­ÇÏÁö ¾ÊÀ¸¸é ±âº»°ªÀ» °¡Áø´Ù. ¿¹Á¦¿¡¼­´Â Kim °´Ã¼ »ý¼ºÈÄ Name, Age¿¡ Àû´çÇÑ °ªÀ» ´ëÀÔÇÏ¿© ÃʱâÈ­ÇÏ°í Intro ¸Þ¼­µå¸¦ È£ÃâÇÏ¿© »óŸ¦ Ãâ·ÂÇß´Ù.

°´Ã¼¸¦ ¸¸µå´Â ÇüƲÀΠŬ·¡½º¸¦ ¼±¾ðÇØ µÎ¸é ÀÌÈÄ ¾ó¸¶µçÁö ¸¹Àº °´Ã¼¸¦ ¸¸µé ¼ö ÀÖ´Ù. Human Lee, Human Park ½ÄÀ¸·Î °´Ã¼¸¦ ¼±¾ðÇÏ°í new ¿¬»êÀÚ·Î »ý¼ºÇÏ¸é µÈ´Ù. Kim, Lee, Park µîÀº °°Àº Ŭ·¡½º·ÎºÎÅÍ ¸¸µé¾îÁø ´Ù¸¥ °´Ã¼ÀÌ¸ç °íÀ¯ÀÇ À̸§°ú ³ªÀ̸¦ °¡Áø´Ù.

6-1-2.ºÐÇÒ ¼±¾ð

Çì´õ ÆÄÀÏ°ú ±¸Çö ÆÄÀÏÀÌ ºÐ¸®µÇ¾î ÀÖ´Â C++¿¡ ºñÇØ C#Àº ÇϳªÀÇ ¼Ò½º¿¡ ¼±¾ð°ú Á¤ÀǸ¦ ¸ðµÎ ÀÛ¼ºÇÒ ¼ö ÀÖ¾î °£ÆíÇÏ´Ù. ¹Ý¸é Ŭ·¡½º ¼±¾ð¹®ÀÌ ³Ê¹« ±æ¾îÁö´Â ´ÜÁ¡ÀÌ ÀÖ´Ù. ±×·¡¼­ Ŭ·¡½º¸¦ ¿©·¯ Á¶°¢À¸·Î ºÐÇÒÇÏ¿© ¼±¾ðÇÏ´Â ±â´ÉÀ» Á¦°øÇÑ´Ù. ºÐÇÒ ¼±¾ðÀº µ¢Ä¡°¡ Å« ŸÀÔÀ» ¿©·¯ ¼Ò½º ÆÄÀÏ¿¡ Âõ¾î ³õ´Â ¹æ¹ýÀÌ´Ù.

¿­°ÅÇü°ú µ¨¸®°ÔÀÌÆ®´Â ª¾Æ ºÐÇÒ ¼±¾ðÀ» Áö¿øÇÏÁö ¾ÊÀ¸¸ç ÁַΠŬ·¡½º¿¡ ´ëÇØ »ç¿ëÇÑ´Ù. Ŭ·¡½º ¼±¾ð¹® ¾Õ¿¡ partial ÁöÁ¤ÀÚ¸¦ ºÙÀÌ¸é °°Àº À̸§ÀÇ Å¬·¡½º Á¶°¢À» Çϳª·Î ÇÕÃÄÁØ´Ù. ÁÖ·Î µÎ °³ÀÇ ¼Ò½º ÆÄÀÏ¿¡ ³ª´©¾î ¼±¾ðÇÏ´Â °ÍÀÌ ÀϹÝÀûÀÌÁö¸¸ À̷лóÀ¸·Î´Â ¹éÁ¶°¢À¸·Î °¥±â °¥±â Âõ¾î ³õÀ» ¼öµµ ÀÖ´Ù. ¾Õ¿¡¼­ ¸¸µé¾ú´ø Human Ŭ·¡½º´Â ¾ÆÁÖ ÀÛ¾Æ ±»ÀÌ ±×·² ÇÊ¿ä ¾øÁö¸¸ ¿¬½À »ï¾Æ ºÐÇÒ ¼±¾ðÇØ º¸ÀÚ.

 

Partial

using System;

 

class CSTest {

     static void Main() {

          Human Kim;

          Kim = new Human();

          Kim.Name = "±è»óÇü";

          Kim.Age = 25;

          Kim.Intro();

     }

}

 

partial class Human {

     public int Age;

     public string Name;

}

 

partial class Human {

     public void Intro() {

          Console.WriteLine($"{Age}»ì {Name}ÀÔ´Ï´Ù.");

     }

}

 

Human Ŭ·¡½º¸¦ µÎ ¹ø ¼±¾ðÇ쵂 ÇÑ Á¶°¢¿¡´Â Çʵ常 ¼±¾ðÇÏ°í ÇÑ Á¶°¢¿¡´Â ¸Þ¼­µå¸¸ ¼±¾ðÇß´Ù. ¼±¾ð¹®ÀÌ µÑ·Î ³ª´©¾îÁ® ÀÖÀ» »ÓÀÌÁö ÇÕÄ¡¸é °á±¹ °°Àº ¼±¾ð¹®ÀÌ´Ù. °¢ Á¶°¢ÀÇ ¼±¾ð¹® ¾Õ¿¡´Â partial ÁöÁ¤ÀÚ°¡ ÀÖ¾î ´Ù¸¥ Á¶°¢ÀÌ ÀÖÀ½À» Ç¥½ÃÇϸç ÄÄÆÄÀÏ·¯´Â À̸§ÀÌ °°Àº Á¶°¢À» Çϳª·Î ÇÕÄ£´Ù.

ÆíÀÇ»ó ÇÑ ÆÄÀÏ¿¡ µÎ °³ÀÇ Á¶°¢À» ³ª´©¾ú´Âµ¥ ´Ù¸¥ ÆÄÀÏ¿¡ À־ »ó°ü¾ø´Ù. °°Àº ÆÄÀÏ¿¡¼­ ÀϺη¯ ³ª´©¾î ¼±¾ðÇÒ ÇÊ¿ä´Â ¾øÀ¸´Ï ºÐÇÒ ¼±¾ðÀº ÇÑ Å¬·¡½º¸¦ ¿©·¯ ÆÄÀÏ¿¡ ³ª´©¾î ¼±¾ðÇÏ´Â ±â´ÉÀ̶ó ÇÒ ¼ö ÀÖ´Ù. ÁöÁ¤ÀÚ¸¸ ºÙÀÌ¸é µÇ´Ï ¹®¹ýµµ °£´ÜÇÏ´Ù. ºÐÇÒ ¼±¾ðÀº È¿À²ÀûÀÎ ÀÚµ¿È­¸¦ À§ÇØ ÇÊ¿äÇÏ´Ù. GUI ÇÁ·ÎÁ§Æ®´Â ÄÁÆ®·Ñ ¹èÄ¡³ª ¼Ó¼º Á¶Á¤À» ±×·¡ÇÈ È¯°æ¿¡¼­ ¸¶¿ì½º·Î ¼öÇàÇÏ¸ç µ¥ÀÌÅͺ£À̽º ÇÁ·ÎÁ§Æ®´Â ¸¶¹ý»ç¸¦ ¸¹ÀÌ ¾´´Ù. Åø¿¡ ÀÇÇØ ÀÚµ¿À¸·Î »ý¼ºµÇ´Â Äڵ尡 ¸¹À¸¸ç ÄÚµå´Â °á±¹ ¼±¾ð¹®¿¡ Æ÷ÇԵȴÙ.

ÀÚµ¿ »ý¼ºµÈ ÄÚµå¿Í »ç¿ëÀÚ°¡ ÀÛ¼ºÇÑ Äڵ尡 ¼¯¿© ÀÖÀ¸¸é º¸±â ½ÈÀ» »Ó¸¸ ¾Æ´Ï¶ó »óÈ£ °£¼·À¸·Î ¾û¸ÁÀÌ µÉ È®·üÀÌ ³ô´Ù. MFC³ª À¥ ÆíÁý±â µîÀÌ ÁÁÀº ¿¹Àε¥ ¿©·¯ ¸ð·Î ºÒÆíÇÏ´Ù. ±×·¡¼­ C#Àº ¾ð¾î Â÷¿ø¿¡¼­ ÀÚµ¿ »ý¼º ÄÚµå¿Í »ç¿ëÀÚÀÇ Äڵ带 ¹°¸®ÀûÀ¸·Î ºÐ¸®ÇÏ´Â ¹®¹ýÀ» µµÀÔÇÏ¿´´Ù. À©Æû ÇÁ·ÎÁ§Æ®ÀÇ Æû Ŭ·¡½º´Â Form1.cs¿Í Form1.Designer.cs·Î ºÐÇҵǾî ÀÖ¾î »ç¿ëÀÚÀÇ ÄÚµå¿Í Æû µðÀÚÀ̳ÊÀÇ Äڵ尡 ¿Ïº®ÇÏ°Ô °Ý¸®µÈ´Ù. ±×·¡¼­ Æû µðÀÚÀÌ³Ê¿Í °³¹ßÀÚ°¡ ¼­·Î °£¼·¾øÀÌ ÀÚ½ÅÀÇ Äڵ常 Àß °ü¸®ÇÏ¸é µÈ´Ù.

ºÐÇÒ ¼±¾ðÀº º´ÇÕÀ» ÀüÁ¦·Î ÇÑ °ÍÀ̾ ÁÖÀÇ »çÇ×ÀÌ ¸¹´Ù. °¢ Á¶°¢ÀÇ ¼Ó¼ºÀÌ ´Ù¸£¸é ¹«»çÈ÷ º´ÇÕÇÒ ¼ö ¾øÀ¸´Ï ºÒÀÏÄ¡¸¦ ÇؼÒÇϱâ À§ÇÑ ±ÔÄ¢ÀÌ´Ù.

 

l  °¢ Á¶°¢Àº °°Àº ³×ÀÓ½ºÆäÀ̽º ¼Ò¼ÓÀ̾î¾ß ÇÑ´Ù.

l  °¢ Á¶°¢ÀÇ ¾×¼¼½º ÁöÁ¤ÀÚ´Â ÀÏÄ¡ÇØ¾ß ÇÑ´Ù.

l  ÇÑÂÊ Á¶°¢¿¡¼­ ¼±¾ðÇÑ ¸â¹ö¸¦ ´Ù¸¥ Á¶°¢¿¡¼­ Áߺ¹ ¼±¾ðÇÒ ¼ö ¾ø´Ù.

l  ÅÛÇø´ Ŭ·¡½º´Â ÅÛÇø´ Àμö³ª Á¦¾àÀÌ ÀÏÄ¡ÇØ¾ß ÇÑ´Ù.

l  °¢ Á¶°¢ÀÇ ±â¹Ý Ŭ·¡½º´Â °°¾Æ¾ß ÇÑ´Ù. ÇÑÂÊ¿¡¸¸ ±â¹Ý Ŭ·¡½º¸¦ ÁöÁ¤ÇÏ°í ´Ù¸¥ ÂÊ¿¡¼­´Â »ý·«ÇÏ´Â °ÍÀº °¡´ÉÇÏ´Ù.

l  °¢ Á¶°¢ÀÌ »ó¼Ó¹Þ´Â ÀÎÅÍÆäÀ̽º´Â ¸ðµÎ º´ÇÕµÇ¾î ´ÙÁß »ó¼ÓµÈ´Ù. ÀÎÅÍÆäÀ̽ºÀÇ ¸Þ¼­µå´Â ÀÓÀÇÀÇ Á¶°¢¿¡¼­ ±¸ÇöÇÑ´Ù.

l  abstract³ª sealed ÁöÁ¤Àº ¾î´À Á¶°¢¿¡¼­µç ÇÑ ¹ø¸¸ ÇÏ¸é µÈ´Ù.

l  ¾î´À Á¶°¢ÀÇ ¸â¹ö°¡ ¸ÕÀú ¼±¾ðµÉÁö ¾Ë ¼ö ¾ø´Ù.

l  Ŭ·¡½º¿¡ ¼ÓÇÑ ³»ºÎ ŸÀÔµµ ºÐÇÒ ¼±¾ðÇÒ ¼ö ÀÖ´Ù.

l  ÄÄÆÄÀÏÇÒ ¶§ º´ÇյǹǷΠ¸ðµç Á¶°¢Àº °°ÀÌ ÄÄÆÄÀÏÇØ ÇÑ´Ù. ÀÌ¹Ì ÄÄÆÄÀÏµÈ Å¬·¡½º¸¦ È®ÀåÇÒ ¼ö´Â ¾ø´Ù.

l  partialÀ» ÁöÁ¤Çصµ ²À Á¶°¢À» ³ª´©Áö ¾Ê¾Æµµ µÈ´Ù. ºÐÇÒÇß´Ù ÇÕÃÆÀ» ¶§ partialÀ» ±×³É µÖµµ º° ºÎÀÛ¿ëÀº ¾ø´Ù.

l  °¢ Á¶°¢¿¡ ÁöÁ¤µÈ ¾îÆ®¸®ºäÆ®´Â º´ÇյȴÙ. ±×·¯³ª ¼ø¼­´Â ¾Ë ¼ö ¾ø´Ù.

l  °¢ Á¶°¢ÀÌ ÂüÁ¶ÇÏ´Â using¹®ÀÌ ´Ù¸£¸é ÂüÁ¶ÇÏ´Â ¸íĪÀÌ ´Þ¶óÁú ¼ö ÀÖ´Ù.

 

¼ö¸¸ ¸¹À» »Ó »ç½Ç ´ç¿¬ÇÑ ±ÔÄ¢ÀÌ´Ù. °íÀÇÀûÀ¸·Î ¿±±âÀûÀÎ ¼±¾ð¹®¸¸ ¸¸µéÁö ¾ÊÀ¸¸é Å« ¹®Á¦¾øÀÌ Àß º´ÇյȴÙ. »ç½Ç ÀÌ ±â´ÉÀº °³¹ßÅøÀÇ È¿À²ÀûÀÎ µ¿ÀÛ°ú ¼Ò½º °ü¸®ÀÇ ÆíÀÇÀ» À§ÇÑ °ÍÀÌÁö »ç¿ëÀÚ°¡ Á÷Á¢ ¾µ¸¸ÇÑ ±â´ÉÀº ¾Æ´Ï¾î¼­ ³Ê¹« »ó¼¼È÷ ¾Ë ÇÊ¿ä´Â ¾ø´Ù.

ºÐÇÒ ¼±¾ð ±â´ÉÀº C# 2.0¿¡¼­ Ãß°¡µÈ °ÍÀ̾ partialÀº Å°¿öµå°¡ ¾Æ´Ï´Ù. class, struct, interface ¾Õ¿¡ ÀÖÀ» ¶§¸¸ Å°¿öµåÀÌ¸ç ±× ¿ÜÀÇ À§Ä¡¿¡¼­´Â ÀÏ¹Ý ¸íĪÀÌ´Ù. ±â´ÉÀÌ Ãß°¡µÇ¸é Å°¿öµå°¡ ´Ã¾î³ª´Â °ÍÀº ´ç¿¬ÇÏÁö¸¸ ÀÌÀü ¹öÀüÀÇ ÇÁ·ÎÁ§Æ®¿¡¼­ ÀÌ¹Ì ¸íĪÀ¸·Î »ç¿ëÇÏ´Â °æ¿ì¸¦ À§ÇØ Å°¿öµå·Î ÀÎÁ¤ÇÏÁö ¾Ê´Â´Ù. ÃֽŠ¹öÀü¿¡¼­ Ãß°¡µÈ when, yield, async µîµµ ¸¶Âù°¡Áö·Î Å°¿öµå°¡ ¾Æ´Ï´Ù.

6-1-3.ÁöÁ¤ÀÚ

¸â¹ö ¾Õ¿¡ ¼ºÁúÀ» °áÁ¤ÇÏ´Â ¿©·¯ °¡Áö ÁöÁ¤ÀÚ(Modifier)¸¦ ºÙÀδÙ. ¸ÕÀú ¾×¼¼½º ÁöÁ¤ÀÚ¿¡ ´ëÇØ ¾Ë¾Æº¸ÀÚ. ¾×¼¼½º ÁöÁ¤ÀÚ´Â ´©°¡ ÀÌ ¸â¹ö¸¦ ÀÐ°í ¾µ ¼ö ÀÖ´ÂÁö ±ÇÇÑÀ» ÁöÁ¤ÇÏ¸ç ¿ÜºÎ¿¡¼­ ÇԺηΠ°ªÀ» º¯°æÇÏÁö ¸øÇϵµ·Ï ÇÑ´Ù.

 

¾×¼¼½º ÁöÁ¤ÀÚ

¼³¸í

private

Ŭ·¡½º ³»ºÎ¿¡¼­¸¸ ¾×¼¼½ºÇÒ ¼ö ÀÖ´Ù.

protected

Ŭ·¡½º ³»ºÎ ¶Ç´Â ÆÄ»ýµÈ Ŭ·¡½º¿¡¼­¸¸ ¾×¼¼½ºÇÒ ¼ö ÀÖ´Ù.

public

¿ÜºÎ¿¡¼­ ¸¶À½´ë·Î ¾×¼¼½ºÇÒ ¼ö ÀÖ´Ù.

internal

°°Àº ¾î¼Àºí¸®³»¿¡¼­¸¸ ¾×¼¼½ºÇÒ ¼ö ÀÖ´Ù.

protected internal

°°Àº ¾î¼Àºí¸®³»¿¡¼­¸¸ ¶Ç´Â ÆÄ»ý Ŭ·¡½º¿¡¼­ ¾×¼¼½ºÇÒ ¼ö ÀÖ´Ù.

private protected

°°Àº ¾î¼Àºí¸®¿¡³»ÀÇ ÆÄ»ý Ŭ·¡½º¿¡¼­ ¾×¼¼½ºÇÒ ¼ö ÀÖ´Ù.

 

private, protected, publicÀº C++À̳ª ÀÚ¹ÙÀÇ °æ¿ì¿Í °°´Ù. ³ª¸ÓÁö ¾×¼¼½º ÁöÁ¤ÀÚ´Â ¾î¼Àºí¸®ÀÇ °æ°è¹Û¿¡¼­µµ ¾×¼¼½º °¡´ÉÇÑÁö¸¦ Á¦ÇÑÇÑ´Ù. ¾×¼¼½º ÁöÁ¤ÀÚ´Â °¢ ¸â¹ö¿¡ °³º°ÀûÀ¸·Î ºÙÀÌ¸ç »ý·«½Ã µðÆúÆ®´Â private°¡ Àû¿ëµÈ´Ù. Ŭ·¡½ºµµ ¾×¼¼½º ÁöÁ¤ÀÚ¸¦ ºÙÀδÙ. publicÀº ¾îµð¼­³ª ÂüÁ¶ÇÒ ¼ö ÀÖ°í internalÀº °°Àº ¾î¼Àºí¸® ³»¿¡¼­¸¸ ÂüÁ¶ÇÒ ¼ö ÀÖ´Ù. µðÆúÆ®´Â internalÀÌ¸ç µðÆúÆ®°¡ ¹«³­ÇØ º¸Åë »ý·«ÇÑ´Ù. ÁßøµÈ ³»ºÎ Ŭ·¡½º´Â ¸ðµç ¾×¼¼½º ÁöÁ¤ÀÚ¸¦ ´Ù ¾µ ¼ö ÀÖ´Ù.

¾×¼¼½º ÁöÁ¤ÀÚ¸¦ ÅëÇØ ÁÖ¿ä ¸â¹ö¸¦ ¼û°Ü ¾ÈÁ¤¼ºÀ» È®º¸ÇÏ¸ç ¼û°ÜÁø ºÎºÐÀ» ÀÚÀ¯·Ó°Ô ¾÷±×·¹À̵åÇÒ ¼ö ÀÖ´Ù. °´Ã¼ÁöÇâÀÇ ÀÌ·± Ư¼ºÀ» Á¤º¸ ÀºÆó(Information Hiding)¶ó°í ÇÏ¸ç °´Ã¼ÀÇ ³»ºÎ µ¿ÀÛ°ú ¿ÜºÎ ÀÎÅÍÆäÀ̽º¸¦ ºÐ¸®ÇÑ´Ù. »ç¿ëÀÚ´Â ¼û°ÜÁø ³»ºÎ µ¿ÀÛ±îÁö ¾Ë ÇÊ¿ä ¾øÀÌ °ø°³ ÀÎÅÍÆäÀ̽º¸¸ ¹è¿ö °´Ã¼¸¦ ½±°Ô È°¿ëÇÒ ¼ö ÀÖ´Ù. ¾×¼¼½º ÁöÁ¤ÀÚ ¿Ü¿¡µµ ¿©·¯ °¡Áö ÁöÁ¤ÀÚ°¡ ÀÖ´Ù. °£·«ÇÏ°Ô Á¤¸®ÇØ ÇØ µÎ°í ÀÌÈÄ Çϳª¾¿ »ó¼¼È÷ ¾Ë¾Æº¸±â·Î ÇÑ´Ù. Àû¿ë ´ë»ó¿¡¼­ Çʵå´Â À̺¥Æ® °°Àº º¯¼ö ŸÀÔÀÇ ¸â¹ö¸¦ Æ÷ÇÔÇÏ¸ç ¸Þ¼­µå´Â Àε¦¼­, ÇÁ·ÎÆÛƼ, ¿¬»êÀÚ µîÀÇ ÇÔ¼öÇü ¸â¹ö¸¦ Æ÷ÇÔÇÑ´Ù.

 

ÁöÁ¤ÀÚ

´ë»ó

¼³¸í

static

Çʵå, ¸Þ¼­µå, Ŭ·¡½º

Ŭ·¡½º¿¡ ¼Ò¼ÓµÇ´Â Á¤Àû ¸â¹ö

readonly

Çʵå

ÃʱâÈ­ °¡´ÉÇÑ Àбâ Àü¿ë ¸â¹ö

const

»ó¼ö

Àбâ Àü¿ë ¸â¹ö

virtual

¸Þ¼­µå

°¡»ó ¸Þ¼­µå

override

¸Þ¼­µå

ÀçÁ¤ÀÇµÈ ¸Þ¼­µå

new

¸Þ¼­µå, Çʵå

ºÎ¸ðÀÇ ¸Þ¼­µå¸¦ ¼û±â´Â »õ ¸Þ¼­µå

abstract

Ŭ·¡½º, ¸Þ¼­µå

½ÇÁ¦ ±¸ÇöÀ» °¡ÁöÁö ¾Ê´Â Ãß»ó Ŭ·¡½º

sealed

Ŭ·¡½º, ¸Þ¼­µå

±â¹Ý Ŭ·¡½º·Î »ç¿ëÇÒ ¼ö ¾ø´Â ºÀÀΠŬ·¡½º

volatile

Çʵå

ÃÖÀûÈ­¸¦ ÇÏÁö ¾Ê´Â Çʵå

extern

¸Þ¼­µå

¿ÜºÎ¿¡ Á¤ÀÇµÈ ¸Þ¼­µå

 

¿©·¯ °³ÀÇ ÁöÁ¤ÀÚ¸¦ ºÙÀÏ ¶§ ¼ø¼­´Â ¾Æ¹«·¡µµ »ó°ü¾ø´Ù. public staticÀº °ø°³µÈ Á¤Àû ¸â¹ö¶ó´Â ¶æÀÌ°í static publicÀº Á¤ÀûÀÎ °ø°³ ¸â¹ö¶ó´Â ¶æÀε¥ °á±¹ °°Àº ÀǹÌÀÌ´Ù. ±×·¯³ª ´ÙÀ½Ã³·³ ÁöÁ¤ÀÚ¸¦ ¾²´Â °ÍÀº ¾ÈµÈ´Ù.

 

int static public Age;       // ŸÀÔÀº º¯¼ö¸í ¾Õ¿¡ ¿Í¾ß ÇÔ

private public int Age;          // °°ÀÌ ¾µ ¼ö ¾ø´Â ÁöÁ¤ÀÚ

 

ŸÀÔÀº ÁöÁ¤ÀÚ°¡ ¾Æ´Ï¾î¼­ ¸íĪ ¹Ù·Î ¾Õ¿¡ ÀÖ¾î¾ß ÇÑ´Ù. ¶Ç private¿Í public ó·³ »óÈ£ ¹èÄ¡µÇ´Â ÁöÁ¤ÀÚ¸¦ µ¿½Ã¿¡ »ç¿ëÇؼ­´Â ¾ÈµÈ´Ù.

6-1-4.»ý¼ºÀÚ

¾Õ Ç×ÀÇ Human Ŭ·¡½º´Â ¸î °¡Áö ¹®Á¦°¡ ÀÖ´Ù. ¿ì¼± Name, Age °°Àº ÁÖ¿ä Çʵ尡 °ø°³µÇ¾î ÀÖ¾î ¾ÈÀüÇÏÁö ¸øÇÏ´Ù. Ç×»ó À¯È¿ÇÑ °ªÀ» °¡Áö·Á¸é ¿ÜºÎ¿¡¼­ ÇԺηΠº¯°æÇÏÁö ¸øÇϵµ·Ï ¼û°Ü¾ß ÇÑ´Ù. ¶Ç °´Ã¼¸¦ ¸¸µå´Â ÂÊ¿¡¼­ Çʵ带 ÀÏÀÏÀÌ ÃʱâÈ­ÇØ¾ß ÇÏ´Â ºÒÆíÇÔÀÌ ÀÖ´Ù. ¾îÂ÷ÇÇ °´Ã¼°¡ À¯È¿ÇØÁö·Á¸é ÃʱâÈ­°¡ ÇÊ¿äÇѵ¥ ÀÌ ÀÛ¾÷À» MainÀÌ Á÷Á¢ ÇÏ´Â °ÍÀº ºÒÇÕ¸®ÇÏ´Ù.

Çʵ尡 ¼ö½Ê°³¶ó¸é À¯È¿ÇÑ °´Ã¼¸¦ ¸¸µå´Âµ¥ ¾öû³­ Äڵ尡 ÇÊ¿äÇØÁø´Ù. ÀÌ µÎ ¹®Á¦¸¦ µ¿½Ã¿¡ ÇØ°áÇÏ´Â ÀåÄ¡°¡ »ý¼ºÀÚÀÌ´Ù. »ý¼ºÀÚ´Â °´Ã¼ »ý¼º½Ã¿¡ ÀÚµ¿À¸·Î È£ÃâµÇ¾î °´Ã¼¸¦ ÃʱâÈ­Çϴ Ưº°ÇÑ ¸Þ¼­µåÀÌ´Ù. Áß¿ä Çʵå´Â ¼û°Ü ³õ°í »ý¼ºÀÚ¸¦ ÅëÇØ °´Ã¼¸¦ À¯È¿ÇÑ »óÅ·ΠÃʱâÈ­ÇÏ¿© °ð¹Ù·Î »ç¿ëÇÒ ¼ö ÀÖ°Ô ¸¸µç´Ù.

 

Constructor

using System;

 

class CSTest {

     static void Main() {

          Human Kim;

          Kim = new Human("±è»óÇü", 25);

          Kim.Intro();

     }

}

 

class Human {

     private string Name;

     private int Age;

     public Human(string aName, int aAge) {

          Name = aName;

          Age = aAge;

     }

     public void Intro() {

          Console.WriteLine($"{Age}»ì {Name}ÀÔ´Ï´Ù.");

     }

}

 

Name, Age Çʵ忡 private ¾×¼¼½º ÁöÁ¤ÀÚ¸¦ ºÙ¿© ¼û°å´Ù. ÀÌÁ¦ Main¿¡¼­ Kim.Age = 256; ó·³ À߸øµÈ °ªÀ» ÇԺηΠ´ëÀÔÇÒ ¼ö ¾ø´Ù. ĸ½¶È­ÀÇ ¿øÄ¢»ó Çʵå´Â °¡±ÞÀûÀÌ¸é ¼û±â´Â °ÍÀÌ ÁÁ´Ù. ÇÏÁö¸¸ ¿ÜºÎ¿¡¼­ È£ÃâÇÏ´Â Intro ¸Þ¼­µå´Â ¿©ÀüÈ÷ publicÀÌ´Ù.

Human ¸Þ¼­µå°¡ Ãß°¡µÇ¾ú´Âµ¥ ÀÌ°ÍÀÌ »ý¼ºÀÚÀÌ´Ù. »ý¼ºÀÚ´Â aName, aAge Àμö¸¦ Àü´Þ¹Þ¾Æ Name°ú Age Çʵ忡 ´ëÀÔÇÏ¿© ÃʱâÈ­ÇÑ´Ù. »ý¼ºÀÚÀÇ Àμö¾Õ¿¡ ºÙÀÌ´Â a Á¢µÎ´Â ArgumentÀÇ ¾àÀڷμ­ Çʵå¿Í Àμö¸¦ ±¸ºÐÇÏ´Â ¿ªÇÒÀ» ÇÑ´Ù. ¶Ç´Â Çʵå¿Í °°Àº À̸§ÀÇ Àμö¸¦ ¹ÞµÇ ÇÊµå ¾Õ¿¡ this.À» ºÙ¿© ±¸ºÐÇϱ⵵ ÇÑ´Ù.

 

public Human(string Name, int Age) {

     this.Name = Name;

     this.Age = Age;

}

 

»ý¼ºÀÚ´Â ÄÄÆÄÀÏ·¯°¡ ÀÚµ¿À¸·Î È£ÃâÇÏ¸ç ¸í½ÃÀûÀ¸·Î È£ÃâÇÒ ¼ö ¾ø´Ù. ÄÄÆÄÀÏ·¯°¡ »ý¼ºÀÚ¸¦ ãÀ» ¼ö ÀÖµµ·Ï Ŭ·¡½º¿Í °°Àº À̸§À» ºÙÀÌ¸ç »ç¿ëÀÚ°¡ È£ÃâÇÏ´Â °ÍÀÌ ¾Æ´Ï¾î¼­ ¸®ÅÏÀº ÇÒ ¼ö ¾ø´Ù. ±×·¡¼­ Human Ŭ·¡½ºÀÇ »ý¼ºÀÚ À̸§Àº HumanÀÌ°í ¸®ÅÏ Å¸ÀÔÀº ÀûÁö ¾Ê´Â´Ù. new ¿¬»êÀÚ·Î Human °´Ã¼¸¦ »ý¼ºÇÒ ¶§ ÃʱâÈ­¿¡ »ç¿ëÇÒ Àμö¸¦ Àü´ÞÇÑ´Ù. new Human("±è»óÇü", 25); »ý¼º¹®¿¡ ÀÇÇØ »ý¼ºÀÚ°¡ È£ÃâµÇ¸ç ½ÇÀμö¸¦ ¹Þ¾Æ Name°ú Age Çʵ忡 ´ëÀÔÇÑ´Ù. »ý¼ºÀÚ°¡ ÃʱâÈ­¸¦ ´ã´çÇϹǷΠMainÀº ´õ ÀÌ»ó ½Å°æ¾²Áö ¾Ê¾Æµµ µÈ´Ù.

»ý¼ºÀÚ´Â Çʵå ÃʱâÈ­ ¿Ü¿¡ °´Ã¼ µ¿ÀÛ¿¡ ÇÊ¿äÇÑ ¸ðµç 󸮸¦ ´Ù ÇÒ ¼ö ÀÖ´Ù. »ç¿îµå Ä«µå¸¦ ÃʱâÈ­ÇѴٰųª DB¿¡ ¿¬°áÇѴٰųª ƯÁ¤ ¶óÀ̺귯¸®¸¦ ·ÎµåÇÏ´Â µî °´Ã¼ µ¿ÀÛ¿¡ ÇÊ¿äÇÑ È¯°æÀ» ±¸¼ºÇÏ´Â ÀÏüÀÇ Ã¥ÀÓÀ» Áø´Ù. »ý¼ºÀÚ¸¦ Á¤ÀÇÇÏÁö ¾ÊÀ¸¸é ÄÄÆÄÀÏ·¯´Â µðÆúÆ® »ý¼ºÀÚ¸¦ ¸¸µç´Ù. µðÆúÆ® »ý¼ºÀÚ´Â ¸ðµç ¸â¹ö¸¦ 0, false, null µîÀ¸·Î ÃʱâÈ­ÇÏ¿© ¾²·¹±â°ªÀ» Ä¡¿î´Ù. ±×·¡¼­ »ý¼ºÀÚ°¡ ¾ø¾îµµ °´Ã¼¸¦ ¸¸µé ¼ö ÀÖ´Ù. »ý¼ºÀÚ°¡ Çϳª¶óµµ Á¤ÀǵǾî ÀÖ´Ù¸é µðÆúÆ® »ý¼ºÀÚ´Â ¸¸µéÁö ¾ÊÀ¸¸ç ÀÌ °æ¿ì »ý¼ºÀÚ°¡ ¿ä±¸ÇÏ´Â Àμö¸¦ Àü´ÞÇØ¾ß ÇÑ´Ù.

°´Ã¼¸¦ ÃʱâÈ­ÇÏ´Â ¹æ¹ýÀÌ ¿©·¯ °¡ÁöÀ̸é Àμö ¸ñ·ÏÀÌ ´Ù¸¥ »ý¼ºÀÚ¸¦ ¿©·¯ ¹ú Á¤ÀÇÇÑ´Ù. new ´ÙÀ½ÀÇ Àμö¿­·Î È£ÃâÇÒ »ý¼ºÀÚ¸¦ ¼±ÅÃÇÑ´Ù. À̶§ ÄÚµåÀÇ Áߺ¹À» ¹æÁöÇϱâ À§ÇØ »ý¼ºÀÚ³¢¸® ¼­·Î È£ÃâÇÒ ¼ö Àִµ¥ º»Ã¼ ÄÚµå ÀÌÀü¿¡ : this(Àμö) ½ÄÀ¸·Î ´Ù¸¥ »ý¼ºÀÚ¸¦ È£ÃâÇÑ´Ù.

 

CallConstructor

½ÇÇà°á°ú

using System;

 

class CSTest {

     static void Main() {

          Human Kim = new Human("±è»óÇü", 25);

          Kim.Intro();

          Human Lee = new Human("À̼ø½Å");

          Lee.Intro();

     }

}

 

class Human {

     private string Name;

     private int Age;

     public Human(string aName, int aAge)

          : this(aName) {

          Age = aAge;

     }

     public Human(string aName) {

          Name = aName;

          Age = 1;

     }

     public void Intro() {

          Console.WriteLine($"{Age}»ì {Name}ÀÔ´Ï´Ù.");

     }

}

25»ì ±è»óÇüÀÔ´Ï´Ù.

1»ì À̼ø½ÅÀÔ´Ï´Ù.

 

ÀÌ ¿¹Á¦ÀÇ Human Ŭ·¡½º´Â Àμö ¸ñ·ÏÀÌ ´Ù¸¥ µÎ °³ÀÇ »ý¼ºÀÚ¸¦ Á¦°øÇÑ´Ù. Human(string, int) »ý¼ºÀÚ´Â À̸§°ú ³ªÀ̸¦ ¸ðµÎ ¹ÞÀ¸¸ç Human(string) »ý¼ºÀÚ´Â À̸§¸¸ Àμö·Î ¹Þ°í ³ªÀÌ´Â »ó¼ö 1·Î ÃʱâÈ­ÇÑ´Ù. À̸§À» ÃʱâÈ­ÇÏ´Â ÄÚµå´Â Human(string)¿¡ ÀÌ¹Ì ÀÛ¼ºµÇ¾î ÀÖÀ¸´Ï Human(string, int)¿¡¼­ : this(aName)¹®À¸·Î ÀÌ »ý¼ºÀÚ¸¦ È£ÃâÇÏ¿© À̸§À» ÃʱâÈ­Çß´Ù.

ÀÌ ¿¹¿¡¼­´Â : this(aName)º¸´Ù Name = aName¹®ÀÌ ´õ °£´ÜÇÏ´Ù. ÇÏÁö¸¸ ¹Ýº¹µÇ´Â ÄÚµå´Â Á¦°ÅÇÏ´Â °ÍÀÌ ¿øÄ¢ÀÌ¸ç ¾çÂÊ¿¡ ¶È°°Àº Äڵ带 µÎ´Â °Íº¸´Ù ÇÑÂÊ¿¡¸¸ µÎ°í È£ÃâÇÏ´Â °ÍÀÌ À¯Áö, º¸¼ö¿¡ À¯¸®ÇÏ´Ù. »ý¼ºÀÚ¸¦ ¸í½ÃÀûÀ¸·Î È£ÃâÇÒ ¼ö ¾øÁö¸¸ »ý¼ºÀÚ³¢¸®´Â È£ÃâÇÒ ¼ö ÀÖ´Ù.

ÇʵåÀÇ ÃʱⰪÀÌ »ó¼ö¶ó¸é Ŭ·¡½º ¼±¾ð¹® ³»¿¡¼­ ÇÊµå ¼±¾ð¹® ´ÙÀ½¿¡ = °ú ¿øÇÏ´Â ÃʱⰪÀ» ÁöÁ¤ÇÑ´Ù. Áö¿ªº¯¼öÀÇ ÃʱⰪÀ» ÁöÁ¤ÇÏ´Â ¹æ½Ä°ú °°´Ù. ´ÙÀ½ ¼±¾ð¹®Àº Name°ú AgeÇʵ忡 Àû´çÇÑ µðÆúÆ® ÃʱⰪÀ» ÁöÁ¤ÇÑ´Ù. Çʵå Ãʱâ½Ä(Field Initializer)Àº »ý¼ºÀÚº¸´Ù ¸ÕÀú ½ÇÇàµÈ´Ù. ÀÏ´Ü ÀÌ °ªÀ¸·Î ÃʱâÈ­Ç쵂 »ý¼ºÀÚ°¡ ´Ù¸¥ °ªÀ¸·Î ¹Ù²Ü ¼ö ÀÖ´Ù. ¹«³­ÇÑ °ªÀ¸·Î ÃʱâÈ­ÇØ ³õÀ¸¸é »ý¼ºÀÚ¿¡¼­ ÀÏÀÏÀÌ ½Å°æ¾µ ÇÊ¿ä ¾øÀÌ ²À ÇÊ¿äÇÑ ¸â¹ö¸¸ ÃʱâÈ­ÇÒ ¼ö ÀÖ¾î Æí¸®ÇÏ´Ù.

 

class Human {

     private string Name = "À̸§¸ð¸§";

     private int Age = 22;

 

»ç¿ëÇÏ´Â ÀÔÀå¿¡¼­´Â º°°Å ¾Æ´Ñ °Å °°Áö¸¸ ÄÄÆÄÀÏ·¯ ±¸Çö»ó °ñÄ¡ ¾ÆÇ ±â´ÉÀÌ´Ù. ¿Ö³ÄÇϸé Ŭ·¡½º´Â ƲÀÏ »Ó ½Çü°¡ ¾Æ´Ï±â ¶§¹®ÀÌ´Ù. C++Àº ÀÌ ±â´ÉÀ» Áö¿øÇÏÁö ¾Ê´Ù°¡ ÃÖ±Ù¿¡¼­¾ß Á¤¼öÇü¸¸ ¸í½ÃÀû ÃʱâÈ­¸¦ Çã¶ôÇÑ´Ù. ±×¸¸Å­ ±¸ÇöÀÌ ±î´Ù·Î¿î ±â´ÉÀÌ´Ù.

6-1-5.Æı«ÀÚ

Æı«ÀÚ´Â »ý¼ºÀÚÀÇ ¹Ý´ë ¸Þ¼­µåÀÌ¸ç °´Ã¼°¡ »ç¶óÁú ¶§ Á¤¸® ÀÛ¾÷À» ¼öÇàÇÑ´Ù. ÃʱâÈ­ °úÁ¤¿¡¼­ ¾î¶² ÀÚ¿øÀ» ÇÒ´çÇߴٰųª ȯ°æÀ» ¹Ù²Ù¾î ³õ¾Ò´Ù¸é ´Ù »ç¿ëÇÑ ÈÄ¿¡ ¿ø·¡´ë·Î µ¹·Á ³õÀ» Ã¥ÀÓµµ ÀÖ´Ù. Æı«ÀÚÀÇ À̸§Àº Ŭ·¡½º À̸§¾Õ¿¡ ~ ±âÈ£¸¦ ºÙÀÌ¸ç ³»ºÎÀûÀ¸·Î Finalize ¸Þ¼­µå·Î Á¤ÀǵȴÙ.

C#Àº °¡ºñÁö Ä¿·ºÅÍ°¡ ÀÚ¿øÀ» ÀÚµ¿À¸·Î ȸ¼öÇϵµ·Ï µÇ¾î ÀÖ¾î Æı«ÀÚ¸¦ ¾µ ÀÏÀÌ µå¹°´Ù. ÆÄÀÏÀ̳ª ³×Æ®¿÷ó·³ °¡ºñÁö Ä÷ºÅÍÀÇ °ü¸® ´ë»óÀÌ ¾Æ´Ñ ÀÚ¿ø¿¡ ´ëÇؼ­¸¸ °¡²û »ç¿ëÇÑ´Ù. ´ÙÀ½ ¿¹Á¦´Â ¼ÒÄÏ Åë½ÅÀ» Çϴ Ŭ·¡½ºÀÇ ¸ðÇüÀÌ´Ù.

 

Destructor

½ÇÇà°á°ú

using System;

 

class Socket {

     private int SocketPort;

     public Socket(int port) {

          SocketPort = port;

          Console.WriteLine("{0} Æ÷Æ®·Î ¼ÒÄÏÀ» ¿¬°áÇÑ´Ù.", port);

     }

     ~Socket() {

          SocketPort = 0;

          Console.WriteLine("¼ÒÄÏ ¿¬°áÀ» ÇØÁ¦ÇÑ´Ù.");

     }

}

 

class CSTest {

     static void Main() {

          Socket S = new Socket(1234);

          Console.WriteLine("ÁÖ°Å´Ï ¹Þ°Å´Ï Åë½ÅÇß´Ù Ä¡°í...");

     }

}

1234 Æ÷Æ®·Î ¼ÒÄÏÀ» ¿¬°áÇÑ´Ù.

ÁÖ°Å´Ï ¹Þ°Å´Ï Åë½ÅÇß´Ù Ä¡°í...

¼ÒÄÏ ¿¬°áÀ» ÇØÁ¦ÇÑ´Ù.

 

Åë½ÅÀ» ÇÏ·Á¸é ³×Æ®¿÷¿¡ ¿¬°áÇØ¾ß Çϴµ¥ ¿¬°á ÃʱâÈ­´Â »ý¼ºÀÚ°¡ ÇÏ¸ç ¼ÒÄÏÀ» ¸¸µå´Â Áï½Ã Åë½Å °¡´ÉÇÏ´Ù. ¼ÒÄÏ Æı«½Ã ¿¬°áÀ» ²÷¾î¾ß Çϴµ¥ ³×Æ®¿÷ ¿¬°áÀº ¸Þ¸ð¸®°¡ ¾Æ´Ï¾î¼­ °¡ºñÁö Ä÷ºÅÍÀÇ ±ÇÇÑ ¹ÛÀÌ´Ù. ºñ°ü¸® ÀÚ¿øÀº ÃÖÃÊ ÇÒ´çÇÑ Å¬·¡½º°¡ Á÷Á¢ ÇØ¾ß Çϴµ¥ ±× ½ÃÁ¡ÀÌ °´Ã¼°¡ Æı«µÉ ¶§ È£ÃâµÇ´Â Æı«ÀÚÀÌ´Ù.

°´Ã¼¸¦ ȸ¼öÇÏ´Â °¡ºñÁö Ä÷ºÅÍÀÇ µ¿ÀÛ ½ÃÁ¡Àº ¿¹ÃøÇÒ ¼ö ¾øÀ¸¸ç µû¶ó¼­ Æı«ÀÚ°¡ È£ÃâµÇ´Â Á¤È®ÇÑ ½ÃÁ¡µµ ¾Ë ¼ö ¾ø´Ù. ¾ðÁ¨°¡´Â ÇØÁ¦µÇ°ÚÁö¸¸ ¹Ù·Î Àç»ç¿ëÇØ¾ß ÇÏ´Â ÀÚ¿øÀ̶ó¸é ¹«ÀÛÁ¤ ±â´Ù¸± ¼ö ¾ø´Ù. °ð¹Ù·Î ÇØÁ¦ÇÏ°í ½Í´Ù¸é °¡ºñÁö Ä÷ºÅÍ¿¡°Ô ¸í½ÃÀûÀ¸·Î ÀÚ¿ø ÇØÁ¦¸¦ ¿ä±¸Çϰųª ¾Æ´Ï¸é IDisposable ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇØ¾ß ÇÑ´Ù. °¡ºñÁö Ä÷ºÅÍ¿Í ÇÔ²² ´ÙÀ½¿¡ ÀÚ¼¼È÷ ¾Ë¾Æº¸±â·Î ÇÏÀÚ.