29-4-³ª.private »ó¼Ó

Product°¡ Date ŸÀÔÀÇ °´Ã¼ ValidTo¸¦ Æ÷ÇÔÇÒ ¶§ ¾×¼¼½º ¼Ó¼ºÀº ¸¶À½´ë·Î ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. ValidTo¸¦ ¿ÜºÎ¿¡ °ø°³ÇÏ°í ½ÍÀ¸¸é publicÀ¸·Î ¼±¾ðÇÏ°í ¼û±â°í ½Í´Ù¸é private·Î ¼±¾ðÇÏ¸é µÈ´Ù. MemObject ¿¹Á¦ÀÇ °æ¿ì ValidTo´Â private ¼Ó¼ºÀ» °¡Áö¹Ç·Î ProductÀÇ ¿ÜºÎ¿¡¼­´Â ÀÌ ¸â¹ö¸¦ ÂüÁ¶ÇÒ ¼ö ¾ø´Ù. main ÇÔ¼ö¿¡¼­ S.ValidTo.OutDate()¸¦ È£ÃâÇÒ ¼ö ¾øµµ·Ï Á¤º¸°¡ ÀºÆóµÇ¾î ÀÖÀ¸¸ç À¯È¿±â°£Àº Á¦Ç°ÀÇ °íÀ¯ Á¤º¸À̹ǷΠ¼û±â´Â °ÍÀÌ ³í¸®»ó ÇÕ´çÇÏ´Ù.

¹°·Ð °ø°³ÇÏ°íÀÚ ÇÑ´Ù¸é ¾ðÁ¦µçÁö publicÀ¸·Î ¾×¼¼½º ÁöÁ¤¸¸ ¹Ù²Ù¸é µÈ´Ù. ¶ÇÇÑ ¿ÜºÎ¿¡ ´ëÇؼ­´Â ¼û±âµÇ ÆÄ»ý Ŭ·¡½º´Â Á÷Á¢ ÂüÁ¶ÇÒ ¼ö ÀÖµµ·Ï Çã°¡ÇÏ°í ½Í´Ù¸é private¿Í publicÀÇ Áß°£Âë µÇ´Â protected¶ó´Â ¾×¼¼½º ¼Ó¼ºÀ» ÁÙ ¼öµµ ÀÖ´Ù. ÀÌó·³ Æ÷ÇÔ °ü°è¿¡¼­´Â Æ÷ÇÔÇϴ Ŭ·¡½º°¡ Æ÷ÇԵǴ °´Ã¼ÀÇ ¾×¼¼½º ¼Ó¼ºÀ» ÀÓÀÇ·Î °áÁ¤ÇÑ´Ù. ´Ü, Æ÷ÇԵǴ °´Ã¼°¡ private·Î ¼±¾ðÇØ ³õÀº ¸â¹ö´Â ¿øÄ¢ÀûÀ¸·Î Àڽſܿ¡´Â ´©±¸µµ ÀÐÀ» ¼ö ¾ø´Ù.

±×·¸´Ù¸é »ó¼ÓÀÇ °æ¿ì´Â ¾î¶³±î? »ó¼Ó¹ÞÀº ¸â¹ö¿¡ ´ëÇؼ­µµ Ŭ·¡½º°¡ ÀÓÀÇ·Î ¾×¼¼½º ÁöÁ¤À» º¯°æÇÒ ¼ö ÀÖÀ»±î? ÆÄ»ý Ŭ·¡½º´Â ÀÚ½ÅÀÌ Á÷Á¢ Á¤ÀÇÇÑ °ÍÀÌµç »ó¼Ó¹ÞÀº °ÍÀÌµç °á°úÀûÀ¸·Î ÀÚ½ÅÀÇ ¼ÒÀ¯°¡ µÈ ¸â¹ö¿¡ ´ëÇØ ¿øÇϴ´ë·Î Á¤º¸ ÀºÆó¸¦ ÇÒ ¼ö ÀÖ¾î¾ß Çϸç C++Àº ÀÌ·± ¹æ¹ýÀ» Á¦°øÇϴµ¥ ÀÌ°ÍÀÌ ¹Ù·Î »ó¼Ó ¾×¼¼½º ÁöÁ¤ÀÚÀÌ´Ù. Ŭ·¡½º ¼±¾ð¹®ÀÇ ±â¹Ý Ŭ·¡½º¾Õ¿¡ ºÙ´Â public, private, protected°¡ ¹Ù·Î À̰͵éÀÌ¸ç »ó¼ÓµÈ ¸â¹öÀÇ ¾×¼¼½º ¼Ó¼º¿¡ ¿µÇâÀ» ¹ÌÄ£´Ù.

