27-2.ÇÁ·»µå

27-2-°¡.ÇÁ·»µå ÇÔ¼ö

Á¤º¸¸¦ ÀºÆóÇÏ¸é °´Ã¼ÀÇ ½Å·Ú¼ºÀÌ ³ô¾ÆÁö°í ±â´É °³¼±µµ ¿ëÀÌÇÑ °ÍÀº ºÐ¸íÇÏ´Ù. ±×·¯³ª ¼ÖÁ÷È÷ ºÒÆíÇÑ ¸éÀÌ ÀÖ´Ù. C++ÀÇ ¾×¼¼½º ÁöÁ¤ÀÚ´Â ³Ê¹« ¾ö°ÝÇØ¼­ ÀÏ´Ü ¼û±â¸é Á¤»óÀûÀÎ ¹®¹ýÀ¸·Î´Â ¿ÜºÎ¿¡¼­ ÀÌ ¸â¹ö¸¦ ÂüÁ¶ÇÒ ¼ö ¾ø´Ù. ¹°·Ð ij½ºÆ® ¿¬»êÀÚ¿Í Æ÷ÀÎÅ͸¦ »ç¿ëÇÏ´Â ºñÁ¤»óÀûÀÎ ¹®¹ýÀ» µ¿¿øÇÏ¸é °¡´ÉÇÒ ¼öµµ ÀÖÁö¸¸ ÀÌ·¸°Ô Çϸé À̽ļº°ú È®À强Àº Æ÷±âÇØ¾ß ÇÑ´Ù. ¾î¶² °æ¿ì¿¡´Â ÀÌ·± Á¤º¸ ÀºÆó ±â´ÉÀÌ ¹æÇذ¡ µÉ ¼öµµ Àֱ⠶§¹®¿¡ ¿¹¿ÜÀûÀ¸·Î ÁöÁ¤ÇÑ ´ë»ó¿¡ ´ëÇØ¼­´Â ¸ðµç ¸â¹ö¸¦ °ø°³ÇÒ ¼ö Àִµ¥ À̸¦ ÇÁ·»µå ÁöÁ¤À̶ó°í ÇÑ´Ù.

ÇÁ·»µå´Â Àü¿ª ÇÔ¼ö, Ŭ·¡½º, ¸â¹ö ÇÔ¼öÀÇ ¼¼°¡Áö ¼öÁØ¿¡¼­ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. »ó´ëÀûÀ¸·Î °¡Àå °£´ÜÇÑ ÇÁ·»µå ÇÔ¼öºÎÅÍ ¾Ë¾Æº¸ÀÚ. ÇÁ·»µå·Î ÁöÁ¤ÇÏ°í ½ÍÀº ÇÔ¼öÀÇ ¿øÇüÀ» Ŭ·¡½º ¼±¾ð¹®¿¡ ÀûµÇ ¿øÇü¾Õ¿¡ friend¶ó´Â Ű¿öµå¸¦ ºÙÀδÙ. friend ¼±¾ðÀÇ À§Ä¡´Â ¾Æ¹«·¡µµ »ó°ü¾øÀ¸¸ç ¾î¶² ¿µ¿ª¿¡ ÀÖ´õ¶óµµ Â÷À̰¡ ¾øÁö¸¸ Ŭ·¡½º ¼±¾ðºÎÀÇ ¼±µÎ¿¡ µÎ¾î ´«¿¡ Àß ¶çµµ·Ï ÇÏ´Â °ÍÀÌ ÁÁ´Ù. ´ÙÀ½Àº func ÇÔ¼ö¸¦ Some Ŭ·¡½ºÀÇ ÇÁ·»µå·Î ÁöÁ¤ÇÑ °ÍÀÌ´Ù.

 

class Some

{

     friend void func();

     ....

};

 

