½ÇÁ¦ ÇÁ·Î±×·¥ Á¦ÀÛ

 

  Áö±Ý±îÁö ¾î¼¸é ¸Õ±æÀ» µ¹¾Æ ¿Ô´Ù. ÀÌÁ¦ ½ÇÁ¦ ÇÁ·Î±×·¥ Á¦À۽à »ç¿ëÇÏ´Â ¹æ½ÄÀ¸·Î ÇÁ·Î±×·¥À» ÀÛ¼ºÇØ º¸°Ú´Ù.

 Visual Studio .NETÀ» ½ÇÇàÇÏ¿© ÆÄÀÏ ¸Þ´ºÀÇ »õ·Î ¸¸µé±âÀÇ ºÎ¸Þ´º ÇÁ·ÎÁ§Æ®¸¦ ¼±ÅÃÇÏ¸é ´ÙÀ½°ú °°Àº ´ëÈ­ »óÀÚ°¡ »ý¼ºµÈ´Ù.

  ÀÌÁ¦ Windows ÀÀ¿ë ÇÁ·Î±×·¥À» ¼±ÅÃÇϰí À̸§À» Àû´çÈ÷ ÀÔ·Â(BaseProgram¶ó°í ÀÔ·Â)ÇÑ ÈÄ È®ÀÎÀ» ¼±ÅÃÇÏ¸é ´ÙÀ½°ú °°ÀÌ ¼Ö·ç¼Ç Ž»ö±â¿¡ ÇÁ·ÎÁ§Æ®°¡ Ãß°¡ µÈ´Ù.

  ¼Ö·ç¼Ç Ž»ö±âÀÇ ½ÇÁ¦ ¼Ò½º ÆÄÀÏÀÎ Form1.cs´Â Àû´çÈ÷ À̸§À» º¯°æ(¿©±â¼­´Â BaseProgram.cs)ÇÑ´Ù. ÂüÁ¶¸¦ ÆîÃÄ º¸¸é ¾Õ¿¡¼­ ¼³¸íÇÑ °Í º¸´Ù Á»´õ ¸¹Àº ¾î¼Àºí¸®°¡ ÂüÁ¶ µÇ¾î ÀÖ´Ù(ÂüÁ¶´Â ¸¹ÀÌ ÇØµµ »ç¿ëÇÏÁö ¾ÊÀ¸¸é ÄÄÆÄÀÏÀÌ ÀÚµ¿À¸·Î ¹«½ÃµÇ¹Ç·Î »ó°ü¾ø´Ù). App.ico´Â Icon ÆÄÀÏÀ̰í AssemblyInfo.cs´Â Versionµî ȯ°æ ¼³Á¤À» ÇÏ´Â ³»¿ëµéÀÌ µé¾î ÀÖ´Ù. ³»¿ëÀ» ¾Ë±â Àü¿¡¼­ ¼Õ´ëÁö ¾Ê´Â °ÍÀÌ ÁÁ´Ù.

   ÀÌÁ¦ ¼Ó¼º âÀ» º¸ÀÚ. ÇÊÀÚ´Â ¼³¸íÇϱâ ÁÁ°Ô ¼Ö·ç¼Ç Ž»ö±â¸¦ ´Ý¾Æ ¾Æ·¡¿Í °°ÀÌ ¼Ó¼º âÀÌ È­¸é¿¡ ¸¹ÀÌ ³ª¿À°Ô ¼³Á¤Çß´Ù. ¸¸¾à ¼Ó¼ºÃ¢À» ´Ý¾ÒÀ¸¸é º¸±â ¸Þ´ºÀÇ ¼Ó¼ºÃ¢À» ¼±ÅÃÇϸé È­¸é¿¡ ³ªÅ¸³­´Ù.

  ¼Ó¼º Áß µðÀÚÀÎÀÇ (Name)Àº Ŭ·¡½º À̸§ÀÌ´Ù. ÀÌ À̸§À» Àû´çÈ÷(MainForm) ¼öÁ¤ÇÑ´Ù. ¼Ó¼ºÃ¢¿¡¼­ ¾Æ·¡·Î Á¶±Ý ³»¸®¸é Text¶ó´Â Attribute°¡ Form1À¸·Î µÇ¾î Àִµ¥ Title ¹Ù¿¡ Ç¥½ÃµÇ´Â ¹®ÀÚ¿­ÀÌ´Ï Àû´çÈ÷ ¼öÁ¤ÇÑ´Ù. ÀÌÁ¦ ÄÄÆÄÀÏÀ» ÇÏ¸é ¿¡·¯°¡ Çϳª ¹ß»ýÇϴµ¥ ÇâÈÄ Source¿¡¼­ ¼öÁ¤ÇÒ °ÍÀÌ´Ù.

   ÀÌÁ¦ Source¸¦ º¸ÀÚ. Source´Â ¼Ö·ç¼Ç Ž»ö±â  BaseProgram.cs¿¡¼­ ¸¶¿ì½º ¿À¸¥ÂÊ ¹öưÀ» ¼±ÅÃÇÏ¿© »ý¼ºµÈ ÆË¾÷ ¸Þ´º¿¡¼­ ÄÚµå º¸±â¸¦ ¼±ÅÃÇϸé Source¸¦ º¼ ¼ö ÀÖ´Ù. Âü°í·Î BaseProgram.cs¸¦ ´õºíŬ¸¯ÇÏ¸é µðÀÚÀÎÀÌ ÀÖ´Â .cs ÆÄÀÏÀ̶ó¸é À§ ±×¸²°ú °°ÀÌ µðÀÚÀÎ ¸ðµå·Î ¿­¸°´Ù.

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

