[C++]°ÁÂ(33)<--´ÙÁß»ó¼Ó(Ãß»óŬ·¡½º)
¶ó. Ãß»ó Ŭ·¡½º
Ãß»ó Ŭ·¡½º¶õ Ŭ·¡½º ÀÚü°¡ ³Ê¹« ÀϹÝÀûÀΠƯ¼ºÀ» °¡Áö±â ¶§¹®¿¡ °´Ã¼¸¦ »ý
¼ºÇÏ¿© ½ÇÁ¦·Î »ç¿ëÇϱ⿡ ºÎÀû´çÇÑ Å¬·¡½º¸¦ ¸»ÇÑ´Ù. ÇÏÁö¸¸ Ãß»ó Ŭ·¡½ºÀÇ
ÀϹÝÀûÀΠƯ¼ºÀ» ÆÄ»ý Ŭ·¡½º¿¡¼ Á» ´õ µ¡ºÙ¿© ½ÇÁ¦ »ç¹°À» Ç¥ÇöÇÒ ¼ö ÀÖ±â
¶§¹®¿¡ Ãß»ó Ŭ·¡½º ±× ÀÚü·Î´Â ¾µ¸ð°¡ ¾øÁö¸¸ ÆÄ»ýÀ» ÇÒ °æ¿ì´Â ¾µ¸ð°¡ ÀÖ´Ù.
¿¹¸¦ µé¾î "µÕ±Û°í °í¹«·Î µÈ ź·Â¼ºÀÌ ÀÖ´Â ¹°°Ç"À̶ó´Â Ư¼ºÀ» °¡Áö´Â Ŭ·¡
½º´Â Ư¼ºÀÌ ±¸Ã¼ÀûÀ̹ǷΠÃ౸°øÀ̳ª ¾ß±¸°ø µûÀ§ÀÇ °´Ã¼¸¦ ¸¸µé ¼ö ÀÖ´Ù. ±×
·¯³ª "µÕ±Ù ¹°°Ç"À̶ó´Â Ư¼ºÀ» °¡Áø Ŭ·¡½º´Â ³Ê¹« ÀϹÝÀûÀÎ(=±¤¹üÀ§ÇÑ) Ư¡
À» °¡Áö¹Ç·Î °´Ã¼¸¦ ¸¸µé±â ¾î·Æ´Ù. Ãß»ó Ŭ·¡½ºÀÇ ¾ÆÁÖ ÁÁÀº ¿¹·Î ±×·¡ÇÈ È
¸é»óÀÇ ÇÑ ÁÂÇ¥¸¦ °¡Áö´Â Position Ŭ·¡½º¸¦ µé ¼ö ÀÖ´Ù.
class Position {
protected:
int px,py;
.
.
.
ÀÌ Å¬·¡½º´Â À§Ä¡¸¸À» °¡Áö±â ¶§¹®¿¡ ¾î¶°ÇÑ ±×·¡ÇÈ ¿ä¼Òµµ Ç¥ÇöÇÒ ¼ö°¡ ¾ø´Ù.
°¡Àå °£´ÜÇÑ ±×·¡ÇÈ ¿ä¼ÒÀÎ Á¡Á¶Â÷µµ »ö»óÀ» ÁöÁ¤ÇÒ ´É·ÂÀÌ ¾ø±â ¶§¹®¿¡ Ç¥Çö
ÀÌ ºÒ°¡´ÉÇÏ¸ç ´ÜÁö À§Ä¡¸¸À» °¡Áú »ÓÀÌ´Ù.
ÇÏÁö¸¸ ÀÌ Å¬·¡½º´Â ¸ðµç ±×·¡ÇÈ ¿ä¼Ò¿¡¼ °øÅëµÈ ¿ä¼ÒÀÎ À§Ä¡¸¦ °¡Áö¹Ç·Î ÆÄ
»ýÀ» ÇÒ °æ¿ì´Â ÆÄ»ý Ŭ·¡½º ÀÚü°¡ À¯¿ëÇÏ°Ô »ç¿ëµÉ ¼ö ÀÖ´Ù. Á¡À» ³ªÅ¸³»´Â
Point °´Ã¼¸¦ ÀÌ Å¬·¡½º·ÎºÎÅÍ ÆÄ»ý½ÃÄÑ »ö»óÀ» ³ªÅ¸³»´Â µ¥ÀÌÅÍ ¸â¹ö¸¸ µ¡ºÙ
ÀÌ¸é µÇ¸ç ¿øÀº »ö»ó°ú, ¹ÝÁö¸§À» µ¡ºÙÀÌ°í, ¼±Àº ³¡Á¡ÀÇ ÁÂÇ¥¿Í »ö»óÀ» µ¡ºÙ
ÀÌ¸é µÈ´Ù. ±×¿ÜÀÇ ´Ù¸¥ ±×·¡ÇÈ ¿ä¼Òµéµµ Position Ŭ·¡½º·ÎºÎÅÍ ÆÄ»ý½ÃÄÑ ³ª
°¥ ¼ö ÀÖ´Ù.
Ãß»ó Ŭ·¡½º¶õ ÀÌ·¸°Ô ÆÄ»ýÀ» ¸ñÀûÀ¸·Î ¸¸µé¾îÁö´Â ±â¹Ý Ŭ·¡½ºÀ̸ç Ãß»ó Ŭ
·¡½ºÀÇ ¸â¹ö ÇÔ¼ö´Â °´Ã¼¸¦ °¡ÁöÁö ¾Ê±â ¶§¹®¿¡ Äڵ带 °¡Áú ÇÊ¿ä°¡ ¾ø´Ù. ´Ü
ÆÄ»ý Ŭ·¡½º¿¡¼ ¸â¹ö ÇÔ¼ö¸¦ ÀçÁ¤ÀÇÇÏ¿© ¾µ ¼ö ÀÖµµ·Ï °¡»ó ÇÔ¼ö·Î ¸â¹ö ÇÔ¼ö
¸¦ Á¤ÀÇÇØÁֱ⸸ ÇÏ¸é µÈ´Ù. Äڵ带 ÀüÇô Á¤ÀÇÇÏÁö ¾ÊÀº °¡»ó ÇÔ¼ö¸¦ ¼ø¼ö °¡
»ó ÇÔ¼ö(pure virtual function)¶ó°í ÇÏ¸ç ´ÙÀ½°ú °°ÀÌ ÇÔ¼öÀÇ º»Ã¼ ´ë½Å¿¡ "=
0"¸¦ ºÙ¿© ÁÖ¸é µÈ´Ù.
virtual void func()=0;
Ãß»ó Ŭ·¡½º¿¡¼ °¡»ó ÇÔ¼ö·Î ¼±¾ðÇÑ ÀÌ ¸â¹ö ÇÔ¼ö´Â ÆÄ»ý Ŭ·¡½º¿¡¼ º°µµ·Î
virtualÀ» ºÙ¿©ÁÖÁö ¾Ê¾Æµµ °¡»ó ÇÔ¼ö°¡ µÈ´Ù. Ãß»ó Ŭ·¡½º¸¦ »ç¿ëÇÑ ¿¹¸¦ º¸
ÀÚ.
#include <iostream.h>
#include <graphics.h>
#include <conio.h>
class Position { // Ãß»ó Ŭ·¡½º Á¤ÀÇ
protected:
int px,py;
public:
Position(int x,int y)
{
px=x;
py=y;
}
virtual void Show()=0; // ¼ø¼ö °¡»ó ÇÔ¼ö·Î ¼±¾ð
virtual void Hide()=0;
};
class Point:public Position { // ÆÄ»ý Ŭ·¡½º Á¤ÀÇ
protected:
int Color;
public:
Point(int x,int y,int c):Position(x,y)
{
Color=c;
}
void Show();
void Hide();
};
class Circle:public Point { // ÆÄ»ý Ŭ·¡½º Á¤ÀÇ
private:
int Rad;
public:
Circle(int x,int y,int r,int c):Point(x,y,c)
{
Rad=r;
}
void Show();
void Hide();
};
class Line:public Point { // ÆÄ»ý Ŭ·¡½º Á¤ÀÇ
private:
int ex,ey;
public:
Line(int x1,int y1,int x2,int y2,int c):Point(x1,y1,c)
{
ex=x2;
ey=y2;
}
void Show();
void Hide();
};
void Point::Show()
{
putpixel(px,py,Color);
}
void Point::Hide()
{
putpixel(px,py,getbkcolor());
}
void Circle::Show()
{
setcolor(Color);
circle(px,py,Rad);
}
void Circle::Hide()
{
setcolor(getbkcolor());
circle(px,py,Rad);
}
void Line::Show()
{
setcolor(Color);
line(px,py,ex,ey); }
void Line::Hide()
{
setcolor(getbkcolor());
line(px,py,ex,ey);
}
void main()
{
int gd=0,gm;
initgraph(&gd,&gm,"");
Point P(100,100,14); // Á¡ °´Ã¼ »ý¼º
Circle C(120,120,50,4); // ¿ø °´Ã¼ »ý¼º
Line L(20,200,180,220,15); // ¼± °´Ã¼ »ý¼º
P.Show(); // °¢ °´Ã¼¸¦ Ãâ·ÂÇÑ´Ù.
C.Show();
L.Show();
getch();
P.Hide(); // °¢ °´Ã¼¸¦ ¼û±ä´Ù.
C.Hide();
L.Hide();
getch();
closegraph();
}
Ŭ·¡½ºÀÇ °èÃþµµ¸¦ ±×¸®¸é ´ÙÀ½°ú °°´Ù.
ÀÌ¾î¼ °è¼ÓµË´Ï´Ù. ==============>>>>>>>
--------------------------------------------------------------------------------