Áö±Ý±îÁö ¿¬±¸ÇØ º» »ó¼ÓÀº public »ó¼ÓÀ̾úÀ¸¸ç public »ó¼ÓÀº ±â¹Ý Ŭ·¡½ºÀÇ ¾×¼¼½º ¼Ó¼ºÀÌ ÆÄ»ý Ŭ·¡½º¿¡¼­ ±×´ë·Î À¯ÁöµÇ´Â »ó¼ÓÀÌ´Ù. Áï, ±â¹Ý Ŭ·¡½º°¡ publicÀ¸·Î °ø°³ÇØ ³õÀº ¸â¹ö´Â »ó¼ÓµÈ ÈÄ¿¡µµ ¿©ÀüÈ÷ publicÀÌ´Ù. ¿©±â¼­ ³ª¸ÓÁö µÎ »ó¼Ó¿¡ ´ëÇØ ¿¬±¸ÇØ º¸ÀÚ. private »ó¼ÓÀº ºÎ¸ðÀÇ public, protected ¸â¹ö¸¦ private·Î ¹Ù²Ù¾î ¹ö¸®¸ç ±×·¡¼­ ÆÄ»ý Ŭ·¡½º¿¡¼­´Â ÀÌ ¸â¹ö¸¦ ¾×¼¼½ºÇÒ ¼ö ÀÖÁö¸¸ ¿ÜºÎ¿¡¼­´Â »ó¼Ó¹ÞÀº ¸â¹ö¸¦ ÂüÁ¶ÇÒ ¼ö ¾ø´Ù. ½ÉÁö¾î ÀÌ Å¬·¡½º·ÎºÎÅÍ ÀÌÂ÷ ÆÄ»ýµÇ´Â ÀڽĿ¡°Ôµµ °ø°³µÇÁö ¾Ê´Â´Ù. private »ó¼ÓÀº Æ÷ÇÔ°ú À¯»çÇÑ È¿°ú°¡ ÀÖÀ¸¸ç HAS A °ü°è¸¦ ±¸ÇöÇÏ´Â ¶Ç ´Ù¸¥ ¹æ¹ýÀÌ´Ù. ¾Õ Ç׿¡¼­ Æ÷ÇÔ ±â¹ýÀ¸·Î ¸¸µé¾ú´ø MemObject ¿¹Á¦¸¦ private »ó¼ÓÀ¸·Î ´Ù½Ã ¸¸µé¾î º¸ÀÚ.

 

¿¹ Á¦ : PrivateInherit

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

{

private:

     char Name[64];

     char Company[32];

     int Price;

public:

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

          strcpy(Name,aN);

          strcpy(Company,aC);

          Price=aP;

     }

     void OutProduct() {

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

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

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

        OutDate();

          puts("");

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

     }

};

 

void main()

{

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

     S.OutProduct();

}

 

ValidTo ¸â¹ö¸¦ »©°í Date·ÎºÎÅÍ private »ó¼ÓÇßÀ¸¸ç ÃʱâÈ­ ¸®½ºÆ®¿¡¼­´Â Date Ŭ·¡½ºÀÇ »ý¼ºÀÚ¸¦ È£ÃâÇÏ¿© »ó¼Ó¹ÞÀº ¸â¹ö¸¦ ÃʱâÈ­Çß´Ù. ÀÌ·¸°Ô µÇ¸é Product´Â DateÀÇ ¸ðµç ¸â¹ö¸¦ »ó¼Ó¹ÞÀ¸¸ç »ó¼Ó¹ÞÀº ¸â¹ö·Î Á¦Ç°ÀÇ À¯È¿±â°£À» Ç¥ÇöÇÒ ¼ö ÀÖ´Ù. Æ÷ÇÔÀº Ŭ·¡½º ŸÀÔÀÇ °´Ã¼¸¦ ¸â¹ö·Î ¼±¾ðÇϴµ¥ ºñÇØ private »ó¼ÓÀº ±â¹Ý Ŭ·¡½º·ÎºÎÅÍ ÇÊ¿äÇÑ ¸â¹ö¸¦ »ó¼Ó¹Þ´Â ±â¹ýÀÌ´Ù. ½ÇÇà °á°ú´Â MemObject ¿¹Á¦¿Í µ¿ÀÏÇÏ´Ù.

Æ÷ÇÔ°ú private »ó¼Ó

Æ÷ÇÔ°ú private »ó¼ÓÀº µÑ ´Ù ±âÁ¸ÀÇ Å¬·¡½º¸¦ ÀçÈ°¿ëÇÏ´Â ±â¹ýÀ̶ó´Â ¸é¿¡¼­´Â °øÅëÀûÀÌ°í HAS A °ü°è¸¦ Ç¥ÇöÇÏ´Â ¸ñÀûµµ µ¿ÀÏÇÏÁö¸¸ Â÷ÀÌÁ¡µµ »ó´çÈ÷ ¸¹´Ù. °¡Àå Å« Â÷ÀÌÁ¡Àº ÇÑ Å¬·¡½º¿¡¼­ °°Àº ŸÀÔÀÇ °´Ã¼ º¹¼ö °³¸¦ µ¿½Ã¿¡ ÀçÈ°¿ëÇÒ ¼ö Àִ°¡ ÇÏ´Â Á¡ÀÌ´Ù. Product Ŭ·¡½º¿¡ À¯È¿±â°£»Ó¸¸ ¾Æ´Ï¶ó Á¦Á¶ÀÏÀÚ³ª ÀÔ°í³¯Â¥±îÁö Æ÷ÇÔ½ÃÅ°°í ½Í´Ù¸é Date ŸÀÔÀÇ °´Ã¼¸¦ °¢°¢ ´Ù¸¥ À̸§À¸·Î ¿øÇϴ¸¸Å­ Æ÷ÇÔÇϱ⸸ ÇÏ¸é µÈ´Ù.

 