using System.Data;

 

namespace BaseProgram

{

    /// <summary>

    /// Form1¿¡ ´ëÇÑ ¿ä¾à ¼³¸íÀÔ´Ï´Ù.

    /// </summary>

    public class MainForm : System.Windows.Forms.Form

    {

        /// <summary>

        /// Çʼö µðÀÚÀÌ³Ê º¯¼öÀÔ´Ï´Ù.

        /// </summary>

        private System.ComponentModel.Container components = null;

 

        public MainForm()

        {

            //

            // Windows Form µðÀÚÀÌ³Ê Áö¿ø¿¡ ÇÊ¿äÇÕ´Ï´Ù.

            //

            InitializeComponent();

 

            //

            // TODO: InitializeComponent¸¦ È£ÃâÇÑ ´ÙÀ½ »ý¼ºÀÚ Äڵ带 Ãß°¡ÇÕ´Ï´Ù.

            //

        }

 

        /// <summary>

        /// »ç¿ë ÁßÀÎ ¸ðµç ¸®¼Ò½º¸¦ Á¤¸®ÇÕ´Ï´Ù.

        /// </summary>

        protected override void Dispose( bool disposing )

        {

            if( disposing )

            {

                if (components != null)

                {

                    components.Dispose();

                }

            }

            base.Dispose( disposing );

        }

 

       Windows Form µðÀÚÀ̳ʿ¡¼­ »ý¼ºÇÑ ÄÚµå

 

        /// <summary>

        /// ÇØ´ç ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ÁÖ ÁøÀÔÁ¡ÀÔ´Ï´Ù.

        /// </summary>

        [STAThread]

        static void Main()

        {

            Application.Run(new Form1());

        }

    }

}

  ¾Õ¿¡¼­ ¼öµ¿À¸·Î ¿­½ÉÈ÷ Source¸¦ ÀÛ¼ºÇÑ »ç¶÷Àº Source°¡ ¸¹ÀÌ ´«¿¡ ÀÍÀ» °ÍÀÌ´Ù. ¼öµ¿À¸·Î ÀÛ¼ºÇÒ ¶§ ÀÛ¼ºÇÏÁö ¾ÊÀº °ÍÀ» À§ÁÖ·Î Source¸¦ ¼³¸íÇØ º¸°Ú´Ù.

1. namespace  BaseProgram

  ¹®¹ý Á¤¸®¿¡¼­ C#Àº namespace°¡ Á¸ÀçÇÑ´Ù°í ¼³¸íÇß´Ù. ±×·¯³ª ±× ÀÌÈÄ¿¡ ¼öµ¿À¸·Î ÀÛ¼ºÇÑ ÇÁ·Î±×·¥µé¿¡¼­´Â namespace¸¦ »ç¿ëÇÏÁö ¾Ê¾Ò´Ù. ±×·¯¸é namespace¸¦ ¼±¾ðÇÏÁö ¾ÊÀº ClassµéÀº ¾î¶»°Ô µÇ´Â°¡? ±×°ÍÀº À̸§¾ø´Â namespace ¼Ò¼ÓÀÌ µÇ¾î ¹®Á¦¾øÀÌ µ¿ÀÛÇÑ´Ù. 

 

