30-2-³ª.¸â¹ö ÇÔ¼ö°¡ È£ÃâÇÏ´Â ÇÔ¼ö

´ÙÀ½ ¿¹Á¦´Â ¾Õ Àå¿¡¼­ ±¸°æÇØ º» ÀûÀÌ ÀÖ´Â ÀÌÂ÷ »ó¼Ó ¿¹Á¦¸¦ ¾à°£ º¯ÇüÇÑ °ÍÀε¥ °¡»ó ÇÔ¼öÀÇ ¶Ç ´Ù¸¥ Ȱ¿ë¿¹¸¦ º¸¿© ÁØ´Ù.

 

¿¹ Á¦ : MemCallMem

#include <Turboc.h>

#include <math.h>

 

class Point

{

protected:

     int x,y;

     char ch;

 

public:

     Point(int ax, int ay, char ach) { x=ax;y=ay;ch=ach; }

     virtual void Show() {

          gotoxy(x,y);putch(ch);

     }

     virtual void Hide() {

          gotoxy(x,y);putch(' ');

     }

     void Move(int nx,int ny) {

          Hide();

          x=nx;

          y=ny;

          Show();

     }

};

 

class Circle : public Point

{

protected:

     int Rad;

 

public:

     Circle(int ax, int ay, char ach, int aRad) : Point(ax,ay,ach) {    Rad=aRad; }

     virtual void Show() {

          for (double a=0;a<360;a+=15) {

              gotoxy(int(x+sin(a*3.14/180)*Rad),int(y-cos(a*3.14/180)*Rad));

              putch(ch);

          }

     }

     virtual void Hide() {

          for (double a=0;a<360;a+=15) {

               gotoxy(int(x+sin(a*3.14/180)*Rad),int(y-cos(a*3.14/180)*Rad));

              putch(' ');

          }

     }

};

 

void main()

{

     Point P(1,1,'P');

     Circle C(10,10,'C',5);

 

     P.Show();

     C.Show();

 

     getch();

     P.Move(40,1);

     getch();

     C.Move(40,10);

     getch();

}

 

Á¡À» Ç¥ÇöÇÏ´Â Point Ŭ·¡½º·ÎºÎÅÍ Circle Ŭ·¡½º¸¦ ÆÄ»ý½ÃÄ×À¸¸ç Point Ŭ·¡½º¿¡ Á¡À» À̵¿½ÃŰ´Â Move ÇÔ¼ö°¡ Á¤ÀǵǾî ÀÖ´Ù. ¿¹Á¦¸¦ ½ÇÇàÇϸé (1,1)¿¡ Á¡ÀÌ ÂïÈ÷°í (10,10)¿¡ ¹ÝÁö¸§ 5ÀÇ ¿øÀÌ ±×·ÁÁö¸ç Űº¸µå¸¦ ´©¸£¸é Á¡°ú ¿øÀÌ °¢°¢ ¿À¸¥ÂÊÀ¸·Î À̵¿ÇÒ °ÍÀÌ´Ù. Circle Ŭ·¡½º´Â Move¸¦ ÀçÁ¤ÀÇÇÏÁö ¾Ê°í ±×´ë·Î »ó¼ÓÇßÀ½¿¡µµ ºÒ±¸Çϰí Àß À̵¿µÈ´Ù.

µµÇüÀ» ¿òÁ÷ÀÌ´Â Move ÇÔ¼öÀÇ ¿ø¸®´Â ¾î¶² µµÇü¿¡¼­³ª ¿øÄ¢ÀûÀ¸·Î µ¿ÀÏÇÏ´Ù. ¿ø·¡ ÀÚ¸®¿¡ ±×·ÁÁ® ÀÖ´ø µµÇüÀ» Áö¿ì°í À§Ä¡¸¦ ¿Å±ä ÈÄ ´Ù½Ã ±×¸®¸é µÇ´Âµ¥ Point::Move´Â ÀÌ ¿øÄ¢´ë·Î ¸â¹ö ÇÔ¼ö¸¦ È£ÃâÇϰí ÀÖ´Ù. Hide¸¦ È£ÃâÇÏ¿© Á¡À» ¼û±â°í Àμö·Î Àü´ÞµÈ nx, ny·Î ÁÂÇ¥¸¦ ¿Å±ä ÈÄ Show ÇÔ¼ö¸¦ È£ÃâÇÏ¿© »õ·Î À̵¿ÇÑ ÁÂÇ¥¿¡ Á¡À» ´Ù½Ã ±×¸°´Ù. ¿øÀ» À̵¿½ÃŰ´Â ¹æ¹ýµµ ÀÌ¿Í ÀüÇô Ʋ¸®Áö ¾Ê±â ¶§¹®¿¡ Circle Ŭ·¡½º°¡ Move ÇÔ¼ö¸¦ º°µµ·Î ´Ù½Ã Á¤ÀÇÇÒ Çʿ䰡 ¾ø´Â °ÍÀÌ´Ù.

