[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 ¼Ó¼ºÀ» À¯ÁöÇÒ °ÍÀΰ¡ ¾Æ´Ï¸é ´Ù¸¥ ¾×¼¼½º ¼Ó¼º
À¸·Î ¹Ù²ð °ÍÀΰ¡¸¦ ¸»ÇÑ´Ù. ´ÙÀ½ Ç¥¿¡ ¾×¼¼½º »ó¼Ó ÁöÁ¤ÀÚ¿Í ¾×¼¼½º ¼Ó¼ºÀÇ
º¯È­¸¦ ³ªÅ¸³»¾ú´Ù.


À̾ °è¼ÓµË´Ï´Ù. ==============>>>>>>>


--------------------------------------------------------------------------------