2. InitializeComponent()

  MainForm »ý¼ºÀÚ¿¡¼­ FormÀ» ÃʱâÈ­ Çϰí Event¸¦ ¿¬°áÇß´ø °ÍÀ» ±â¾ïÇÒ °ÍÀÌ´Ù. »ý¼ºÀÚ¿¡¼­ ¼öÇàÇÏ´ø ÀÌ ¸ðµç ÀÛ¾÷À» Visual StudioÀÇ ¼Ó¼ºÃ¢¿¡¼­ ¸ðµÎ ÀÛ¼ºÇÏ°Ô µÉ °ÍÀ̹ǷΠInitializeComponent¶ó´Â ÇÔ¼ö¸¦ Çϳª ¸¸µé¾î º°µµ·Î È£ÃâÇÏ´Â ±¸Á¶·Î µÇ¾î ÀÖ´Ù.

 

3. Windows Form µðÀÚÀ̳ʿ¡¼­ »ý¼ºÇÑ ÄÚµå

   ÀÌ ºÎºÐ¿¡ Visual StudioÀÇ ¼Ó¼ºÃ¢¿¡¼­ ÀÛ¼ºÇÑ ÄÚµåµéÀÌ µé¾î °¥ °ÍÀÌ´Ù. ÀÌ ºÎºÐÀ» ÆîÃÄ º¸¸é ³»ºÎ¿¡ InitializeComponent Method°¡ ¼±¾ðµÇ¾î ÀÖ°í ¼Ó¼ºÃ¢¿¡¼­ ¼³Á¤ÇÑ ³»¿ëµéÀÌ ±× Method ³»¿¡ µé¾î ÀÖ´Ù.

 

4. Dispose

  FormÀÌ Á¾·áµÉ ¶§ È£ÃâµÇ´Â MethodÀÌ´Ù.

 

5. Application.Run(new Form1())

   À§ Source¸¦ º¸¸é Class°¡ MainFormÀ¸·Î µÇ¾î ÀÖ´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. ±×·¯³ª ±âº»ÀûÀ¸·Î »ý¼ºµÇ´Â Form1À̶ó´Â À̸§À¸·Î ¾îÇø®ÄÉÀ̼ÇÀ» µ¿ÀÛ½Ã۰í ÀÖ´Ù. µû¶ó¼­ ¿©±â¿¡¼­ ¿¡·¯°¡ ¹ß»ýÇÑ´Ù. Form1À» MainFormÀ¸·Î ¼öÁ¤ÇÏ¸é µÈ´Ù.

 

   ´Ù½ÃÇѹø Á¤¸®¸¦ Çϸé, ÇÁ·ÎÁ§Æ®¸¦ ¸¸µçÈÄ, ¼Ö·ç¼Ç Ž»ö±â¿¡¼­ Form1.cs¸¦ ÇÁ·ÎÀèÆ®À̸§.cs·Î º¯°æÇϰí, ¼Ó¼ºÃ¢¿¡¼­ (Name)À» MainFormÀ¸·Î Text¸¦ Title ¹Ù¿¡ Ç¥½ÃµÉ À̸§À¸·Î  º¯°æÇϸç, Source¿¡¼­ Form1À» MainFormÀ¸·Î º¯°æÇÑ´Ù.  ÇÁ·Î±×·¥ ÀÛ¼º½Ã ÀÌ °úÁ¤À» ²À ÇÑ ÈÄ ½ÃÀÛÇÏ´Â ¹ö¸©À» µéÀ̱⠹ٶõ´Ù.

 

   ÀÌÁ¦ ¸¶¿ì½º¿Í Űº¸µå¸¦ ó¸®ÇØ º¸µµ·Ï ÇϰڴÙ. Visual StudioÀÇ ¼Ó¼ºÃ¢ÀÇ À§ÂÊ ¹ø°³ ¸ð¾çÀÇ ¾ÆÀÌÄÜ(À̺¥Æ® ¾ÆÀÌÄÜ)À» ¼±ÅÃÇϸé È­¸éÀº ´ÙÀ½°ú °°ÀÌ ¹Ù²ï´Ù.

     ÀÌ È­¸éÀÌ ³ª¿À±â À§Çؼ­´Â À§ ±×¸²°ú °°ÀÌ µðÀÚÀÎ ¸ðµå ÆÄÀÏÀ» ¿­¾î¾ß¸¸ ÇÑ´Ù. MouseDown¿¡¼­ ¸¶¿ì½º ´õºíŬ¸¯ Çϸé ÀÚµ¿À¸·Î MouseDownÀ̶ó´Â Event°¡ ¿¬°áÀÌ µÇ°í Delegate¿¡ ÀÇÇØ È£ÃâµÉ ÇÔ¼ö°¡ »ý¼ºµÇ¾î ÆíÁýÇÒ ¼ö ÀÖµµ·Ï ±× À§Ä¡·Î À̵¿ÇÑ´Ù. ¿©±â¼­´Â °£´ÜÈ÷ MessageBox.Show("¸¶¿ì½º°¡ ´­·¯Á³½À´Ï´Ù.");¸¦ ÀÔ·ÂÇÑ´Ù. KeyDownµµ °°Àº ¹æ¹ýÀ¸·Î ó¸®ÇÑ´Ù.

   ÀÌÁ¦ ´Ù½Ã ¼Ò½º¸¦ º¸µµ·Ï ÇϰڴÙ. ¾Æ·¡ Source´Â À§¿¡¼­ ¼³¸íÇÑ ³»¿ëÀº µÇµµ·Ï »ý·«Çϰí, Windows Form µðÀÚÀ̳ʿ¡¼­ »ý¼ºÇÑ Äڵ带 ÆîÃļ­ ³»ºÎ±îÁö º¸ÀΰÍÀÌ´Ù.

