29-2-³ª.ÀÌÂ÷ »ó¼Ó

»ó¼ÓÀÇ ±íÀÌ¿¡ Á¦ÇÑÀÌ ¾ø¾î ÆÄ»ýµÈ Ŭ·¡½º·ÎºÎÅÍ ¶Ç ´Ù¸¥ Ŭ·¡½º¸¦ ÆÄ»ý½Ãų ¼ö ÀÖ´Ù°í Çß´Ù. ´ÙÀ½ ¿¹Á¦´Â Coord·ÎºÎÅÍ ÆÄ»ýµÈ Point¸¦ ±â¹Ý Ŭ·¡½º·Î ÇÏ¿© ¿øÀ» Ç¥ÇöÇÒ ¼ö ÀÖ´Â Circle Ŭ·¡½º¸¦ ÆÄ»ý½ÃŲ´Ù. À̸§À» ºÙÀÌÀÚ¸é ÀÌÂ÷ »ó¼ÓÀ̶ó°í ÇÒ ¼ö ÀÖ´Ù.

 

¿¹ Á¦ : InheritCircle

#include <Turboc.h>

#include <math.h>

 

class Coord

{

protected:

      int x,y;

public:

      Coord(int ax, int ay) { x=ax;y=ay; }

      void GetXY(int &rx, int &ry) const { rx=x;ry=y; }

      void SetXY(int ax, int ay) { x=ax;y=ay; }

};

 

class Point : public Coord

{

protected:

      char ch;

public:

      Point(int ax, int ay, char ach) : Coord(ax,ay) { ch=ach; }

      void Show() {

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

      }

      void Hide() {

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

      }

};

 

class Circle : public Point

{

protected:

     int Rad;

public:

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

     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);

          }

     }

     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(10,10,'@');

     P.Show();

     Circle C(40,10,'*',8);

     C.Show();

}

 

CircleÀº Point¿¡ Á¤ÀǵǾî ÀÖ´Â x, y, ch ¸â¹ö º¯¼ö¿Í Get(Set)XY, Show, Hide ¸â¹ö ÇÔ¼ö¸¦ »ó¼Ó¹ÞÀ¸¸ç ¿©±â¿¡ ¿øÀÇ ¹ÝÁö¸§À» ÁöÁ¤Çϱâ À§ÇÑ Rad ¸â¹ö º¯¼ö¸¦ Ãß°¡Çß´Ù. »ó¼Ó¹ÞÀº ¸â¹ö Áß Show, Hide´Â ´Ù½Ã ÀçÁ¤ÀÇÇϴµ¥ Á¡À» ±×¸®´Â ¹æ¹ý°ú ¿øÀ» ±×¸®´Â ¹æ¹ýÀÌ ´Ù¸£±â ¶§¹®¿¡ Äڵ带 ´Ù½Ã ÀÛ¼ºÇØ¾ß ÇÑ´Ù. »ó¼Ó¹ÞÀº ÇÔ¼öÀÇ º»Ã¼¸¦ ¼öÁ¤ÇÏ´Â °ÍÀ» ¿À¹ö¶óÀ̵ùÀ̶ó°í Çϴµ¥ ´ÙÀ½ Ç׿¡¼­ µû·Î »ó¼¼È÷ ¾Ë¾Æº¸µµ·Ï ÇÏÀÚ. Circle Ŭ·¡½ºÀÇ ¸â¹ö ±¸¼ºÀº ´ÙÀ½°ú °°´Ù.

Point´Â Coord·ÎºÎÅÍ x, y, Get(Set)XY ¸â¹ö¸¦ »ó¼Ó¹Þ°í ¿©±â¿¡ ch, Show, Hide ¸â¹ö¸¦ Ãß°¡ÇßÀ¸¸ç CircleÀº PointÀÇ ¸ðµç ¸â¹ö¸¦ »ó¼Ó¹ÞÀº ÈÄ Rad ¸â¹ö¸¦ Ãß°¡Çß´Ù. °á±¹ CircleÀÌ °¡Áø x, y, Get(Set)XY´Â ¾ÖÃÊÀÇ ±â¹Ý Ŭ·¡½ºÀÎ Coord·Î ¹°·Á¹ÞÀº °ÍÀÌ´Ù. À̶§ Coord´Â CircleÀÇ ºÎ¸ðÀÇ ºÎ¸ðÀÎ ¼ÀÀε¥ Àΰ£ °ü°è·Î Ç¥ÇöÇÏÀÚ¸é ÇҾƹöÁö¶ó°í ÇÒ ¼ö ÀÖ°Ú´Ù.