Date ManuFact;      // ÀÌ°Ç Á¦Á¶ ÀÏÀÚ

Date ValidTo;              // ¿ä°Ç À¯È¿±â°£

 

¸â¹öÀÇ °³¼ö¿¡ Á¦ÇÑÀÌ ¾øÀ¸¹Ç·Î ¾ó¸¶µçÁö ¸¹Àº Date °´Ã¼¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ´Ù. ±×·¸´Ù¸é private »ó¼ÓÀÇ °æ¿ì´Â ¾î¶³±î? °°Àº ±â¹Ý Ŭ·¡½º¸¦ µÎ ¹ø »ó¼ÓÇÒ ¼ö ¾ø´Ù´Â ±ÔÄ¢ÀÌ ÀÖÀ¸¹Ç·Î ÀÌ ¹æ¹ýÀ¸·Î´Â º¹¼ö °³ÀÇ Á¤º¸¸¦ ÇÑ Å¬·¡½º¿¡ Æ÷ÇÔÇÒ ¼ö ¾ø´Ù. Áï ´ÙÀ½°ú °°Àº ´ÙÁß »ó¼Ó¹®Àº ³ÃÁ¤ÇÏ°Ô ¿¡·¯·Î 󸮵ȴÙ.

 

class Product : private Date, private Date    // ¾ÕÀº Á¦Á¶ÀÏÀÚ, µÚ´Â À¯È¿±â°£. ±×·¯³ª ¿¡·¯

 

¸¸¾à ÀÌ·± ¹®ÀåÀ» Çã¿ëÇÑ´Ù¸é Product¿¡´Â year, month, day°¡ µÎ ¹ú¾¿ Á¸ÀçÇÏ¸ç ¾î¶² ¸â¹ö°¡ À¯È¿±â°£À» Ç¥ÇöÇÏ°í ¾î¶² ¸â¹ö°¡ Á¦Á¶ÀÏÀÚ¸¦ Ç¥ÇöÇÏ´ÂÁö ±¸ºÐµÇÁö ¾Ê´Â ¸ðÈ£ÇÔÀÌ ÀÖ´Ù. ¹Ý¸é Æ÷ÇԵǴ °´Ã¼¿¡´Â ºÐ¸íÇÑ À̸§ÀÌ ÁöÁ¤µÇ¹Ç·Î ¸ðÈ£ÇÔÀÌ ¾øÀ¸¸ç µû¶ó¼­ µ¿½Ã¿¡ ¿©·¯ °³ÀÇ °´Ã¼¸¦ ¿øÇϴ¸¸Å­ Æ÷ÇÔ½Ãų ¼ö ÀÖ´Ù. ´ÙÁß »ó¼ÓÀ» »ç¿ëÇÏ¸é ´Ù¸¥ ŸÀÔÀÇ °´Ã¼¸¦ µ¿½Ã¿¡ ÀçÈ°¿ëÇÒ ¼ö´Â ÀÖÁö¸¸ °°Àº ŸÀÔÀÇ °´Ã¼¸¦ µ¿½Ã¿¡ ÀçÈ°¿ëÇÒ ¼ö´Â ¾ø´Ù. ¼³»ç ´ÙÁß »ó¼ÓÀ¸·Î ´Ù¸¥ ŸÀÔÀÇ °´Ã¼µéÀ» µ¿½Ã¿¡ ÀçÈ°¿ëÇÒ ¼ö ÀÖ´Ù°í´Â Çصµ ¾Õ¿¡¼­ ºÃ´Ù½ÃÇÇ ´ÙÁß »ó¼ÓÀº ¿©·¯ °¡Áö·Î °ñÄ¡¾ÆÇ ºÎÀÛ¿ëÀÌ ¸¹´Ù.