namespace BaseProgram

{

    public class MainForm : System.Windows.Forms.Form

    {

        public MainForm()

        {

            InitializeComponent();

        }

 

        #region Windows Form µðÀÚÀ̳ʿ¡¼­ »ý¼ºÇÑ ÄÚµå

        /// <summary>

        /// µðÀÚÀÌ³Ê Áö¿ø¿¡ ÇÊ¿äÇÑ ¸Þ¼­µåÀÔ´Ï´Ù.

        /// ÀÌ ¸Þ¼­µåÀÇ ³»¿ëÀ» ÄÚµå ÆíÁý±â·Î ¼öÁ¤ÇÏÁö ¸¶½Ê½Ã¿À.

        /// </summary>

        private void InitializeComponent()

        {

            //

            // MainForm

            //

            this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);

            this.ClientSize = new System.Drawing.Size(292, 273);

            this.Name = "MainForm";

            this.Text = "Å×½ºÆ® ÇÁ·Î±×·¥";

            this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.MainForm_KeyDown);

            this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.MainForm_MouseDown);

 

        }

        #endregion

 

       [STAThread]

        static void Main()

        {

            Application.Run(new MainForm());

        }

 

        private void MainForm_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)

        {

            MessageBox.Show("¸¶¿ì½º°¡ ´­·¯Á³½À´Ï´Ù.");

        }

 

        private void MainForm_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)

        {

            MessageBox.Show("Űº¸µå°¡ ´­·¯Á³½À´Ï´Ù.");

        }

    }

}

 

   InitializeComponent Method¿¡ Event°¡ ¿¬°áµÇ¾î ÀÖ°í Delegate¿¡ ÀÇÇØ È£ÃâµÉ MainForm_MouseDown°ú MainForm_KeyDownÀÌ Á¤ÀÇµÈ °ÍÀ» º¼ ¼ö ÀÖ´Ù.

   

  ÀÌÁ¦ ¾î¼Àºí¸®(.exe, .dll) ±¸Á¶¿¡ ´ëÇØ ¾Ë¾Æ º¸°Ú´Ù. ÇÁ·ÎÁ§Æ® µð·ºÅ丮ÀÇ binÀÇ Debug(¹èÆ÷¸¦ À§ÇØ Release·Î ÄÄÆÄÀÏ Çϸé Release) µð·ºÅ丮¸¦ º¸¸é ´ÙÀ½°ú °°ÀÌ ÇÁ·ÎÁ§Æ®À̸§.exe ÆÄÀÏÀÌ »ý¼ºµÈ °ÍÀ» º¼¼ö ÀÖ´Ù.

   

  BaseProgram.exe¸¦ ¸¶¿ì½º·Î ´õºíŬ¸¯ÇÏ¸é ½ÇÇàÀÌ µÈ´Ù. ¹¹ º° °Í ¾ø´Ù. ±×·¯³ª C#À¸·Î ÀÛ¼ºÇÑ ½ÇÇàÆÄÀϰú C++·Î ÀÛ¼ºÇÑ ½ÇÇàÆÄÀÏÀº ³»ºÎ ±¸Á¶°¡ ¿ÏÀüÈ÷ ´Ù¸£´Ù. C++·Î ÀÛ¼ºÇÑ ½ÇÇàÆÄÀÏÀº ÇöÀç OS¿¡¼­ ½ÇÇà °¡´ÉÇÑ Native ÄÚµå·Î ±¸¼ºµÇ¾î ÀÖ´Ù. ±×·¯³ª C#À¸·Î ÀÛ¼ºÇÑ ½ÇÇàÆÄÀÏÀº ´ÙÀ½°ú °°Àº ±¸Á¶·Î ±¸¼ºµÇ¾î ÀÖ´Ù.

  - CLR(Common Language Runtime) Loader : CLRÀ» ¸Þ¸ð¸®¿¡ ÀûÀç ½ÃŰ´Â ±â´ÉÀ» ¼öÇàÇÑ´Ù.

   - Menifest : ¾î¼Àºí¸®ÀÇ Àüü ¿ä¾à Á¤º¸(Version, Security Á¤º¸, ¸µÅ©µÈ ´Ù¸¥ ¾î¼Àºí¸® Á¤º¸)¸¦ °¡Áö°í ÀÖ´Ù(Ư¼öÇÑ Metadata·Î º¸¸é µÈ´Ù).

   - Metadata : ÄÚµåÀÇ ¿ÜÇü Á¤º¸(namespace Á¤º¸, Type Á¤º¸, Member Á¤º¸)¸¦ °¡Áø´Ù(C++ÀÇ Header ÆÄÀϰú ºñ½ÁÇÑ ±â´É ¼öÇà).

   - MSIL(MicroSoft Intermediate Language) : C#À¸·Î ÀÛ¼ºÇÑ ½ÇÁ¦ ³»¿ëÀÌ ±¹Á¦ Ç¥ÁØÀÎ IL¾ð¾î·Î º¯°æµÇ¾î µé¾î ÀÖ´Ù.

 

  ½ÇÇàÆÄÀÏÀ» ¸¶¿ì½º·Î ´õºí Ŭ¸¯ ÇÏ´Â ¼ø°£ CLRÀÌ ¸Þ¸ð¸®¿¡ ÀûÀçµÇ¾î ÀÖÁö ¾Ê´Ù¸é ÀûÀç½ÃŰ°Ô µÈ´Ù. ÀûÀçµÈ CLRÀÌ ¾î¼Àºí¸®¸¦ ºÐ¼®ÇÏ¿© ½ÇÇàÀ» ÇØÁØ´Ù. CLR ³»ºÎ¸¦ ¾à°£ ¼³¸íÇÏ¸é ¾î¼Àºí¸® ³»ÀÇ MSILÀ» JIT(Just In Time) ÄÄÆÄÀÏ·¯°¡ Native ÄÚµå·Î ÄÄÆÄÀÏÇÏ¿© ½ÇÇàÇÏ´Â °ÍÀÌ´Ù. ÀÌ ±¸Á¶ ¶§¹®¿¡ .NET(C#, C++ .NET, Basic .NET µî)À¸·Î ¸¸µç ½ÇÇàÆÄÀÏÀº CLRÀÌ ¾øÀ¸¸é µ¿ÀÛÇÏÁö ¾Ê´Â´Ù. À̰ÍÀÌ CLRÀÌ Æ÷ÇÔµÈ .NET Framework¸¦ ¼³Ä¡ÇØÁÖ¾î¾ß ÇÏ´Â ÀÌÀ¯ÀÌ´Ù.

   ÀÌ ½ÇÇà ±¸Á¶¿¡ ÀÇÇØ ´ÙÀ½°ú °°Àº Àå´ÜÁ¡ÀÌ ÀÖ´Ù.

ÀåÁ¡ ´ÜÁ¡

- ȣȯ¼ºÀÌ ¶Ù¾î ³ª´Ù.
  ¾ð¾î°£ ȣȯ¼º :  Visual Basic .NET, C++ .NET µî ¾î´À ¾ð¾î·Î ÄÄÆÄÀÏ ÇÏ¿©µµ À§ÀÇ ±¸Á¶·Î ÆÄÀÏÀÌ »ý¼ºµÈ´Ù. µû¶ó¼­ ¾î¶² ¾ð¾î·Î ÀÛ¼ºÇÑ dllÀ̾ ¼­·Î ȣȯÀÌ µÈ´Ù.
  OS°£ ȣȯ¼º : ½ÇÇö °¡´É¼ºÀº Èñ¹ÚÇÏÁö¸¸ UNIX¿¡µµ CLRÀ» Áö¿øÇϱ⸸ Çϸé ȣȯµÇ°Ô µÈ´Ù. ÇöÀç PDA µî¿¡ žÀçµÇ´Â Windows CE¿ÍÀÇ È£È¯¼º¸¸À¸·Îµµ OS°£ ȣȯ¼ºÀº Å«Àǹ̰¡ ÀÖ´Ù.

- CPU¿¡ µû¸¥ ½ÇÇà½Ã ÃÖÀûÈ­
  C++ 6.0ÀÌÈÄ ¹öÁ¯À¸·Î ÄÄÆÄÀÏÀ» ¼öÇàÇϸé ȣȯ¼ºÀ» À§ÇØ 80386(32Bit) CPU¿¡ ¸ÂÃ߾ Native Äڵ尡 »ý¼ºµÈ´Ù. Áï ±×ÀÌÈÄ ³ª¿Â CPU´Â ÃæºÐÇÑ ±â´ÉÀ» ¹ßÈÖ ¸øÇÑ´Ù°í º¸¸éµÈ´Ù. ±×·¯³ª .NETÀº ½ÇÇà½Ã Native Äڵ带 »ý¼ºÇÏ¿© ½ÇÇàÇϹǷΠCPU¿¡ ÃÖÀûÈ­ÇÏ¿© ÃæºÐÇÑ ±â´ÉÀ» ¹ßÈÖÇÒ ¼ö ÀÖ°Ô µÈ´Ù.
  ÀÌ ³»¿ëÀ» º¸¸é C++ 6.0ÀÌÈÄ ¹öÀüÀ¸·Î ÄÄÆÄÀÏÇÑ ½ÇÇàÆÄÀÏÀº 80286¿¡¼­´Â µ¿ÀÛÇÏÁö ¾ÊÀ½À» ¾Ë¼ö ÀÖ´Ù. µû¶ó¼­ .NETÀº CPU°£ ȣȯ¼ºµµ ÀÖ´Ù.

- ½ÇÇà½Ã JIT ÄÄÆÄÀÏÀ» ¼öÇàÇϹǷΠÃʱ⠼öÇà ¼Óµµ ÀúÇϰ¡ ÀÖ´Ù.
  ÀÌ ºÎºÐ¿¡ ´ëÇØ¼­´Â ¼Óµµ ÀúÇϸ¦ ¸·±â À§ÇØ Microsoft»ç¿¡¼­ ¸¹Àº ³ë·ÂÀ» Çϰí ÀÖ´Ù. ÇöÀç ³ë·ÂÇÑ ÈçÀûÀ» À̾߱â Çϸé ÇÊ¿äÇÑ ºÎºÐ¸¸ º¯È¯ÇÏ¿© ½ÇÇàÇϰí, CPU°¡ ³ë´Â ½Ã°£¿¡ º¯È¯(ºÎÇÏ ºÐ»ê)ÇÏ´Â µîÀÇ ±â´ÉÀÌ µé¾î ÀÖ´Ù.

 

 

´Ù¿î·Îµå