29-3.´ÙÁß »ó¼Ó

29-3-°¡.µÎ °³ÀÇ ±â¹Ý Ŭ·¡½º

´ÙÁß »ó¼Ó(Multiple Inheritance)À̶õ µÎ °³ ÀÌ»óÀÇ ±â¹Ý Ŭ·¡½º·ÎºÎÅÍ »õ·Î¿î Ŭ·¡½º¸¦ »ó¼ÓÇÏ´Â °ÍÀÌ´Ù. º¹Àâµµ¿¡ ºñÇØ ½Ç¿ë¼ºÀÌ ¶³¾îÁö´Â ¹®¹ýÀ̹ǷΠóÀ½ºÎÅÍ ³Ê¹« ±íÀÌ °øºÎÇÒ ÇÊ¿ä´Â ¾ø´Â ÁÖÁ¦ÀÌ´Ù. ½ÇÁ¦ »ç¹°ÀÇ ¿¹¸¦ µéÀÚ¸é ´ÙÀ½°ú °°Àº °ÍµéÀÌ ´ÙÁß »ó¼ÓµÈ ÁÁÀº ¿¹ÀÌ´Ù.

 

¢º ÇÚµåÆù, Ä«¸Þ¶ó : Ä«¸Þ¶ó Æù

¢º ÇÁ¸°ÅÍ, ½ºÄ³³Ê, Æѽº : º¹ÇÕ±â

 

ÇÚµåÆùÀº µé°í ´Ù´Ï¸ç ÀüÈ­¸¦ °É°Å³ª ¹Þ´Â ±â°èÀÌ¸ç ¹öÆ°, ¾ÈÅ׳ª, ¾×Á¤, ¹åµ¥¸® µîÀ» °¡Áö°í ÅëÈ­ÇÏ´Â °ÍÀÌ ±âº»ÀûÀÎ ±â´ÉÀÌ´Ù. Ä«¸Þ¶ó´Â »çÁøÀ» Âï´Â ±â°èÀÌ¸ç ·»Áî, ¸Þ¸ð¸® µîÀÇ ºÎÇ°À» °¡Áø´Ù. ÀÌ µÑÀÇ Æ¯¼º°ú ±â´ÉÀ» °áÇÕÇϸé Ä«¸Þ¶ó ÆùÀ̶ó´Â »õ·Î¿î ±â°è°¡ ¸¸µé¾îÁø´Ù. À̶§ Ä«¸Þ¶ó ÆùÀº ÇÚµåÆù°ú Ä«¸Þ¶óÀÇ ¸ðµç ¼Ó¼º°ú µ¿ÀÛÀ» »ó¼Ó¹ÞÀ¸¹Ç·Î ÅëÈ­ÇÏ´Â ±â´É°ú »çÁøÀ» Âï´Â ±â´ÉÀ» µ¿½Ã¿¡ °¡Áø´Ù. ¿©±â¿¡ MP3 ±â´É±îÁö ´õÇϸé MP3 Ä«¸Þ¶ó ÆùÀÌ µÉ ¼öµµ ÀÖ°í TV ±â´É±îÁö °âÇÒ ¼öµµ ÀÖ´Ù.

º¹ÇÕ±âÀÇ °æ¿ì ¼¼ °³ÀÇ »ç¹°À» °áÇÕÇÏ´Â ¿¹Àε¥ ÇÁ¸°ÅÍ¿Í ½ºÄ³³Ê ±×¸®°í ÆѽºÀÇ ±â´ÉÀ» Çϳª·Î ÅëÇÕÇؼ­ ¸¸µç ¹°°ÇÀÌ´Ù. ÀÌ·± ´ÙÁß »ó¼ÓÀÇ ¿¹´Â ½Ç»ýÈ°¿¡¼­µµ ÈçÈ÷ ¹ß°ßÇÒ ¼ö ÀÖÀ¸¸ç ºñ¿ë Àý°¨°ú ÆíÀǼº Çâ»ó¸é¿¡¼­ ¾ÆÁÖ ±àÁ¤ÀûÀ̶ó ÇÒ ¼ö ÀÖ´Ù. ¼ÒÇÁÆ®¿þ¾îÀÇ ¼¼°è¿¡¼­µµ ½Ç»ýÈ°ÀÇ ÅëÇÕ°ú À¯»çÇÑ ÀϵéÀÌ ¹ú¾îÁö´Âµ¥ ÀÌ°ÍÀÌ ¹Ù·Î ´ÙÁß »ó¼ÓÀÌ´Ù.