Æ÷ÇÔµÈ °´Ã¼¿¡ À̸§ÀÌ ÀÖ¾î ¸ðÈ£ÇÔÀÌ ¾ø´Ù´Â °ÍÀº Æ÷ÇÔµÈ °´Ã¼ÀÇ ±â´ÉÀ» ÇÊ¿ä·Î ÇÒ ¶§ ¹Ýµå½Ã °´Ã¼ À̸§°ú ÇÔ²² ¸â¹ö¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù´Â ¶æÀ̱⵵ ÇÏ´Ù. °°Àº ŸÀÔÀÇ °´Ã¼¸¦ µÎ °³ ÀÌ»ó Æ÷ÇÔÇÒ ¼ö Àֱ⠶§¹®¿¡ ´©±¸ÀÇ ¾î¶² ±â´ÉÀ» ¿øÇÏ´ÂÁö Ç×»ó ¹àÇô¾ß ÇÏ´Â °ÍÀÌ´Ù. Product¿¡ À¯È¿±â°£°ú Á¦Á¶ÀÏÀÚ°¡ ¸ðµÎ ÇÊ¿äÇÏ´Ù¸é ´ÙÀ½°ú °°ÀÌ ¼±¾ðÇÑ´Ù.

Product °´Ã¼¾È¿¡ µÎ °³ÀÇ Date °´Ã¼°¡ °¢°¢ÀÇ À̸§À¸·Î Æ÷ÇԵǾî ÀÖ´Ù. À¯È¿±â°£À» Ãâ·ÂÇÏ°í ½ÍÀ¸¸é ValidTo.OutDate() ÇÔ¼ö¸¦ È£ÃâÇØ¾ß ÇÏ°í Á¦Á¶ÀÏÀÚ¸¦ Ãâ·ÂÇÏ°í ½Í´Ù¸é ManuFact.OutDate()¸¦ È£ÃâÇÑ´Ù. ÀÌ ¿Ü¿¡µµ ¾ó¸¶µçÁö ¸¹Àº Date °´Ã¼¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖÀ¸¸ç ´Ù¸¥ Date °´Ã¼ÀÇ ³¯Â¥¸¦ Ãâ·ÂÇÏ°í ½ÍÀ¸¸é ÇØ´ç °´Ã¼ÀÇ À̸§À¸·ÎºÎÅÍ OutDate()¸¦ È£ÃâÇÏ¸é µÈ´Ù.

Æ÷ÇÔ°ú private »ó¼ÓÀÇ ¶Ç ´Ù¸¥ Â÷ÀÌÁ¡Àº protected ¸â¹ö¿¡ ´ëÇÑ ¾×¼¼½º Çã°¡ ¿©ºÎÀÌ´Ù. Æ÷ÇÔÀÇ °æ¿ì Æ÷ÇÔµÈ °´Ã¼ÀÇ public ¾×¼¼½º ¼Ó¼ºÀ» °¡Áö´Â °Í¸¸ Á÷Á¢ ÂüÁ¶ÇÒ ¼ö ÀÖ´Ù. Product°¡ ¾Æ¹«¸® DateÀÇ °´Ã¼¸¦ Æ÷ÇÔÇÑ´Ù ÇÏ´õ¶óµµ Product´Â ºÐ¸íÈ÷ DateÀÇ ¿ÜºÎÀ̱⠶§¹®ÀÌ´Ù. Æ÷ÇÔµÈ °´Ã¼ÀÇ private ¸â¹ö´Â ¹°·Ð ¾×¼¼½ºÇÒ ¼ö ¾øÀ¸¸ç protected ¸â¹öµµ ¾×¼¼½ºÇÒ ¼ö ¾ø´Ù. ¹Ý¸é private»ó¼ÓÀÇ °æ¿ì´Â protected ¸â¹ö¸¦ ÆÄ»ý Ŭ·¡½º°¡ ¾×¼¼½ºÇÒ ¼ö ÀÖÀ¸¹Ç·Î Æ÷ÇÔº¸´Ù´Â Á» ´õ ±ä¹ÐÇÑ °ü°è¶ó°í ÇÒ ¼ö ÀÖ´Ù.

ÀÎÅÍÆäÀ̽º »ó¼Ó°ú ±¸Çö »ó¼Ó

À̹ø¿¡´Â Æ÷ÇÔ ¶Ç´Â private »ó¼Ó°ú public »ó¼ÓÀº ¾î¶² Á¡ÀÌ ´Ù¸¥Áö ¿¬±¸ÇØ º¸ÀÚ. Æ÷ÇÔÀ̳ª private »ó¼ÓÀº µÑ ´Ù °´Ã¼ÀÇ ±¸Çö¸¸ Àç»ç¿ëÇÒ »ÓÀ̸ç ÀÎÅÍÆäÀ̽º´Â »ó¼Ó¹ÞÁö ¾Ê´Âµ¥ ºñÇØ public »ó¼ÓÀº ±¸Çö»Ó¸¸ ¾Æ´Ï¶ó ÀÎÅÍÆäÀ̽º±îÁöµµ °°ÀÌ »ó¼ÓÇÑ´Ù´Â Á¡ÀÌ ´Ù¸£´Ù. ±¸Çö »ó¼ÓÀ̶õ °´Ã¼ÀÇ ±¸Ã¼ÀûÀÎ µ¿ÀÛ¸¸ Àç»ç¿ëÇÒ ¼ö ÀÖ°í ÀÎÅÍÆäÀ̽º´Â ¹°·Á¹ÞÁö ¾Ê´Â »ó¼ÓÀ̸ç Á» ´õ ±¸Ã¼ÀûÀ¸·Î ¾ê±âÇÏÀÚ¸é ¸â¹ö ÇÔ¼ö¸¦ È£ÃâÇÒ ¼ö´Â ÀÖÁö¸¸ ½º½º·Î ¸â¹ö ÇÔ¼ö¸¦ °¡ÁöÁö´Â ¾Ê´Â »ó¼ÓÀÌ´Ù.

