29-4.Ŭ·¡½º ÀçȰ¿ë

29-4-°¡.Æ÷ÇÔ

»ó¼ÓÀº ÀÌ¹Ì ¸¸µé¾îÁø Ŭ·¡½º¸¦ ÀçȰ¿ëÇÏ´Â °´Ã¼ ÁöÇâÀûÀÎ ±â¹ýÀÇ ÇϳªÀÌ´Ù. »ó¼ÓÀ» ¹ÞÀ¸¸é ±â¹Ý Ŭ·¡½º¿¡ ÀÌ¹Ì Á¤ÀÇµÈ ¼Ó¼º°ú µ¿ÀÛÀ» ±×´ë·Î Àç»ç¿ëÇÒ ¼ö ÀÖ¾î Ŭ·¡½º¸¦ ¸¸µå´Â ½Ã°£°ú ³ë·ÂÀ» Àý°¨ÇÒ ¼ö ÀÖ´Ù. ÀÌÀüÀÇ ÀýÂ÷½Ä ÇÁ·Î±×·¡¹Ö ±â¹ý¿¡¼­´Â ã¾Æº¼ ¼ö ¾ø´Â ±â¹ßÇÏ°í ¸ÚÁø ¹æ¹ýÀ̱â´Â ÇÏ´Ù. ±×·¯³ª »ó¼Ó¸¸ÀÌ Å¬·¡½º¸¦ ÀçȰ¿ëÇÏ´Â À¯ÀÏÇÑ ±â¹ýÀº ¾Æ´Ï´Ù.

»ó¼Ó¿Ü¿¡µµ ÀüÅëÀûÀÎ Æ÷ÇÔ ¹æ¹ýÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. Æ÷ÇÔ(Containment)À̶õ ÀçȰ¿ëÇÏ°í ½ÍÀº Ŭ·¡½ºÀÇ °´Ã¼¸¦ ¸â¹ö º¯¼ö·Î ¼±¾ðÇÏ´Â ¹æ¹ýÀÌ´Ù. Ŭ·¡½º¿¡ Æ÷ÇԵǴ ¸â¹öÀÇ Å¸ÀÔ¿¡´Â Á¦ÇÑÀÌ ¾øÀ¸¹Ç·Î ´Ù¸¥ Ŭ·¡½ºÀÇ °´Ã¼µµ ´ç¿¬È÷ ¸â¹ö°¡ µÉ ¼ö ÀÖ´Ù. C¿¡¼­ ±¸Á¶Ã¼°¡ ´Ù¸¥ ±¸Á¶Ã¼¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ´Â °Í°ú °³³äÀûÀ¸·Î µ¿ÀÏÇÏ¸ç »ç½Ç º°·Î Ưº°ÇÑ ±â¹ýµµ ¾Æ´Ï´Ù. ´ÙÀ½ ¿¹Á¦´Â Æ÷ÇÔ ±â¹ýÀ¸·Î Date Ŭ·¡½º¸¦ ÀçȰ¿ëÇÏ´Â °ÍÀ» º¸¿© ÁØ´Ù.

 

¿¹ Á¦ : MemObject

#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 Product

{

private:

     char Name[64];

     char Company[32];

     Date ValidTo;

     int Price;

public:

     Product(char *aN, char *aC, int y,int m,int d, int aP) : ValidTo(y,m,d) {

          strcpy(Name,aN);

          strcpy(Company,aC);

          Price=aP;

     }

     void OutProduct() {

          printf("À̸§:%s\n",Name);

          printf("Á¦Á¶»ç:%s\n",Company);

          printf("À¯È¿±â°£:");

          ValidTo.OutDate();

          puts("");

          printf("°¡°Ý:%d\n",Price);

     }

};

 

void main()

{

     Product S("»õ¿ì±ø","³ó½É",2009,8,15,900);

     S.OutProduct();

}

 