±×·¯³ª ¾Æ¹«¸® Äڵ尡 °°´õ¶óµµ Move ÇÔ¼ö°¡ ¿ÏÀüÈ÷ °°À» ¼ö´Â ¾ø´Ù. ¿øÀ» ¿Å±â´Â ÀýÂ÷¿Í Á¡À» ¿Å±â´Â ÀýÂ÷´Â °°Áö¸¸ Move ÇÔ¼ö ³»ºÎ¿¡¼­ È£ÃâÇÏ´Â Show, Hide´Â µµÇü¸¶´Ù ´Þ¶ó¾ß ÇÑ´Ù. Áï, ÀÌ µÎ ÇÔ¼ö°¡ °´Ã¼ÀÇ Å¸ÀÔ¿¡ µû¶ó µ¿Àû °áÇÕÀ» ÇÏÁö ¾ÊÀ¸¸é ÀÌ ¿¹Á¦´Â Á¦´ë·Î µ¿ÀÛÇÏÁö ¾Ê´Â´Ù. °ú¿¬ ±×·±Áö Show, HideÀÇ virtual ¼±¾ðÀ» »èÁ¦ÇÑ ÈÄ Å×½ºÆ®ÇØ º¸ÀÚ. Á¡Àº Á¦´ë·Î À̵¿ÇÏÁö¸¸ ¿øÀº À̵¿ÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. ¿Ö³ÄÇϸé CircleÀÌ »ó¼Ó¹ÞÀº Move¿¡¼­ È£ÃâÇÏ´Â Show, Hide°¡ PointÀÇ °ÍÀ̱⠶§¹®ÀÌ´Ù. ±×·¡¼­ ¿øÀ» ´Ù½Ã ±×¸± ¶§ Áß½ÉÁ¡¸¸ ±×·ÁÁø´Ù. ÀÌ »óÅ¿¡¼­ ¹®Á¦¸¦ ÇØ°áÇÏ·Á¸é Circle Ŭ·¡½º¿¡µµ Point¿Í ¶È°°Àº Äڵ带 °¡Áö´Â Move ÇÔ¼ö¸¦ ÀÛ¼ºÇØ¾ß ÇÑ´Ù.

 

class Circle : public Point

{

     ....

     void Move(int nx,int ny) {

          Hide();

          x=nx;

          y=ny;

          Show();

     }

};

 

ÀÌ·¸°Ô Çϸé Circle::Move¿¡¼­ È£ÃâÇÏ´Â Hide, Show´Â CircleÀÇ ¸â¹ö ÇÔ¼ö°¡ µÇ¹Ç·Î ¿øµµ Á¦´ë·Î À̵¿ÇÒ °ÍÀÌ´Ù. ±×·¯³ª º¸´Ù½ÃÇÇ ´Ü ÇÑ ±ÛÀÚµµ Ʋ¸®Áö ¾Ê´Â Äڵ带 »ó¼Ó¹ÞÁö ¾Ê°í ÀçÁ¤ÀÇÇÑ´Ù´Â °ÍÀº ºÐ¸íÈ÷ ³¶ºñÀÌ¸ç ¶È°°Àº Äڵ尡 µÎ ±ºµ¥ ÀÖ´Ù´Â °ÍÀº ¾î´À ¸ð·Î º¸³ª ÁÁÁö ¾Ê´Ù. ±×·¡¼­ Move´Â ±×´ë·Î »ó¼Ó¹Þ°í ÀÌ ÇÔ¼ö ³»ºÎ¿¡¼­ È£ÃâÇÏ´Â Show, Hide¸¦ °¡»óÀ¸·Î ¼±¾ðÇÏ¿© È£ÃâµÈ °´Ã¼ÀÇ Å¸ÀÔ¿¡ µû¶ó ÀûÇÕÇÑ Show, Hide°¡ È£ÃâµÇµµ·Ï ÇÏ´Â °ÍÀÌ´Ù. ÀÌ·¸°Ô Çϸé Show, Hide°¡ È£ÃâµÈ °´Ã¼ÀÇ Å¸ÀÔ¿¡ µû¶ó ´ÙÇüÀûÀ¸·Î µ¿ÀÛÇÑ´Ù.