ÀÌ¹Ì ¸¸µé¾îÁø º¹¼ö °³ÀÇ Å¬·¡½ºµéÀ» ´ÙÁß »ó¼ÓÇÏ¿© µÎ Ŭ·¡½ºÀÇ ±â´ÉÀ» ¸ðµÎ °¡Áö´Â »õ·Î¿î Ŭ·¡½º¸¦ ½±°Ô ¸¸µé ¼ö ÀÖÀ¸¸ç °Ô´Ù°¡ ´õ ÇÊ¿äÇÑ ±â´ÉÀ» Ãß°¡ÇÏ´Â °Íµµ °¡´ÉÇÏ´Ù. ´ÙÀ½ ¿¹´Â ´ÙÁß »ó¼ÓÀÇ °¡Àå Á÷°üÀûÀÎ ¿¹Á¦·Î ³¯Â¥¸¦ Ç¥ÇöÇÏ´Â Date¿Í ½Ã°£À» Ç¥ÇöÇÏ´Â Time Ŭ·¡½º¸¦ ´ÙÁß »ó¼ÓÇÏ¿© ÇÑ ½ÃÁ¡À» Ç¥ÇöÇÒ ¼ö ÀÖ´Â Now¶ó´Â Ŭ·¡½º¸¦ ÆÄ»ý½ÃÅ°´Â °ÍÀÌ´Ù.

 

¿¹ Á¦ : MultiInherit

#include <Turboc.h>

 

class Date

{

protected:

     int year,month,day;

public:

     Date(int y,int m,int d) { year=y;month=m;day=d; }

     void OutDate() { printf("%d/%d/%d",year,month,day); }

};

 

class Time

{

protected:

     int hour,min,sec;

public:

     Time(int h,int m,int s) { hour=h;min=m;sec=s; }

     void OutTime() { printf("%d:%d:%d",hour,min,sec); }

};

 

class Now : public Date, public Time

{

private:

     bool bEngMessage;

     int milisec;

public:

     Now(int y,int m,int d,int h,int min,int s,int ms,bool b=FALSE)

          : Date(y,m,d), Time(h,min,s) { milisec=ms; bEngMessage=b; }

     void OutNow() {

          printf(bEngMessage ? "Now is ":"Áö±ÝÀº ");

          OutDate();

          putch(' ');

          OutTime();

          printf(".%d",milisec);

          puts(bEngMessage ? ".":" ÀÔ´Ï´Ù.");

     }

};

 

void main()

{

     Now N(2005,1,2,12,30,58,99);

     N.OutNow();

}

 

½ÇÇà °á°ú´Â ´ÙÀ½°ú °°´Ù.

 

Áö±ÝÀº 2005/1/2 12:30:58.99 ÀÔ´Ï´Ù.

 

Date¿¡´Â ³¯Â¥¿Í °ü·ÃµÈ ¼Ó¼º°ú ¸â¹ö ÇÔ¼öµéÀÌ ÀÌ¹Ì Á¤ÀǵǾî ÀÖ°í ÀÌ Á¤º¸¸¦ °ü¸®ÇÏ´Â ´Ù¾çÇÑ ¸â¹ö ÇÔ¼öµéµµ ÀÛ¼ºµÇ¾î ÀÖÀ» °ÍÀÌ´Ù(ºñ·Ï ÀÌ ¿¹Á¦ÀÇ Date´Â ±×·¸Áö ¾ÊÁö¸¸). ¸¶Âù°¡Áö·Î Time¿¡´Â ½Ã°£°ú °ü·ÃµÈ ¸ðµç Á¤º¸¿Í ±â´ÉÀÌ Ä¸½¶È­µÇ¾î ÀÖÀ» °ÍÀÌ´Ù. Á¤È®ÇÑ ÇÑ ½ÃÁ¡À» Ç¥ÇöÇÏ´Â Now Ŭ·¡½º´Â óÀ½ºÎÅÍ ´Ù½Ã ¸¸µé ÇÊ¿ä¾øÀÌ ÀÌ¹Ì ¸¸µé¾îÁ® ÀÖ´Â µÎ Ŭ·¡½ºÀÇ ±â´ÉÀ» »ó¼Ó¹Þ±â¸¸ ÇÏ¸é µÈ´Ù.