µÎ °³ÀÇ Å¬·¡½º°¡ ¼±¾ðµÇ¾î Àִµ¥ Date´Â Áö±Ý±îÁö °è¼Ó ºÁ ¿Ô´ø Ä£¼÷ÇÑ ³¯Â¥ Ŭ·¡½ºÀÌ´Ù. Product´Â Á¦Ç° Çϳª¿¡ ´ëÇÑ Á¤º¸¸¦ Ç¥ÇöÇϴµ¥ Á¦Ç°ÀÇ À̸§, Á¦Á¶»ç, À¯Åë±âÇÑ, °¡°Ý µîÀ» ¸â¹ö·Î °¡Áö°í ÀÖ´Ù. À̸§°ú Á¦Á¶»ç´Â ¹®ÀÚ¿­ÀÌ°í °¡°ÝÀº Á¤¼öÀ̹ǷΠÀÌ¹Ì Àͼ÷ÇÑ char [ ]À̳ª intÇüÀ¸·Î ¼±¾ðÇÒ ¼ö ÀÖÁö¸¸ ³¯Â¥´Â ³â, ¿ù, ÀÏÀÇ ¿ä¼Ò·Î ±¸¼ºµÇ´Â ´Ù¼Ò º¹ÀâÇÑ Á¤º¸À̹ǷΠ´Ü¼ø ŸÀÔÀ¸·Î´Â ¼±¾ðÇÒ ¼ö ¾ø´Ù. ±×·¸´Ù°í ÇØ¼­ Product°¡ year, month, day¸â¹ö¸¦ Á÷Á¢ ¼±¾ðÇÏ°í °ü¸®ÇÏ´Â °Íµµ ¹«Ã´ ¹ø°Å·Ó´Ù.

±×·¡¼­ ÀÌ¹Ì ¸¸µé¾îÁ® ÀÖ´Â Date Ŭ·¡½º¸¦ ÀçȰ¿ëÇϱâ À§ÇØ DateÀÇ °´Ã¼ ValidTo¸¦ ¸â¹ö·Î ¼±¾ðÇß´Ù. Date¾È¿¡´Â ³¯Â¥¿Í °ü·ÃµÈ ¸ðµç ¼Ó¼º°ú ±â´ÉÀÌ Ä¸½¶È­µÇ¾î ÀÖÀ¸¹Ç·Î Date ŸÀÔÀÇ °´Ã¼¸¦ ¸â¹ö·Î ¼±¾ðÇϱ⸸ Çϸé ÀÌ °´Ã¼¸¦ »ç¿ëÇØ ¼Õ½±°Ô À¯È¿±â°£À» Ç¥Çö ¹× °ü¸®ÇÒ ¼ö ÀÖ´Ù. ProductÀÇ ¸â¹ö ÇÔ¼ö OutProduct´Â ValidTo °´Ã¼ÀÇ OutDate ¸â¹ö ÇÔ¼ö¸¦ È£ÃâÇÏ¿© À¯È¿±â°£À» Ãâ·ÂÇÑ´Ù. ½ÇÇà °á°ú´Â ´ÙÀ½°ú °°´Ù.

 

À̸§:»õ¿ì±ø

Á¦Á¶»ç:³ó½É

À¯È¿±â°£:2009/8/15

°¡°Ý:900

 