MemObject ¿¹Á¦ÀÇ Product´Â Æ÷ÇÔÇÑ °´Ã¼ ValidToÀÇ OutDate¸¦ È£ÃâÇÏ¿© ³¯Â¥¸¦ Ãâ·ÂÇÏ´Â ±â´ÉÀ» Àç»ç¿ëÇÒ ¼ö´Â ÀÖÁö¸¸ Product Ŭ·¡½º°¡ OutDate¸¦ ¸â¹ö·Î °¡Áö´Â °ÍÀº ¾Æ´Ï´Ù. ±×·¡¼­ ¿ÜºÎ¿¡¼­ OutDate()¸¦ È£ÃâÇÒ ¼ö´Â ¾ø´Âµ¥ MemObjectÀÇ ³¡¿¡ S.OutDate(); È£Ãâ¹®À» ³Ö¾î º¸¸é À̸¦ È®ÀÎÇÒ ¼ö ÀÖ´Ù. ´ë½Å S.ValidTo.OutDate();·Î È£ÃâÇÒ ¼ö´Â Àִµ¥ ÀÌ·¸°Ô µÇ·Á¸é S °´Ã¼°¡ ValidTo¸¦ publicÀ¸·Î ¼±¾ðÇØ¾ß ÇÏ°í DateÀÇ OutDateµµ publicÀ̾î¾ß ÇÑ´Ù. ¾î·µç S°¡ OutDate ÀÎÅÍÆäÀ̽º ÇÔ¼ö¸¦ °¡Áö´Â °ÍÀº ¾Æ´Ï´Ù.

private »ó¼ÓÀÌ Æ÷ÇÔ°ú À¯»çÇÏ´Ù°í ÇÏ´Â °¡Àå Å« ÀÌÀ¯´Â ±¸Çö¸¸ »ó¼ÓÇÒ »Ó ÀÎÅÍÆäÀ̽º¸¦ »ó¼ÓÇÏÁö ¾Ê±â ¶§¹®ÀÌ´Ù. private »ó¼ÓÀº ±â¹Ý Ŭ·¡½ºÀÇ ¸ðµç ¸â¹ö¸¦ »ó¼Ó°ú µ¿½Ã¿¡ private ¼Ó¼ºÀ¸·Î ¹Ù²Ù¾î ¹ö¸°´Ù. ±×·¡¼­ ProductÀÇ ³»ºÎ¿¡¼­´Â »ó¼Ó¹ÞÀº ¸â¹ö ÇÔ¼ö OutDate¸¦ È£ÃâÇÒ ¼ö ÀÖÁö¸¸ ¿ÜºÎ¿¡ ´ëÇؼ­´Â ÀÌ ¸â¹ö ÇÔ¼ö°¡ ¼û°ÜÁö¹Ç·Î Product´Â ÀÌ ÀÎÅÍÆäÀ̽º¸¦ °¡ÁöÁö ¾Ê´Â °Í°ú °°¾ÆÁø´Ù. ¿ÜºÎ»Ó¸¸ ¾Æ´Ï¶ó Product·ÎºÎÅÍ ÆÄ»ýµÇ´Â Ŭ·¡½º¿¡ ´ëÇؼ­µµ ¸¶Âù°¡Áö·Î OutDate´Â ¾Ë·ÁÁöÁö ¾Ê´Â´Ù. PrivateInherit ¿¹Á¦ÀÇ main¿¡¼­ S.OutDate()¸¦ È£ÃâÇÏ¸é ¿ª½Ã ¿¡·¯ ó¸®µÉ °ÍÀÌ´Ù.

