»ó¼ÓÀÇ ±íÀÌ¿¡ Á¦ÇÑÀÌ ¾ø¾î ÆÄ»ýµÈ Ŭ·¡½º·ÎºÎÅÍ ¶Ç ´Ù¸¥ Ŭ·¡½º¸¦ ÆÄ»ý½Ãų ¼ö ÀÖ´Ù°í Çß´Ù. ´ÙÀ½ ¿¹Á¦´Â 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 ÇÔ¼ö¿¡´Â ¿øÀ» ±×¸®´Â Äڵ尡 ÀÛ¼ºµÇ¾î Àִµ¥ ¿øÀ» ±×¸®´Â ¾Ë°í¸®ÁòÀº ±×´ÙÁö º¹ÀâÇÏÁö´Â ¾ÊÁö¸¸ Áö±Ý ´Ù·ç´Â ÁÖÁ¦°¡ ¾Æ´Ï¹Ç·Î ÀÏ´Ü ¹«½ÃÇϵµ·Ï ÇÏÀÚ. ÀÌ¿ÕÀÌ¸é ±×·¡ÇÈ È¯°æ¿¡¼ ¿¹»Ú°Ô Ãâ·ÂÇØ º¸°í ½ÍÀ¸³ª ±×·¡ÇÈ È¯°æÀº ¹®¹ýÀ» ¹è¿ì±â¿¡´Â ÀûÇÕÇÏÁö ¾ÊÀ¸¹Ç·Î ºÎµæÀÌÇÏ°Ô ÀÌ·± ¹æ¹ýÀ» ¾µ ¼ö¹Û¿¡ ¾ø´Ù.