°Ô´Ù°¡ ´õ ÇÊ¿äÇÑ ¸â¹ö¸¦ Ãß°¡·Î Á¤ÀÇÇÒ ¼öµµ Àִµ¥ À§ ¿¹Á¦ÀÇ Now¿¡´Â ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÒ ¾ð¾î¸¦ ÁöÁ¤ÇÏ´Â bEngMessage¿Í 1/100ÃÊ ´ÜÀ§ÀÇ Á» ´õ Á¤¹ÐÇÑ ½Ã°£±îÁö Ç¥ÇöÇϱâ À§ÇÑ milisec ¸â¹ö¸¦ ´õ Á¤ÀÇÇÏ°í ÀÖ´Ù. ±×¸®°í ÀÚ½ÅÀÌ Ç¥ÇöÇÏ´Â Á¤º¸¸¦ Ãâ·ÂÇϱâ À§ÇØ OutNow¶ó´Â ¸â¹ö ÇÔ¼ö¸¦ Á¦°øÇϸç ÀÌ ÇÔ¼ö¿¡¼­ »ó¼Ó¹ÞÀº OutDate, OutTimeÀ» ÀûÀýÇÏ°Ô Àß ºÎ·Á¸Ô±âµµ ÇÑ´Ù. Now°¡ »ó¼ÓµÇ´Â ¸ð¾çÀ» ±×¸²À¸·Î ±×·Áº¸¸é ´ÙÀ½°ú °°´Ù.

´ÙÁß »ó¼ÓÀ» ¹ÞÀ» ¶§´Â Ŭ·¡½º ¼±¾ð¹®ÀÇ : ´ÙÀ½¿¡ ±â¹Ý Ŭ·¡½ºÀÇ ¸ñ·ÏÀ» ÄÞ¸¶·Î ±¸ºÐÇÏ¿© Àû´Â´Ù. À̶§ °¢ ±â¹Ý Ŭ·¡½ºÀÇ »ó¼Ó ¾×¼¼½º ÁöÁ¤Àº ¼­·Î ´Ù¸¦ ¼ö ÀÖÀ¸¹Ç·Î °³º°ÀûÀ¸·Î ÁöÁ¤ÇØ¾ß ÇÏ¸ç ¸¸¾à ÇÑÂÊÀ» »ý·«ÇÏ¿© class Now : public Date, TimeÀ¸·Î ÀûÀ¸¸é µðÆúÆ® »ó¼Ó ¾×¼¼½º ÁöÁ¤ÀÚÀÎ private°¡ Àû¿ëµÈ´Ù.

´ÜÀÏ »ó¼ÓÀÇ °æ¿ì¿Í ¸¶Âù°¡Áö·Î »ó¼Ó¹ÞÀº ¸â¹öÀÇ ÃʱâÈ­´Â ±â¹Ý Ŭ·¡½ºÀÇ »ý¼ºÀÚ°¡ ´ë½Å Çϴµ¥ Ŭ·¡½º ¼±¾ð¹®¿¡ ³ªÅ¸³­ ±â¹Ý Ŭ·¡½º ¼ø¼­´ë·Î »ý¼ºÀÚ°¡ È£ÃâµÈ´Ù. Now Ŭ·¡½ºÀÇ °æ¿ì Date, Time ¼øÀ¸·Î ´ÙÁß »ó¼ÓµÇ¾úÀ¸¹Ç·Î DateÀÇ »ý¼ºÀÚ°¡ ¸ÕÀú È£ÃâµÇ°í ´ÙÀ½À¸·Î TimeÀÇ »ý¼ºÀÚ°¡ È£ÃâµÉ °ÍÀÌ´Ù. »ý¼ºÀÚÀÇ ÃʱâÈ­ ¸®½ºÆ®¿¡ ³ªÅ¸³­ ¼ø¼­´ë·Î°¡ ¾Æ´Ï¶ó Ŭ·¡½º ¼±¾ð¹®ÀÇ ±â¹Ý Ŭ·¡½º ÁöÁ¤ ¼ø¼­´ë·ÎÀÓÀ» À¯ÀÇÇÏÀÚ.