[C++]°ÁÂ(24)<--C++ÀÇ ºÎÇ°
µÑ°, ÆÄ»ý, ±â¹ÝÀº »ó´ëÀû °³³äÀÌ´Ù. ÆÄ»ýµÈ Ŭ·¡½º°¡ ´Ù½Ã Ŭ·¡½º¸¦ ÆÄ»ý
½Ãų ¼ö ÀÖ´Ù¸é ±× Å¬·¡½º¸¦ ±â¹Ý Ŭ·¡½º´Ï ÆÄ»ý Ŭ·¡½º´Ï ÇÏ°í À̸§À» ºÙÀÌ
´Â °ÍÀº »ó´ëÀû °³³äÀÌ µÈ´Ù. ù¹ø°¿¡¼ ¿¹·Î µç ÆÄ»ý °ü°è¿¡¼ classB¸¦ º¸
ÀÚ. classB´Â classA¿¡¼ ÆÄ»ýµÇ¾úÀ¸¹Ç·Î À̶§´Â ÆÄ»ý Ŭ·¡½º°¡ µÇÁö¸¸ ¶ÇÇÑ
classB¸¦ ±â¹ÝÀ¸·Î classC°¡ ÆÄ»ýµÇ¾úÀ¸¹Ç·Î À̶§´Â classB°¡ ±â¹Ý Ŭ·¡½º°¡
µÈ´Ù. ¸¶Ä¡ Àΰ£ ¼¼»ó¿¡¼ ºÎ¸ð ÀÚ½ÄÀÇ °ü°è, ¼±¹è ÈĹèÀÇ °ü°è°¡ »ó´ëÀûÀÎ
°³³äÀÎ °Í°ú ¶È°°´Ù.
¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤
¦¢ ¦¢
¦¢ classA ¦¢±â¹Ý Ŭ·¡½º
¦¦¦¡¦¡¦¡¦¡¦¨¦¡¦¡¦¡¦¥
¦¢
\¦¢/
¦£¦¡¦¡¦¡¦¡¦ª¦¡¦¡¦¡¦¤ÆÄ»ý Ŭ·¡½º
¦¢ ¦¢
¦¢ classB ¦¢±â¹Ý Ŭ·¡½º
¦¦¦¡¦¡¦¡¦¡¦¨¦¡¦¡¦¡¦¥
¦¢
\¦¢/
¦£¦¡¦¡¦¡¦¡¦ª¦¡¦¡¦¡¦¤ÆÄ»ý Ŭ·¡½º
¦¢ ¦¢
¦¢ classC ¦¢
¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥
¼¼Â°, ÇÑ Å¬·¡½º¿¡¼ ¿©·¯ °³ÀÇ Å¬·¡½º¸¦ ÆÄ»ý½Ãų ¼ö ÀÖ´Ù. classA¿¡¼ cla
ssB¸¦ ÆÄ»ý½ÃÄ×´Ù°í Çؼ classA¿¡¼ ´Ù¸¥ Ŭ·¡½º¸¦ ÆÄ»ý½ÃÅ°Áö ¸øÇ϶õ ¹ýÀº
¾ø´Ù. classB¿Í ¶Ç ´Ù¸¥ ÇüÅ·ΠclassAÀÇ ¸â¹ö¸¦ »ó¼Ó¹Þ´Â classC°¡ ÀÖÀ» ¼ö
ÀÖ´Ù. ÇÑ Å¬·¡½º¿¡¼ ÆÄ»ýµÉ ¼ö Àִ Ŭ·¡½ºÀÇ °³¼ö´Â Á¦ÇÑÀÌ ¾ø´Ù.
³×°, µÎ °³ÀÇ Å¬·¡½º·ÎºÎÅÍ ÇϳªÀÇ Å¬·¡½º°¡ ÆÄ»ýµÉ ¼ö ÀÖ´Ù. ÇÑ Å¬·¡½º¿¡
¼ ¿©·¯ °³ÀÇ ÆÄ»ý Ŭ·¡½º¸¦ ¸¸µé ¼ö ÀÖ´Â °Í°ú ¸¶Âù°¡Áö·Î ¿©·¯ °³ÀÇ Å¬·¡½º
¿¡¼ ÇÑ Å¬·¡½º¸¦ ÆÄ»ý½Ãų ¼ö ÀÖ´Ù. classA¿Í classB¸¦ µ¿½Ã¿¡ »ó¼Ó¹Þ´Â cla
ssC°¡ ÀÖÀ» ¼ö ÀÖÀ¸¸ç À̶§ classC´Â classA°¡ °¡Áø ¸â¹ö¿Í classB°¡ °¡Áø ¸â
¹ö¸¦ ¸ðµÎ °¡Áö°Ô µÈ´Ù. ÀÌ·¸°Ô µÎ °³ ÀÌ»óÀÇ Å¬·¡½º·ÎºÎÅÍ »ó¼ÓÀ» ¹Þ´Â °ÍÀ»
´ÙÁß »ó¼Ó(multiple inheritance)À̶ó°í ÇÑ´Ù.
»ó¼ÓÀÌ ÀÌ·¸°Ô ¿©·¯ °¥·¡·Î ÀÌ·ç¾îÁö¹Ç·Î Ŭ·¡½º³¢¸®´Â ¼öÁ÷ÀûÀÎ °èÃþÀ» ÀÌ·ç
°Ô µÇ¸ç ÀÌ·± °ÍÀ» Ŭ·¡½º °èÃþÀ̶ó ÇÑ´Ù. ¶ÇÇÑ ´ÙÁß »ó¼Ó¿¡ ÀÇÇØ Å¬·¡½º °èÃþ
Àº tree ±¸Á¶¿Í´Â ´Ù¸¥ Ŭ·¡½º¸ÁÀ» ÀÌ·é´Ù. ´ÙÀ½¿¡ Ŭ·¡½º °èÃþÀÇ ÇÑ ¿¹¸¦ º¸
¿´´Ù.
*) º¹ÀâÇؼ µµÀúÈ÷ ±×¸²À» ±×¸± ¼ö ¾øÀ½
º¹ÀâÇÏ´Ù°í ´À³¥Áö ¸ð¸£°ÚÁö¸¸ ÀÌ Á¤µµ¸é ¾ÆÁÖ °£´ÜÇÑ Å¬·¡½º °èÃþµµÀÌ´Ù. ´ç
Àå iostream Ŭ·¡½º °èÃþµµ¸¦ ã¾Æ µÚÁ®º¸¸é À̰ͺ¸´Ù ÈξÀ ´õ º¹ÀâÇÑ ÇüŶó
´Â °ÍÀ» ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù. Borland C++ 3.1¿¡ °°ÀÌ µé¾îÀÖ´Â windows¿ë Ŭ·¡
½º ¶óÀ̺귯¸®ÀÎ OWL(Object Windows Library)ÀÇ Å¬·¡½º °èÃþµµ´Â Á¤¸» °ÅÁþ¸»
¾Èº¸Å°í ĵƮÁö ÀüÁö¿¡ ±×·Á¾ß ÇÒ Á¤µµ·Î º¹ÀâÇÏ´Ù.
Ŭ·¡½º °èÃþµµ°¡ Àß ÀÌÇØ°¡ ¾È°¡´Â »ç¶÷À» À§ÇØ ½ÇÁ¦ »ýÈ°¿¡¼ Ŭ·¡½º °èÃþÀ»
ã¾Æº¸¸é ´ÙÀ½°ú °°ÀÌ ´ëÃæ ±×¸± ¼ö ÀÖ´Ù.
*)¿¡°í ¿ä°Ç Á¤¸»·Î ³Ê¹« º¹ÀâÇϳ×.
ºñ·Ï ºñÀ¯¸¦ ÇÑ ±×¸²ÀÌÁö¸¸ ½ÇÁ¦·Î Ŭ·¡½ºÀÇ »ó¼ÓÀ» »ç¿ëÇÏ¿© ÀÌ·¯ÇÑ °èÃþÀ»
Ç¥ÇöÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù. »ç¶÷ÀÌ´Ï ³²ÀÚ´Ï ÇÏ´Â ½Ç»ýÈ°¿¡ Á¸ÀçÇÏ´Â »ç¹°µµ ÀÚ
±â ³ª¸§´ë·ÎÀÇ Æ¯Â¡ÀÌ ÀÖ°í Çൿ ¹æ½ÄÀÌ ÀÖÀ¸¸ç ÀÌ·± Çൿ ¹æ½Ä°ú Ư¡À» Ŭ·¡
½º·Î Ç¥ÇöÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù. OOP ÇÁ·Î±×·¥À» ¸¹ÀÌ ºÐ¼®Çغ¸¸é ¿ÀºêÁ§Æ®°¡ ½Ç
»ýÈ°¿¡¼ º¼ ¼ö ÀÖ´Â »ç¹°°ú ºñ½ÁÇÑ ¸éÀÌ ¸¹´Ù´Â °ÍÀ» ´À³¥ ¼ö ÀÖ´Ù.
±×·³ ÀÌÂë¿¡¼ Ŭ·¡½º »ó¼ÓÀ» ½ÇÁ¦·Î ÇÏ´Â ¿¹Á¦¸¦ ÀÛ¼ºÇغ¸ÀÚ. À̶§±îÁö »ç¿ë
ÇØ ¿À´ø ȸé»ó¿¡ ÇÑ À§Ä¡¸¦ ´ëÇ¥ÇÏ´Â Position Ŭ·¡½º¸¦ À̹ø¿¡´Â ±×·¡ÇÈ ¸ð
µå¿¡¼ÀÇ ÇÑ À§Ä¡¸¦ ´ãµµ·Ï ¹Ù²Ù¾î º¸¾Ò´Ù. ±×·¡ÇÈ ÁÂÇ¥»ó¿¡¼ÀÇ À§Ä¡¶õ x, y
ÁÂÇ¥·Î ±¸¼ºµÇ¸ç Á¡ÀÌ ¾Æ´Ñ À§Ä¡¸¸À» ³ªÅ¸³»¹Ç·Î »ö»ó°°Àº ´Ù¸¥ ¸â¹ö°¡ ÇÊ¿äÇÏ
Áö ¾Ê°Ô µÈ´Ù. ÀÌ·¸°Ô Á¤ÀÇµÈ Position Ŭ·¡½º·ÎºÎÅÍ ÇÑ Á¡À» ´ëÇ¥ÇÏ´Â Point
Ŭ·¡½º¸¦ ÀÛ¼ºÇÏ¿© º»´Ù.
#include <iostream.h>
#include <graphics.h>
#include <conio.h>
#include <stdlib.h>
enum Boolean {false,true};
class Position {
protected:
int px,py; // À§Ä¡¸¸À» ´ã´Â´Ù.
public:
Position(int,int);
int Getpx() {return px;}
int Getpy() {return py;}
};
class Point:public Position { // »ó¼ÓÀ» ¹Þ´Â´Ù.
protected:
int Color;
Boolean Visible;
public:
Point(int,int,int);
int Getcolor() {return Color;}
Boolean Getvisible() {return Visible;}
void Show();
void Hide();
};
Position::Position(int x,int y)
{
px=x;
py=y;
}
Point::Point(int x,int y,int c):Position(x,y) // »ý¼ºÀÚ È£Ãâ
{
Color=c;
Visible=false;
}
void Point::Show()
{
Visible=true;
putpixel(px,py,Color);
}
void Point::Hide()
{
Visible=false;
putpixel(px,py,getbkcolor());
}
void main()
{
int gd=0,gm;
initgraph(&gd,&gm,"");
Point HERE(100,100,14); // PointÇüÀÇ °´Ã¼ »ý¼º
HERE.Show();
getch();
closegraph();
}
ÀÌ ¿¹Á¦ÀÇ ½ÇÇà °á°ú´Â ±×·¡ÇÈ È¸éÀÇ (100,100) ÁÂÇ¥¿¡ ³ë¶õ»ö Á¡ Çϳª»ÓÀÌ´Ù.
ÀÌ °£´ÜÇÑ Á¡ Çϳª¸¦ Âï±â À§ÇØ Å¬·¡½º¸¦ Á¤ÀÇÇÏ°í »ó¼Ó±îÁö ½ÃÅ°°í ÀÖÁö¸¸ ¾î
µð±îÁö³ª ¿¹Á¦À̹ǷΠ°£´ÜÇÏ°Ô Á¦ÀÛÇÑ °ÍÀÌ´Ù.
³ª. ¾×¼¼½º »ó¼Ó ÁöÁ¤ÀÚ
6Çà~14Çà »çÀÌ¿¡ Á¤ÀǵǾî ÀÖ´Â Position Ŭ·¡½º´Â Ưº°È÷ ¼³¸íÇÒ ³»¿ëÀº ¾ø
Áö¸¸ ¾×¼¼½º ÁöÁ¤Àº Ŭ·¡½º ³»ÀÇ ¸â¹ö ÇÔ¼ö¿Í »ó¼ÓµÈ Ŭ·¡½º ³»ÀÇ ¸â¹ö ÇÔ¼öµé
ÀÌ µ¥ÀÌÅÍ ¸â¹ö¸¦ ¾×¼¼½ºÇÒ ¼ö ÀÖ´Â protected ¾×¼¼½º ÁöÁ¤ÀÌ´Ù.
px,py ¸â¹ö´Â »ó¼ÓÀ» ÇÏÁö ¾Ê´Â´Ù¸é private·Î ÁöÁ¤ÇÏ°ÚÁö¸¸ »ó¼ÓÀ» ÇÒ »ý°¢
À¸·Î ¸¸µé¾îÁø Ŭ·¡½ºÀ̹ǷΠprotected: ¼Ó¼ºÀ¸·Î ÁöÁ¤µÇ¾î ÀÖ´Ù. 14Çà¿¡¼ ÆÄ
»ý Ŭ·¡½º Point¸¦ Á¤ÀÇÇÏ°í Àִµ¥ ÆÄ»ý Ŭ·¡½º¸¦ Á¤ÀÇÇÏ´Â ÀϹÝÀû ¹®¹ýÀº ¾Æ
·¡¿Í °°´Ù.
class ÆÄ»ý Ŭ·¡½º:public(¶Ç´Â private) ±â¹Ý Ŭ·¡½º
{
¸â¹ö Á¤ÀÇ
};
¸ÕÀú Å°¿öµå Ŭ·¡½º°¡ Á¦ÀÏ ¾Õ¿¡ ¿À°í ±× µÚ¿¡ ÆÄ»ý½ÃÅ°°íÀÚ Çϴ Ŭ·¡½ºÀÇ
À̸§ÀÌ ¿Â´Ù. ±×¸®°í ¾î´À Ŭ·¡½º·ÎºÎÅÍ ÆÄ»ýµÇ´Â°¡¸¦ ÁöÁ¤ÇÏ´Â ±â¹Ý Ŭ·¡½ºÀÇ
À̸§ÀÌ µÚ¿¡ ¿ÀµÇ ÆÄ»ý Ŭ·¡½º¿Í ±â¹Ý Ŭ·¡½º¸¦ ±¸ºÐÇØÁÖ±â À§ÇØ Áß°£¿¡ :(col
on)ÀÌ »ðÀÔµÇ°í ¶ÇÇÑ :°ú ±â¹Ý Ŭ·¡½º À̸§ »çÀÌ¿¡ ¾×¼¼½º »ó¼Ó ÁöÁ¤ÀÚ°¡ µé¾î
°£´Ù. ¿©±â¼ »ç¿ëµÇ´Â ¾×¼¼½º »ó¼Ó ÁöÁ¤ÀÚ(access modifier)´Â Ŭ·¡½º ³»ÀÇ
¸â¹öÀÇ ¾×¼¼½º ±ÇÇÑÀ» ÁöÁ¤ÇÏ´Â ¸â¹ö ¾×¼¼½º ±ÇÇÑ ÁöÁ¤ÀÚ(member access contr
ol)¿Í´Â ´Ù¸¥ °ÍÀÌ´Ù. ¾×¼¼½º »ó¼Ó ÁöÁ¤ÀÚ´Â public ¶Ç´Â private µÑ Áß¿¡ ÇÏ
³ª°¡ »ç¿ëµÇ¸ç protected´Â »ç¿ëµÇÁö ¾Ê´Â´Ù.
¾×¼¼½º »ó¼Ó ÁöÁ¤ÀÚ´Â ±â¹Ý Ŭ·¡½ºÀÇ °¢ ¸â¹ö°¡ ÆÄ»ý Ŭ·¡½º·Î »ó¼ÓµÉ¶§ ¿ø·¡
°¡Áö°í ÀÖ´ø ¾×¼¼½º ±ÇÇÑ ÁöÁ¤À» ¾î¶»°Ô Àü´ÞÇÒ °ÍÀΰ¡¸¦ ÁöÁ¤ÇÑ´Ù. Áï ±â¹Ý
Ŭ·¡½º¿¡ ÀÖÀ» ¶§´Â protected ¼Ó¼ºÀ» °¡Áö°í ÀÖ¾ú´Âµ¥ ÆÄ»ý Ŭ·¡½º·Î °è½ÂµÇ
°í ³ ÈÄ¿¡µµ °è¼Ó protected ¼Ó¼ºÀ» À¯ÁöÇÒ °ÍÀΰ¡ ¾Æ´Ï¸é ´Ù¸¥ ¾×¼¼½º ¼Ó¼º
À¸·Î ¹Ù²ð °ÍÀΰ¡¸¦ ¸»ÇÑ´Ù. ´ÙÀ½ Ç¥¿¡ ¾×¼¼½º »ó¼Ó ÁöÁ¤ÀÚ¿Í ¾×¼¼½º ¼Ó¼ºÀÇ
º¯È¸¦ ³ªÅ¸³»¾ú´Ù.
ÀÌ¾î¼ °è¼ÓµË´Ï´Ù. ==============>>>>>>>
--------------------------------------------------------------------------------