°´Ã¼´Â »ý¼ºÀÚ º»Ã¼°¡ ½ÇÇàµÇ±â Àü¿¡ »ó¼Ó¹ÞÀº ¸ðµç ¸â¹ö¿Í Æ÷ÇÔµÈ °´Ã¼¸¦ ¿ÏÀüÈ÷ ÃʱâÈ­ÇØ¾ß ÇÑ´Ù. ±×·¡¼­ Æ÷ÇÔµÈ °´Ã¼´Â ¹Ýµå½Ã ÃʱâÈ­ ¸®½ºÆ®¿¡¼­, Áï »ý¼ºÀÚ º»Ã¼ ÀÌÀü¿¡ ÃʱâÈ­ÇØ¾ß ÇÑ´Ù. À̶§ ÃʱâÈ­ ¸®½ºÆ®¿¡´Â Ŭ·¡½º À̸§ÀÌ ¾Æ´Ñ ÃʱâÈ­ÇϰíÀÚ ÇÏ´Â °´Ã¼ÀÇ ¸â¹ö À̸§À» »ç¿ëÇÑ´Ù. À§ ¿¹Á¦¿¡¼­´Â Product »ý¼ºÀÚÀÇ ÃʱâÈ­ ¸®½ºÆ®¿¡¼­ ValidTo(y,m,d)¸¦ È£ÃâÇÏ¿© ValidTo ¸â¹ö °´Ã¼¸¦ ÃʱâÈ­Çϰí ÀÖ´Ù. Date Ŭ·¡½º¸¦ ÃʱâÈ­ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó Product¿¡ Æ÷ÇÔµÈ ValidTo °´Ã¼¸¦ ÃʱâÈ­ÇÏ´Â °ÍÀ̹ǷΠDate(y,m,d)·Î Àû¾î¼­´Â ¾ÈµÈ´Ù.

¸¸¾à Æ÷ÇÔµÈ °´Ã¼¿¡ ´ëÇÑ Ãʱâ½ÄÀÌ ÃʱâÈ­ ¸®½ºÆ®¿¡¼­ ¹ß°ßµÇÁö ¾ÊÀ¸¸é À̶§´Â µðÆúÆ® »ý¼ºÀÚ°¡ È£ÃâµÈ´Ù. Product »ý¼ºÀÚÀÇ ÃʱâÈ­ ¸®½ºÆ®¿¡¼­ ValidTo Ãʱâ½ÄÀ» »© ¹ö¸®¸é DateÀÇ µðÆúÆ® »ý¼ºÀÚ°¡ È£ÃâµÇ´Âµ¥ ÀÌ Å¬·¡½º´Â µðÆúÆ® »ý¼ºÀÚ¸¦ Á¤ÀÇÇϰí ÀÖÁö ¾ÊÀ¸¹Ç·Î ¿¡·¯·Î ó¸®µÉ °ÍÀÌ´Ù. Æ÷ÇÔµÈ °´Ã¼¸¦ ¾î¶»°Ô ÃʱâÈ­ÇÒÁö °áÁ¤ÇÒ ¼ö ¾ø±â ¶§¹®ÀÌ´Ù. Date¿¡ ºó µðÆúÆ® »ý¼ºÀÚ¸¦ Ãß°¡Çϰí ProductÀÇ »ý¼ºÀÚ¸¦ ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÏ¸é ¾î¶»°Ô µÉ±î?

 

     Product(char *aN, char *aC, int y,int m,int d, int aP) {

          ValidTo=Date(y,m,d);

          strcpy(Name,aN);

          strcpy(Company,aC);

          Price=aP;

     }

 

ÃʱâÈ­ ¸®½ºÆ®¿¡ ValidTo Ãʱâ½ÄÀ» »©°í ´ë½Å »ý¼ºÀÚ º»Ã¼¿¡ ´ëÀÔ¹®À» ÀÛ¼ºÇß´Ù. ÀÌ·¸°Ô ÇÏ¸é ¿¡·¯¾øÀÌ ÄÄÆÄÀϵǰí Product °´Ã¼°¡ Á¤»óÀûÀ¸·Î ÃʱâÈ­µÇ±â´Â ÇÏÁö¸¸ ÃʱâÈ­ °úÁ¤Àº »ó´çÈ÷ ´Þ¶óÁø´Ù. DateÀÇ µðÆúÆ® »ý¼ºÀÚ¿¡ ÀÇÇØ ValidTo°¡ ÀÏ´Ü ¾²·¹±â°ªÀ¸·Î ÃʱâÈ­µÈ ÈÄ ProductÀÇ »ý¼ºÀÚ º»Ã¼¿¡¼­ ´Ù½Ã Date(int, int, int) »ý¼ºÀÚ¸¦ È£ÃâÇÏ¿© Àӽà °´Ã¼¸¦ »ý¼ºÇϰí ÀÌ Àӽà °´Ã¼°¡ ValidTo °´Ã¼·Î ´ëÀԵǸç ÀÌ °úÁ¤¿¡¼­ ´ëÀÔ ¿¬»êÀÚ°¡ ½ÇÇàµÉ °ÍÀÌ´Ù.