Date °´Ã¼¸¦ Æ÷ÇÔÇÏ´Â ProductÀÚü¿¡´Â OutDate¶ó´Â ÀÎÅÍÆäÀ̽º°¡ Á¸ÀçÇÏÁö ¾Ê´Â´Ù. Date Ŭ·¡½º·ÎºÎÅÍ private »ó¼Ó¹ÞÀº Product¿¡´Â OutDate¶ó´Â ÇÔ¼ö°¡ Á¸ÀçÇϱâ´Â ÇÏÁö¸¸ ¿ÜºÎ¿¡¼­ È£ÃâÇÒ ¼ö ¾øµµ·Ï ¼û°ÜÁö¹Ç·Î °ø°³µÈ ÀÎÅÍÆäÀ̽º´Â ¾ø´Â ¼ÀÀÌ´Ù. ÀÎÅÍÆäÀ̽º¶õ Ŭ·¡½ºÀÇ °ø°³µÈ ±â´ÉÀ» ÀǹÌÇϴµ¥ private »ó¼ÓÀº ºÎ¸ðÀÇ °ø°³µÈ ±â´ÉÀ» »ó¼Ó°ú µ¿½Ã¿¡ ¾ÈÀ¸·Î ¼û°Ü ¹ö¸®¹Ç·Î ÀÎÅÍÆäÀ̽º¸¦ »ó¼ÓÇÏÁö ¾Ê´Â °Í°ú °°´Ù. µÎ °æ¿ì ¸ðµÎ Æ÷ÇÔ ¶Ç´Â »ó¼ÓÀ» ÅëÇØ ³¯Â¥¸¦ Ãâ·ÂÇÏ´Â ±â´É¸¸ »ç¿ëÇÒ ¼ö ÀÖÀ» »ÓÀÌ´Ù. ÇÔ¼ö´Â ¹°·Á¹ÞÁö ¾Ê°í Äڵ常 ¹°·Á¹Þ´Â ÀÌ·± »ó¼ÓÀ» ±¸Çö »ó¼ÓÀ̶ó°í ÇÑ´Ù.

¹Ý¸é public »ó¼ÓÀÇ °æ¿ì´Â ±â¹Ý Ŭ·¡½ºÀÇ ¸â¹ö¸¦ ¹°·Á¹Þ¾Æ ¿ÏÀüÇÑ Àڱ⠰ÍÀ¸·Î ¸¸µå´Â °ÍÀ̹ǷΠ±â¹Ý Ŭ·¡½º¿¡ Á¤ÀǵǾî ÀÖ´Â ¸â¹ö ÇÔ¼ö¸¦ Á÷Á¢ È£ÃâÇÒ ¼ö ÀÖ´Ù. Coord¸¦ »ó¼Ó¹ÞÀº Point¿¡´Â GetXY ÀÎÅÍÆäÀ̽º°¡ Á¸ÀçÇϸç HumanÀ» »ó¼Ó¹ÞÀº Student´Â Think, Intro ÀÎÅÍÆäÀ̽º¸¦ °¡Áø´Ù. ÆÄ»ý Ŭ·¡½º´Â ±â¹Ý Ŭ·¡½ºÀÇ ÀÎÅÍÆäÀ̽º¸¦ ±×´ë·Î ¹°·Á ¹Þ¾Æ ¿ÜºÎ·Î °ø°³Çϸç ÈÄ¼Õ Å¬·¡½º¿¡°Ô ¹°·ÁÁÙ ¼öµµ ÀÖ´Ù. public »ó¼ÓÀº Æ÷ÇÔ°ú ´Þ¸® ±¸Çö°ú ÀÎÅÍÆäÀ̽º¸¦ µ¿½Ã¿¡ ¹°·Á¹Þ´Â °ÍÀÌ´Ù. PrivateInherit ¿¹Á¦¿¡¼­ »ó¼Ó ¾×¼¼½º ÁöÁ¤À» publicÀ¸·Î ¹Ù²Ù°í mainÀÇ ³¡¿¡¼­ S.OutDate()¸¦ È£ÃâÇÏ¸é º° ¹®Á¦°¡ ¾ø´Ù. ±â¹Ý Ŭ·¡½ºÀÇ public ¸â¹ö°¡ »ó¼ÓµÈ ÈÄ¿¡µµ ¿©ÀüÈ÷ publicÀ̱⠶§¹®ÀÌ´Ù.

ÀÌ°ÍÀÌ HAS A¿Í IS A¸¦ ±¸ºÐÇÏ´Â Áß¿äÇÑ ±âÁØÀÌ´Ù. ±×·¡¼­ Ŭ·¡½º¸¦ ÀçÈ°¿ëÇØ¾ß ÇÒ ¶§ µÎ Ŭ·¡½ºÀÇ °ü°è¸¦ Àß ÆÇ´ÜÇØ º¸°í IS A °ü°è¿¡ °¡±î¿ì¸é public »ó¼ÓÀ» ÇÏ´Â °ÍÀÌ ÁÁ°í HAS A °ü°èÀ̸é Æ÷ÇÔ½ÃÅ°°Å³ª private »ó¼ÓÇÏ´Â °ÍÀÌ ´õ ÁÁ´Ù. ¹°·Ð ¾îµð±îÁö³ª ±ÇÀå »çÇ×ÀÏ »Ó Àý´ëÀûÀÎ ±ÔÄ¢Àº ¾Æ´Ï´Ù. »ç½Ç Coord¿Í Point, ±×¸®°í Point¿Í CircleÀÇ °ü°èµµ HAS A °ü°è·Î Ç¥ÇöÇÒ ¼ö ÀÖ´Ù. Á¡Àº ÁÂÇ¥¸¦ °¡Áö°í ¿øÀº Á¡À» °¡Áø´Ù°íµµ Ç¥ÇöÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù. ±×·¯³ª ¿©·¯ ¸ð·Î µûÁ® º¼ ¶§ Coord - Point - Circle °ü°è´Â IS AÂÊ¿¡ ´õ °¡±õ°í ´ÙÇü¼ºÀ» ÇÊ¿ä·Î ÇϹǷΠpublic »ó¼ÓÀ» ÇÏ´Â °ÍÀÌ ÇÕ¸®ÀûÀÌ´Ù.

