29-1-³ª.»ó¼ÓÀÇ ¿¹

»ó¼Ó¿¡ ´ëÇÑ ¹®¹ýÀûÀÎ À̷и¸ °è¼Ó ³ª¿­Çؼ­´Â ÀÌÇØÇϱ⠽±Áö ¾ÊÀ¸¹Ç·Î ÀÏ´ÜÀº ±¸Ã¼ÀûÀÎ ½ÇÁ¦ ¿¹¸¦ º¸µµ·Ï ÇÏÀÚ. ´ÙÀ½ ¿¹Á¦´Â ºñ·Ï ±Ø´ÜÀûÀ¸·Î °£´ÜÇϱâ´Â ÇÏÁö¸¸ »ó¼ÓÀ» ÅëÇØ Ŭ·¡½º¸¦ ÀçȰ¿ëÇÏ´Â ±âº»ÀûÀÎ ¹æ¹ýÀ» º¸¿© ÁØ´Ù.

 

¿¹ Á¦ : InheritPoint

#include <Turboc.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(' ');

     }

};

 

void main()

{

     Point P(10,10,'@');

     P.Show();

}

 

µÎ °³ÀÇ Å¬·¡½º¸¦ Á¤ÀÇÇϰí Àִµ¥ Coord Ŭ·¡½º´Â È­¸é»óÀÇ ÁÂÇ¥ Çϳª¸¦ Ç¥ÇöÇÑ´Ù. ÁÂÇ¥´Â À§Ä¡¸¸À» °¡Áö¸ç º¸ÀÌ´Â ½Çü°¡ ¾Æ´Ï¹Ç·Î Å©±â³ª ¸ð¾ç, »ö»ó µûÀ§ÀÇ °³³äÀÌ ¾ø´Ù. ±×·¡¼­ Coord Ŭ·¡½º¿¡´Â ¼ø¼öÇÏ°Ô À§Ä¡¸¸ Ç¥ÇöÇÒ ¼ö ÀÖ´Â x, y¸¸ ¸â¹ö º¯¼ö·Î ¼±¾ðµÇ¾î ÀÖ´Ù. ±×¸®°í x, y¸¦ ¾×¼¼½ºÇÏ´Â Get(Set)XY ¸â¹ö ÇÔ¼ö¿Í »ý¼ºÀÚ°¡ Á¤ÀǵǾî ÀÖ´Ù.

µÎ ¹øÂ° Ŭ·¡½ºÀÎ Point´Â Á¡À» Ç¥ÇöÇϴµ¥ ´«¿¡ º¸ÀÌ´Â Á¡À» ±×¸®±â À§Çؼ­´Â ÁÂÇ¥ ¿Ü¿¡µµ ½ÇÁ¦·Î È­¸é¿¡ Ãâ·ÂÇÒ ¶§ ¾î¶² ¹®ÀÚ·Î Ãâ·ÂÇÒ °ÍÀÎÁö¿¡ ´ëÇÑ Á¤º¸°¡ ÇÊ¿äÇÏ´Ù. ±×·¡ÇÈ È¯°æÀ̶ó¸é Á¡ÀÇ »ö»óÀÌ ÇÊ¿äÇϰÚÁö¸¸ ½Ç½À ȯ°æÀÌ ÄܼÖÀ̹ǷΠƯÁ¤ ¹®ÀÚ¸¦ Ãâ·ÂÇÔÀ¸·Î½á Á¡À» ´ë½Å Ç¥ÇöÇϱâ·Î ÇÑ´Ù. ÀÌ Æ¯Á¤ ¹®ÀÚ¸¦ ch ¸â¹ö·Î ÁöÁ¤ÇÑ´Ù. ÀÌ ¿Ü¿¡ Á¡À» °ü¸®ÇÏ´Â Show, Hide ¸â¹ö ÇÔ¼ö°¡ Á¤ÀǵǾî Àִµ¥ Á¡Àº È­¸é¿¡ º¸ÀÏ ¼öµµ ÀÖ°í ¼ûÀ» ¼öµµ ÀÖÀ¸¹Ç·Î ÀÌ µÎ µ¿ÀÛÀ» ó¸®ÇÏ´Â ¸â¹ö ÇÔ¼ö°¡ ÇÊ¿äÇÏ´Ù. ¸¸¾à ÀÌ·± Ư¼ºÀ» °¡Áö´Â Point Ŭ·¡½º¸¦ ´Üµ¶À¸·Î Á¤ÀÇÇÑ´Ù¸é ¾Æ¸¶µµ ´ÙÀ½°ú °°Àº ¸ð¾çÀÌ µÉ °ÍÀÌ´Ù. Áö±Ý±îÁö ½Ç½À¿ëÀ¸·Î »ç¿ëÇØ¿Ô´ø Position°úµµ ºñ½ÁÇÏ´Ù.

 

class Point

{

protected:

     int x,y;

     char ch;

public:

     Point(int ax, int ay, char ach) { x=ax;y=ay;ch=ach; }

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

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

     void Show() {

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

     }

     void Hide() {

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

     }

};

 