µÎ °³ÀÇ »ý¼ºÀÚ°¡ Â÷·Ê´ë·Î È£ÃâµÇ´Â ÀÌÁß »ý¼º °úÁ¤À» °ÅÄ¡¸ç ´ëÀÔ ¿¬»êÀÚ±îÁö È£ÃâµÈ´Ù. Date´Â ¾ÆÁÖ ÀÛÀº Ŭ·¡½º¶ó º° ºÎ´ãÀÌ ¾øÁö¸¸ ´ëÇü Ŭ·¡½º´Â ÀÌ Â÷À̸¦ ¹«½ÃÇÒ ¼ö ¾ø´Ù. µðÆúÆ® ÃʱâÈ­, Àӽà °´Ã¼ »ý¼º, ´ëÀÔ ¿¬»ê ÁßÀÇ ±íÀº º¹»ç, Àӽà °´Ã¼ ÆÄ±«±îÁö ¾öû³ª°Ô ±ä °úÁ¤À» °ÅÃÄ¾ß ÃʱâÈ­°¡ ¿Ï·áµÈ´Ù. ÀÌ·± º¹ÀâÇÑ °úÁ¤ÀÌ ½ÈÀ¸¸é ¹®¹ýÀÇ Á¤»óÀûÀÎ ±Ç°í´ë·Î ÃʱâÈ­ ¸®½ºÆ®¿¡¼­ Æ÷ÇÔ °´Ã¼¸¦ ÃʱâÈ­ÇÏ´Â °ÍÀÌ ÁÁ´Ù.

Product°¡ Date¸¦ Æ÷ÇÔÇϰí ÀÖ´Â ÀÌ·± °ü°è¸¦ HAS A °ü°è¶ó°í Çϴµ¥ ÀÏÁ¾ÀÇ ¼ÒÀ¯ °ü°èÀÌ¸ç »ó¼Ó °ü°è¸¦ Ç¥ÇöÇÏ´Â IS A¿Í´Â Àǹ̰¡ ´Ù¸£´Ù. Á¦Ç°ÀÌ À¯È¿±â°£ Ç¥ÇöÀ» À§ÇØ ³¯Â¥¸¦ ¼ÒÀ¯(Product has a Date)ÇÏ´Â °ÍÀÌÁö Á¦Ç°ÀÌ ÀÏÁ¾ÀÇ ³¯Â¥(Product is a Date)ÀÎ °ÍÀº ¾Æ´Ï´Ù. µÎ Ŭ·¡½ºÀÇ °ü°è°¡ IS A °ü°èÀÏ ¶§´Â ÁÖ·Î public »ó¼ÓÀ» »ç¿ëÇϰí HAS A °ü°èÀÏ ¶§´Â Æ÷ÇÔ ±â¹ýÀÌ ÀûÇÕÇÏ´Ù. ±×·¯³ª ¸ðµç Ŭ·¡½ºÀÇ °ü°è°¡ ÀÌó·³ ¸íÈ®ÇÏ°Ô ±¸ºÐµÇ´Â °ÍÀº ¾Æ´Ï¹Ç·Î Àý´ëÀûÀÎ ÀçȰ¿ë ¹ýÄ¢À̶ó°í Çϱâ´Â ¾î·Æ´Ù.