ÆÄ»ý Ŭ·¡½º·ÎºÎÅÍ »ó¼ÓÀ» °è¼Ó ÇØ ³ª°¡¸é ÃÖÁ¾ Ŭ·¡½º´Â ¸ðµç ±â¹Ý Ŭ·¡½º(¼±Á¶)ÀÇ ¸â¹ö¸¦ ÇѲ¨¹ø¿¡ »ó¼Ó¹Þ´Â´Ù. ÀÌ »óÅ¿¡¼­ Circle·ÎºÎÅÍ ¶Ç ´Ù¸¥ Ŭ·¡½º¸¦ ÆÄ»ý½Ãų ¼öµµ Àִµ¥ ÀÌ Å¬·¡½ºµµ CircleÀ» ÅëÇØ Point¿Í Coord¸¦ °£Á¢ÀûÀ¸·Î »ó¼Ó¹Þ´Â ¼ÀÀÌ´Ù. Circle Ŭ·¡½º´Â Áß½ÉÁ¡ (x, y)¿Í ¿øÈ£¸¦ ±×¸± ¹®ÀÚ, ±×¸®°í ¹ÝÁö¸§ Rad¸¦ ¼Ó¼ºÀ¸·Î °¡Áö¸ç ±×¸®±â, ¼û±â±â µ¿ÀÛÀ» ÇÒ ¼ö ÀÖÀ¸¹Ç·Î ¿ø °´Ã¼¸¦ Ç¥ÇöÇÒ ¼ö ÀÖ´Ù. main¿¡¼­´Â (10,10) À§Ä¡¿¡ @ Á¡À» Âï°í (40, 10) À§Ä¡¿¡ * ¹®ÀÚ·Î ¹ÝÁö¸§ 8ÀÇ ¿øÀ» ±×·È´Ù. ½ÇÇà °á°ú´Â ´ÙÀ½°ú °°´Ù.

¿ÞÂÊÀÇ @ ¹®ÀÚ°¡ Á¡ÀÌ°í ¿À¸¥ÂÊ¿¡´Â º°·Î ¿¹»ÚÁö´Â ¾ÊÁö¸¸ ¿øÀÌ ±×·ÁÁ® ÀÖ´Ù. Á¡, ¿øÀº ±×·¡ÇÈ °´Ã¼Àε¥ ÄܼÖâ¿¡¼­ ¾ïÁö·Î Ç¥ÇöÀ» ÇÏ´Ù º¸´Ï ¸ð¾çÀÌ ÁÁÁö ¾Ê°í ¿øµµ ¼¼·Î·Î ±æÂßÇÑ Å¸¿øÀÌ´Ù. CircleÀÇ Show ÇÔ¼ö¿¡´Â ¿øÀ» ±×¸®´Â Äڵ尡 ÀÛ¼ºµÇ¾î Àִµ¥ ¿øÀ» ±×¸®´Â ¾Ë°í¸®ÁòÀº ±×´ÙÁö º¹ÀâÇÏÁö´Â ¾ÊÁö¸¸ Áö±Ý ´Ù·ç´Â ÁÖÁ¦°¡ ¾Æ´Ï¹Ç·Î ÀÏ´Ü ¹«½ÃÇϵµ·Ï ÇÏÀÚ. ÀÌ¿ÕÀÌ¸é ±×·¡ÇÈ È¯°æ¿¡¼­ ¿¹»Ú°Ô Ãâ·ÂÇØ º¸°í ½ÍÀ¸³ª ±×·¡ÇÈ È¯°æÀº ¹®¹ýÀ» ¹è¿ì±â¿¡´Â ÀûÇÕÇÏÁö ¾ÊÀ¸¹Ç·Î ºÎµæÀÌÇÏ°Ô ÀÌ·± ¹æ¹ýÀ» ¾µ ¼ö¹Û¿¡ ¾ø´Ù.