funcÇÔ¼ö´Â Ŭ·¡½º ¼±¾ðºÎ¿¡ ¿øÇüÀÌ Æ÷ÇԵǾî ÀÖÁö¸¸ SomeŬ·¡½ºÀÇ ¸â¹ö´Â ¾Æ´Ï¸ç º»Ã¼´Â ¿ÜºÎ¿¡ µû·Î Á¸ÀçÇϹǷΠ´Ü¼øÇÑ Àü¿ª ÇÔ¼öÀÌ´Ù. ÇÏÁö¸¸ Some Ŭ·¡½º ¼±¾ðºÎ¿¡¼­ func ÇÔ¼ö¸¦ ÇÁ·»µå·Î ÁöÁ¤ÇßÀ¸¹Ç·Î ¸¶Ä¡ Ŭ·¡½º ¼Ò¼ÓÀÇ ¸â¹ö ÇÔ¼öÀÎ °Íó·³ ÀÌ Å¬·¡½ºÀÇ ¸ðµç ¸â¹ö¸¦ ÀÚÀ¯·Ó°Ô ¾×¼¼½ºÇÒ ¼ö Àִ Ư±ÇÀÌ ºÎ¿©µÈ´Ù. private¿µ¿ª¿¡ ÀÖ°Ç public ¿µ¿ª¿¡ ÀÖ°Ç ¾î¶² ¸â¹ö º¯¼öµçÁö ÀÐ°í ¾µ ¼ö ÀÖÀ¸¸ç ¸ðµç ¸â¹ö ÇÔ¼ö¸¦ ÀÚÀ¯·Ó°Ô È£ÃâÇÒ ¼ö ÀÖ´Ù. ÇÁ·»µå ÇÔ¼ö°¡ ½Ç¿ëÀûÀ¸·Î »ç¿ëµÇ´Â ¿¹¸¦ º¸ÀÚ.

 

¿¹ Á¦ : FriendFunc

#include <Turboc.h>

 

class Date;

class Time

{

     friend void OutToday(Date &,Time &);

private:

     int hour,min,sec;

public:

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

};

 

class Date

{

     friend void OutToday(Date &,Time &);

private:

     int year,month,day;

public:

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

};

 

void OutToday(Date &d, Time &t)

{

     printf("¿À´ÃÀº %d³â %d¿ù %dÀÏÀ̸ç Áö±Ý ½Ã°£Àº %d:%d:%dÀÔ´Ï´Ù.\n",

          d.year,d.month,d.day,t.hour,t.min,t.sec);

}

 

void main()

{

     Date D(2005,01,02);

     Time T(12,34,56);

     OutToday(D,T);

}

 

Date´Â ³¯Â¥¸¦ Ç¥ÇöÇϴ Ŭ·¡½ºÀ̸ç TimeÀº ½Ã°£À» Ç¥ÇöÇϴ Ŭ·¡½ºÀÌ´Ù. Á¤º¸¸¦ ±â¾ïÇÏ´Â ÁÖ¿ä º¯¼öµéÀº ¸ðµÎ private ¿µ¿ª¿¡ ¼±¾ðµÇ¾î ÀÖ¾î ¿ÜºÎ¿¡¼­ ÇԺηΠ¾×¼¼½ºÇÏÁö ¸øÇϵµ·Ï ÇÏ¿´´Ù. OutTodayÇÔ¼ö´Â ÀÌ µÎ Ŭ·¡½ºÀÇ °´Ã¼¸¦ Àμö·Î Àü´Þ¹Þ¾Æ ³¯Â¥¿Í ½Ã°£À» µ¿½Ã¿¡ Ãâ·ÂÇÑ´Ù. ±×·¯±â À§Çؼ­ OutToday´Â ¾çÂÊ Å¬·¡½ºÀÇ ¸ðµç ¸â¹ö¸¦ ÀÐÀ» ¼ö ÀÖ¾î¾ß Çϴµ¥ Date³ª TimeÀÇ ¸â¹ö ÇÔ¼ö·Î Æ÷ÇԵǸé ÇÑÂʹۿ¡ ÀÐÀ» ¼ö ¾øÀ» °ÍÀÌ´Ù. ÇÑ ÇÔ¼ö°¡ µ¿½Ã¿¡ µÎ Ŭ·¡½ºÀÇ ¸â¹ö ÇÔ¼ö°¡ µÉ ¼ö´Â ¾ø±â ¶§¹®ÀÌ´Ù.

ÀÌ·² ¶§ OutToday¸¦ ¸â¹ö ÇÔ¼ö°¡ ¾Æ´Ñ Àü¿ª ÇÔ¼ö·Î Á¤ÀÇÇÏ°í ¾çÂÊ Å¬·¡½º¿¡¼­ ÀÌ ÇÔ¼ö¸¦ ÇÁ·»µå·Î ÁöÁ¤ÇÏ¸é µÈ´Ù. ÀÌ·¸°Ô µÇ¸é OutToday´Â DateÀÇ year, month, day¿Í TimeÀÇ hour, min, secÀ» ¸ðµÎ ÀÐÀ» ¼ö ÀÖ´Ù. ¸¶Ä¡ ¾çÂÊ Å¬·¡½ºÀÇ ¸â¹ö ÇÔ¼öÀÎ °Íó·³ ¼û°ÜÁø ¸â¹ö¸¦ ÀÚÀ¯·Ó°Ô ¾×¼¼½ºÇÑ´Ù. Ŭ·¡½º ¼±¾ð¹®ÀÇ ÇÁ·»µå ÁöÁ¤À» ÁÖ¼®À¸·Î ó¸®ÇÑ ÈÄ ÄÄÆÄÀÏÇÏ¸é ¼û°ÜÁø ¸â¹ö¸¦ ¾×¼¼½ºÇÒ ¼ö ¾ø´Ù´Â ¿¡·¯ ¸Þ½ÃÁö°¡ Àܶà Ãâ·ÂµÉ °ÍÀÌ´Ù.