¾Õ¿¡¼­ µ¿Àû °áÇÕÀº Ŭ·¡½º ŸÀÔÀÇ Æ÷ÀÎÅͷκÎÅÍ È£ÃâÇÒ ¶§¸¸ µ¿ÀÛÇÑ´Ù°í Çß¾ú´Ù. ÀÌ °æ¿ì Move¿¡¼­ È£ÃâÇÏ´Â Show, Hide´Â Æ÷ÀÎÅÍ¿Í »ó°ü¾øÀÌ ±×³É ´Ü¼øÈ÷ ¸â¹ö ÇÔ¼ö¸¦ È£ÃâÇÏ´Â °Íó·³ º¸ÀδÙ. ÀÌ·± ÀǽÉÀÌ °¡´Â »ç¶÷Àº Àá½Ã ±ô¹ÚÇÑ °ÍÀÌ Àִµ¥ ¸ðµç ¸â¹ö ÇÔ¼öµé¿¡°Ô ¼û°ÜÁø this°¡ Àü´ÞµÇ°í ¸â¹ö ÇÔ¼ö ³»¿¡¼­ ¸â¹öÀÇ ÂüÁ¶¹®¾Õ¿¡´Â ¾Ï½ÃÀûÀ¸·Î this->°¡ ¼û°ÜÁ® ÀÖ´Ù´Â °ÍÀ» »ó±âÇØ º¸ÀÚ. this´Â ºÐ¸íÈ÷ È£Ãâ °´Ã¼ÀÇ Æ÷ÀÎÅÍÀ̹ǷΠÀÌ Æ÷ÀÎÅͷκÎÅÍ È£ÃâµÇ´Â Show, Hide °¡»ó ÇÔ¼ö´Â µ¿Àû °áÇյǾî¾ß ¸¶¶¥ÇÏ´Ù.

±×·¸´Ù¸é Move ÇÔ¼ö¸¦ °¡»óÀ¸·Î ¼±¾ðÇÏ´Â °ÍÀº ¾î¶² È¿°ú°¡ ÀÖÀ»±î? Á÷Á¢ Å×½ºÆ®ÇØ º¸¸é ¾Ë°ÚÁö¸¸ Move°¡ °¡»óÀÎ °ÍÀº ¹®Á¦ ÇØ°á¿¡ ¾Æ¹«·± µµ¿òÀÌ µÇÁö ¾Ê´Â´Ù. MoveÀÇ ÄÚµå´Â ¾îÂ÷ÇÇ °°À¸¹Ç·Î ¾î¶² Ŭ·¡½ºÀÇ ¸â¹ö ÇÔ¼ö°¡ °áÇյdzª ÀüÇô ´Ù¸£Áö ¾Ê´Ù. Áß¿äÇÑ °ÍÀº °´Ã¼º°·Î ´Þ¶ó¾ß ÇÏ´Â µ¿ÀÛÀÎ Show, Hide°¡ µ¿Àû °áÇÕÀ» ÇÏ´À³Ä ¾Æ´Ï³ÄÀÌ´Ù.

¸â¹ö ÇÔ¼ö³»¿¡¼­ ¼¼ºÎ ±¸ÇöÀ» À§ÇØ È£ÃâµÇ¾î¾ß ÇÏ´Â ¶Ç ´Ù¸¥ ¸â¹ö ÇÔ¼ö°¡ Ŭ·¡½ºº°·Î ´Ù¸£°Ô Á¤ÀǵǾî ÀÖ´Ù¸é ÀÌ ÇÔ¼öµµ °¡»ó ÇÔ¼ö°¡ µÇ¾î¾ß ÇÑ´Ù. ±×·¡¾ß ¾Ï½ÃÀûÀ¸·Î Àü´ÞµÇ´Â this°´Ã¼ÀÇ Å¸ÀÔ¿¡ µû¶ó Á¤È®ÇÑ ÇÔ¼ö°¡ È£ÃâµÈ´Ù.