Á¤¸®ÇÏÀÚ¸é private »ó¼Ó°ú public »ó¼ÓÀº »ó¼Ó¹ÞÀº ÀÎÅÍÆäÀ̽º°¡ ¿ÜºÎ·Î °ø°³µÇ´Â°¡ ¾Æ´Ñ°¡ÀÇ Â÷ÀÌÁ¡ÀÌ ÀÖ´Ù. ¸¸¾à PrivateInherit ¿¹Á¦ÀÇ Å¬·¡½º ¼±¾ð¹®¿¡¼­ »ó¼Ó ¾×¼¼½º ÁöÁ¤À» publicÀ¸·Î ¹Ù²Ù¸é Product´Â DateÀÇ ±¸Çö»Ó¸¸ ¾Æ´Ï¶ó ÀÎÅÍÆäÀ̽º±îÁö »ó¼Ó¹Þ¾Æ ¿ÜºÎ·Î °ø°³µÇ´Â OutDateÀÎÅÍÆäÀ̽º¸¦ °¡Áö°Ô µÇ¸ç ÀÌ·¸°Ô µÇ¸é Product¿Í Date´Â IS A°ü°è°¡ µÈ´Ù. ÇÏÁö¸¸ Á¦Ç°ÀÌ ÀÏÁ¾ÀÇ ³¯Â¥ÀÎ °ÍÀº ¾Æ´Ï¹Ç·Î ÀÚ¿¬½º·´Áö ¸øÇÏ´Ù. Æ÷ÇÔ°ú µÎ °¡Áö »ó¼Ó À¯ÇüÀ» ±×¸²À¸·Î ºñ±³ÇØ º¸ÀÚ.

¼¼ °æ¿ì ¸ðµÎ °á°úÀûÀ¸·Î ĸ½¶È­µÇ´Â Á¤º¸ÀÇ ¸ñ·ÏÀº µ¿ÀÏÇÏÁö¸¸ ÀÌ ¸â¹öµéÀÌ ¾îµð¼­ ¿Ô´ÂÁö¿Í ¿ÜºÎ¿¡ ´ëÇÑ ÀÎÅÍÆäÀ̽º °ø°³ ¿©ºÎ°¡ ´Ù¸£´Ù. Ŭ·¡½ºÀÇ ´Ü¼øÇÑ Àç»ç¿ë¸¸À» ¸ñÀûÀ¸·Î ÇÑ´Ù¸é Æ÷ÇÔÀ̳ª private »ó¼Ó Áß Çϳª¸¦ ¾µ ¼ö ÀÖµÇ ÀϹÝÀûÀ¸·Î private »ó¼Óº¸´Ù´Â Æ÷ÇÔÀÌ ÈξÀ ´õ ½±°í Á÷°üÀûÀ̸ç ÀÌ¹Ì Àͼ÷ÇÑ ¹æ¹ýÀ̱⵵ ÇÏ´Ù. ¿©·¯ °¡Áö C++ ±â¹ý¿¡ µû¸¥ »ó¼ÓÀÇ Á¾·ù¸¦ µµÇ¥·Î ¿ä¾àÇØ º¸¸é ´ÙÀ½°ú °°´Ù.

 

±â¹ý

private »ó¼Ó, Æ÷ÇÔ

public »ó¼Ó

¼ø¼ö °¡»ó ÇÔ¼ö

ÀÎÅÍÆäÀ̽º »ó¼Ó

X

O

O

±¸Çö »ó¼Ó

O

O

X

 