OutToday ÇÔ¼ö´Â Time, Date ŸÀÔÀÇ Àμö¸¦ µ¿½Ã¿¡ ÃëÇϴµ¥ ÀÌ ÇÔ¼öÀÇ ¿øÇüÀ» »ç¿ëÇϱâ Àü¿¡ µÎ ¸íĪÀÌ Å¬·¡½º¶ó´Â °ÍÀ» ¼±¾ðÇØ¾ß ÇÑ´Ù. ¾çÂÊ Å¬·¡½º ¼±¾ð¹®¿¡ ÇÁ·»µå ÁöÁ¤ÀÌ µ¿½Ã¿¡ µé¾î°¡¾ß ÇϹǷΠ¸ÕÀú ¼±¾ðÇÏ´Â ÂÊÀ» À§ÇØ ³ªÁß¿¡ ¼±¾ðµÇ´Â Ŭ·¡½º¿¡ ´ëÇÑ Àü¹æ ¼±¾ðÀÌ ÇÊ¿äÇÏ´Ù. Time Ŭ·¡½º ¼±¾ð ÀÌÀü¿¡ Date°¡ Ŭ·¡½º¶ó´Â °ÍÀ» ¸ÕÀú ¾Ë·Á¾ß ÄÄÆÄÀÏ·¯°¡ OutTodayÀÇ ¿øÇüÀ» ÇØ¼®ÇÒ ¼ö ÀÖÀ¸¸ç ±×·¡¼­ class Date; ¶ó´Â Àü¹æ ¼±¾ðÀÌ ¼±µÎ¿¡ Æ÷ÇԵǾú´Ù.

ÀÌ ¿¹Á¦ÀÇ °æ¿ì ÇÁ·»µå¸¸ÀÌ ¹®Á¦¸¦ ÇØ°áÇÏ´Â À¯ÀÏÇÑ ¹æ¹ýÀº ¾Æ´Ï´Ù. ¿ÜºÎ¿¡¼­ ¾×¼¼½ºÇÒ Çʿ䰡 ÀÖ´Â ¸â¹ö¸¦ °ø°³ÇÏ´Â ±Ø¾à ó¹æÀ» ¾µ ¼öµµ ÀÖÁö¸¸ ÀÌ·¸°Ô Çϸé Á¤º¸ ÀºÆóÀÇ ¿øÄ¢ÀÌ ¹«³ÊÁø´Ù. ¶ÇÇÑ ÇÁ·»µå ÁöÁ¤À» ÇÏ´Â ´ë½Å °¢ Ŭ·¡½º¿¡ ¼û°ÜÁø ¸â¹ö¸¦ ´ë½Å ÀоîÁÖ´Â Get, Set ¾×¼¼½º ÇÔ¼ö¸¦ °ø°³ ¿µ¿ª¿¡ ÀÛ¼ºÇϰí OutToday´Â ¾×¼¼½º ÇÔ¼öµé·Î °ªÀ» ÀÐÀ» ¼öµµ ÀÖ´Ù. ÇÏÁö¸¸ ÀÌ·± ¹æ¹ýÀÌ ¹ø°Å·Ó°í ±ÍÂú±â ¶§¹®¿¡ ÇÁ·»µå ÁöÁ¤À̶ó´Â Á» ´õ °£ÆíÇÑ ¹æ¹ýÀ» »ç¿ëÇÏ´Â °ÍÀÌ´Ù. ÀÌ ¿¹Á¦´Â ¼³¸íÀ» À§ÇÑ °³³äÀûÀÎ ¿¹¿¡ ºÒ°úÇϸç ÇÁ·»µå°¡ ²À ÇÊ¿äÇÑ °æ¿ì´Â ´ÙÀ½ ÀåÀÇ ¿¬»êÀÚ ¿À¹ö·Îµù¿¡¼­ º¸°Ô µÉ °ÍÀÌ´Ù.