ÀÌ ¼±¾ð¹®¿¡¼­ º¸´Ù½ÃÇÇ x, y¿Í Get(Set)XY ¸â¹ö ÇÔ¼ö´Â ÁÂÇ¥¸¦ Ç¥ÇöÇÏ´Â Coord Ŭ·¡½º¿¡ ÀÌ¹Ì Á¤ÀǵǾî ÀÖ´Â °ÍµéÀÌ´Ù. µû¶ó¼­ ¸â¹ö¸¦ »õ·Î Á¤ÀÇÇÒ ÇÊ¿ä¾øÀÌ Coord Ŭ·¡½º·ÎºÎÅÍ »ó¼Ó¹ÞÀ¸¸é µÈ´Ù. ¿¹Á¦ÀÇ Point Ŭ·¡½º ¼±¾ð¹® µÚ¿¡ ÀÖ´Â : public Coord¶ó´Â ¼±¾ðÀÌ ¹Ù·Î Coord·ÎºÎÅÍ »ó¼ÓÀ» ¹ÞÀ¸¶ó´Â ¶æÀ̸ç ÄÄÆÄÀÏ·¯´Â ÀÌ ¼±¾ð¿¡ ÀÇÇØ Point Ŭ·¡½º¿¡ Coord°¡ °¡Áø ¸ðµç ¸â¹ö¸¦ ¹°·ÁÁØ´Ù. Point´Â Coord°¡ °¡Áø ÁÂÇ¥¿Í °ü·ÃµÈ ¸â¹ö´Â ±×´ë·Î »ç¿ëÇϸ鼭 ¿©±â¿¡ Á¡À» Ç¥½ÃÇÒ ¹®ÀÚ ch ¸â¹ö¿Í ÀÚ½ÅÀ» º¸À̰ųª ¼û±æ ¼ö ÀÖ´Â Show, Hide ¸â¹ö ±×¸®°í »ý¼ºÀÚ¸¸ Ãß°¡ÇÏ¸é µÈ´Ù.

PointŬ·¡½º°¡ CoordŬ·¡½º·ÎºÎÅÍ »ó¼ÓÀ» ¹ÞÀº °ÍÀÌ´Ù. Ŭ·¡½º³¢¸® »ó¼ÓµÉ ¶§ »óÀ§ÀÇ Å¬·¡½º¸¦ ±â¹Ý Ŭ·¡½º(Base Class)¶ó°í ÇÏ¸ç »ó¼ÓÀ» ¹Þ´Â Ŭ·¡½º¸¦ ÆÄ»ý Ŭ·¡½º(Derived Class)¶ó°í ÇÑ´Ù. ÀÌ °æ¿ì Coord ±â¹Ý Ŭ·¡½º·ÎºÎÅÍ Point Ŭ·¡½º°¡ ÆÄ»ýµÇ¾ú´Ù°í Ç¥ÇöÇÑ´Ù. ±â¹Ý, ÆÄ»ýÀ̶ó´Â ¿ë¾î ´ë½Å ºÎ¸ð, ÀÚ½ÄÀ̶ó´Â ¿ë¾î¸¦ ´ë½Å »ç¿ëÇϱ⵵ ÇÏ°í »óÀ§ Ŭ·¡½º(Super Class), ÇÏÀ§ Ŭ·¡½º(Sub Class)¶ó´Â ¿ë¾î¸¦ ¾²±âµµ Çϴµ¥ ¾ð¾î¿¡ µû¶ó »ç¿ëÇÏ´Â ¿ë¾î°¡ Á¶±Ý¾¿ ´Ù¸£´Ù.

»ý¼ºÀÚ, ÆÄ±«ÀÚ µîÀÇ Æ¯¼öÇÑ ¸î °¡Áö¸¦ Á¦¿ÜÇÏ°í ÆÄ»ý Ŭ·¡½º´Â ±â¹Ý Ŭ·¡½ºÀÇ ¸ðµç ¸â¹ö¸¦ »ó¼Ó¹Þ´Â´Ù. Point´Â ÁÂÇ¥¿¡ ´ëÇÑ Á¤º¸ÀÎ x, y ¸â¹ö º¯¼ö¿Í ÀÌ ¸â¹ö¿¡ ´ëÇÑ ¾×¼¼½º ÇÔ¼öÀÎ Get(Set)XY ¸â¹ö ÇÔ¼ö¸¦ Á¤ÀÇÇϰí ÀÖÁö ¾ÊÁö¸¸ ±â¹Ý Ŭ·¡½ºÀÎ Coord·ÎºÎÅÍ »ó¼Ó¹Þ¾ÒÀ¸¸ç ±×·¡¼­ Point¿¡´Â x, y ¸â¹ö°¡ Á¤ÀǵǾî ÀÖ´Â °Í°ú ¸¶Âù°¡ÁöÀÌ´Ù. PointÀÇ ¸â¹ö ÇÔ¼öÀÎ Show, Hide¿¡¼­ x, y ÁÂÇ¥¸¦ ÂüÁ¶ÇÏ¿© Á¡À» Âï°Å³ª ¼û±æ À§Ä¡¸¦ °áÁ¤Çϴµ¥ ¾Æ¹«·± ¹®Á¦°¡ ¾ø´Â °ÍÀÌ´Ù.

main¿¡¼­´Â PointÇüÀÇ °´Ã¼ P¸¦ ¼±¾ðÇ쵂 (10,10) ÁÂÇ¥¿¡ ¹®ÀÚ '@'À¸·Î Á¡À» Ç¥ÇöÇϵµ·Ï Çß´Ù. P.Show ÇÔ¼ö¸¦ È£ÃâÇϸé (10,10) ÁÂÇ¥¿¡ @ ¹®ÀÚ Çϳª°¡ Ãâ·ÂµÉ °ÍÀÌ´Ù. P´Â »ó¼Ó¿¡ ÀÇÇØ ÁÂÇ¥¿¡ ´ëÇÑ Á¤º¸¸¦ °¡Áú ¼ö ÀÖÀ¸¸ç ÀÌ ÁÂÇ¥¿¡ ÁöÁ¤µÈ ¹®ÀÚ¸¦ Ãâ·ÂÇÔÀ¸·Î½á ÀÚ½ÅÀÇ Á¸À縦 ³ªÅ¸³¾ ¼ö ÀÖ´Â ¿ÏÀüÇÑ °´Ã¼ÀÎ °ÍÀÌ´Ù.