private »ó¼ÓÀº ±â¹Ý Ŭ·¡½ºÀÇ ±¸Çö¸¸À» »ó¼Ó¹ÞÀ¸¸ç public »ó¼ÓÀº ÀÎÅÍÆäÀ̽º¿Í ±¸ÇöÀ» µ¿½Ã¿¡ »ó¼Ó¹Þ´Â´Ù. ±¸Çö »ó¼ÓÀº ´Ü¼øÈ÷ ¾î¶² °´Ã¼¸¦ Àç»ç¿ëÇϱâ À§ÇÑ ±â¹ý¿¡ ºÒ°úÇÏ´Ù. ±×·¯³ª ÀÎÅÍÆäÀ̽º »ó¼ÓÀº Ŭ·¡½º°£ÀÇ °èÃþ °ü°è¸¦ ÀÌ·ëÀ¸·Î½á ´ÙÇü¼ºÀ» ±¸ÇöÇÒ ¼ö ÀÖ´Ù´Â Á¡¿¡¼­ ´Ü¼øÇÑ ÀçÈ°¿ë ÀÌ»óÀÇ Àǹ̸¦ °¡Áø´Ù. ÀÏ´Ü »ó¼Ó¹ÞÀº ÈÄ ÀϺΠÇÔ¼öÀÇ µ¿ÀÛÀ» ÀçÁ¤ÀÇÇÒ ¼öµµ ÀÖ°í °´Ã¼ ŸÀÔ¿¡ µû¶ó ´Ù¸¥ µ¿ÀÛÀ» Çϵµ·Ï ¸¸µé ¼öµµ ÀÖ´Ù. °´Ã¼ ÁöÇâÀÇ ÁøÁ¤ÇÑ ¸Å·ÂÀº ¹Ù·Î ´ÙÇü¼ºÀε¥ À̸¦ À§ÇÑ ÀüÁ¦ Á¶°ÇÀÌ ¹Ù·Î public »ó¼ÓÀÌ´Ù.

¶ÇÇÑ ÀÎÅÍÆäÀ̽º, Áï ¸â¹ö ÇÔ¼öÀÇ ¸ñ·Ï¸¸ »ó¼Ó¹Þ°í ±¸ÇöÀº ÀüÇô »ó¼Ó¹ÞÁö ¾Ê´Â ¼ø¼ö °¡»ó ÇÔ¼ö¶ó´Â ¹æ¹ýµµ ÀÖ´Ù. ±¸ÇöÀ» »ó¼Ó¹ÞÁö ¾ÊÀ¸¸é ¾ð¾î¿¡ »ó°ü¾øÀÌ °´Ã¼ÀÇ ±â´ÉÀ» ±¸ÇöÇÒ ¼ö ÀÖ´Ù´Â ÀÌÁ¡ÀÌ »ý±â´Âµ¥ ÀÌ·± À̷п¡ ÀÇÇØ ¸¸µé¾îÁø ±â¼úÀÌ ¹Ù·Î COMÀ̸ç COM ±â¹Ý À§¿¡ ActiveX, DirectX°°Àº ±â¼úÀÌ ¼º¸³µÈ´Ù. ´ÙÇü¼º°ú ¼ø¼ö °¡»ó ÇÔ¼ö, Ãß»ó Ŭ·¡½º µîÀº ´ÙÀ½ Àå¿¡¼­ »ó¼¼ÇÏ°Ô ¿¬±¸ÇØ º¼ °ÍÀÌ´Ù.

protected »ó¼Ó

protected »ó¼ÓÀº public »ó¼Ó°ú private »ó¼ÓÀÇ Áß°£Âë µÇ´Â ±â¹ýÀε¥ ÆÄ»ý Ŭ·¡½º¸¦ ´Ù½Ã ÆÄ»ý½Ãų ¶§ µ¶Æ¯ÇÑ Æ¯Â¡À» º¸ÀδÙ. 2Â÷ ÆÄ»ýµÈ Ŭ·¡½º°¡ ¾ÖÃÊÀÇ ±â¹Ý Ŭ·¡½º¿¡ Á¢±ÙÇÒ ¼ö ÀÖ´Ù´Â Á¡¿¡¼­ private »ó¼Ó°ú´Â ´Ù¸£¸ç ±â¹Ý Ŭ·¡½ºÀÇ ¸â¹öµéÀ» ¿ÜºÎ¿¡¼­ Á¢±ÙÇÒ ¼ö ¾ø´Ù´Â Á¡¿¡¼­ public »ó¼Ó°úµµ ´Ù¸£´Ù.

±â¹Ý Ŭ·¡½ºÀÇ ¸â¹ö¿¡ ´ëÇÑ ¾×¼¼½º ±ÇÇÑÀ» Á÷°è Èļյ鿡°Ô¸¸ ÁÖ°í ½ÍÀ» ¶§ protected »ó¼ÓÀ» »ç¿ëÇϴµ¥ Çö½ÇÀûÀÎ ½Ç¿ë¼ºÀº ³ôÁö ¾Ê´Ù.

 

 MultiContain

MultiInherit ¿¹Á¦´Â ³¯Â¥¿Í ½Ã°£À» µ¿½Ã¿¡ Ç¥ÇöÇϴ Ŭ·¡½º Now¸¦ ¸¸µé±â À§ÇØ Date¿Í TimeÀ» ´ÙÁß »ó¼Ó¹Þ¾Ò´Âµ¥ Æ÷ÇÔ ±â¹ýÀ» »ç¿ëÇϸé ÈξÀ ´õ ½±°Ô Now Ŭ·¡½º¸¦ ¸¸µé ¼ö ÀÖ´Ù. Æ÷ÇÔ ±â¹ýÀ¸·Î Now Ŭ·¡½º¸¦ ÀçÀÛ¼ºÇØ º¸¾Æ¶ó.