7.4. °´Ã¼ ¼Ó¿¡ °´Ã¼(has-a °ü°è)

(¾´ ³¯ : 2001-07-08)

 

Áñ°Å¿î ÈÞÀÏÀÌ¿¡¿ä~

¿À´ÃÀº ¸ðó·³ Çб³¿¡¼­ °øºÎ¸¦ Çß´ä´Ï´Ù.

»õ·Î »ê ³ëÆ®ºÏµµ óÀ½À¸·Î °®°í ³ª¿ÔÁö¿ä. ÀÌ·² ¶§ Âü ÁÁ´õ±º¿ä. ÈåÈåÈ塦

 

¿äÁò °Ô½ÃÆÇ¿¡ ¿Ã·ÁÁֽô ±ÛµéÀ» º¸°í Á¦°¡ ¹Ìó ¸ô¶ú´ø ºÎºÐÀ» ¸¹ÀÌ ¹è¿ì°í ÀÖ´ä´Ï´Ù.

Âü °í¸¿±âµµ Çϰí, ÇÑÆíÀ¸·Î´Â ºÎÁ·ÇÑ ½Ç·Â¿¡ °­Á¸¦ ¾´´Ù´Â °ÍÀÌ ºÎ²ô·´±âµµ Çϳ׿ä.

¾ÕÀ¸·Îµµ ¸¹ÀÌ ¿Ã·ÁÁÖ¼¼¿ä. ¾Æ¹«¸® ½¬¿î Áú¹®À̳ª °£´ÜÇÑ ¿¹Á¦¶óµµ ´ëȯ¿µÀÔ´Ï´Ù.

 

³ëÆ®ºÏÀ» ¾²°í ÀÖÀ¸´Ï ¹Ì¼Ç Àӯļ­ºíÀÇ ÁÖÀΰøÀÌ µÈ µí Çϱº¿ä. ÈìÈ졦

¿À´ÃÀº °´Ã¼ ¼Ó¿¡ °´Ã¼¸¦ Áý¾î³Ö´Â ÀÓ¹«¸¦ ¼öÇàÇϵµ·Ï ÇϰڽÀ´Ï´Ù.

 

ÄÚ³¢¸®¸¦ ³ÃÀå°í¿¡ ³Ö´Â ¹æ¹ýÀ» ¾Æ½Ã³ª¿ä?

¾Æ¸¶ ¸ð¸£½Ã´Â ºÐÀÌ ¾ø°ÚÁÒ? Á¦°¡ ¾Æ´Â À¯¸Ó´Â ¿Â ±¹¹ÎÀÌ ´Ù ¾Ë°í °è½Ã´Ï±î¿ä.

 

1¹ø, ³ÃÀå°í ¹®À» ¿¬´Ù.

2¹ø, ÄÚ³¢¸®¸¦ ³Ö´Â´Ù.

3¹ø, ³ÃÀå°í ¹®À» ´Ý´Â´Ù. ^^;

 

À̰ɷΠÇÁ·Î±×·¥À» Çѹø Â¥º¼±î¿ä?

 

# fridge.py

 

class Fridge:

    isOpened = 0

    foods = []

 

    def open(self):

        self.isOpened = 1

        print '³ÃÀå°í ¹®À» ¿­¾ú¾î¿ä...'

 

    def put(self, thing):

        if self.isOpened:

            self.foods.append(thing)

            print '³ÃÀå°í ¼Ó¿¡ À½½ÄÀÌ µé¾î°¬³×...'

        else:

            print '³ÃÀå°í ¹®ÀÌ ´ÝÇôÀ־ ¸ø³Ö°Ú¾î¿ä...'

 

    def close(self):

        self.isOpened = 0

        print '³ÃÀå°í ¹®À» ´Ý¾Ò¾î¿ä...'

 

class Food:

    pass

 

À§¿Í °°ÀÌ ³ÃÀå°í¿Í À½½Ä Ŭ·¡½º¸¦ °®°í ÀÖ´Â fridge.py ¸ðµâÀ» ¸¸µé¾îº¸¾Ò½À´Ï´Ù.

³ÃÀå°í Ŭ·¡½º¿¡´Â ¹®ÀÌ ¿­·ÁÀÖ´ÂÁö¸¦ ³ªÅ¸³»´Â isOpened¶ó´Â º¯¼ö¿Í ³ÃÀå°í ¾È¿¡ µé¾îÀÖ´Â À½½ÄµéÀÇ ¸®½ºÆ®ÀÎ foods°¡ ÀÖ½À´Ï´Ù.

¶Ç, ³ÃÀå°í ¹®À» ¿­°í, À½½ÄÀ» Áý¾î³Ö°í, ¹®À» ´Ý´Â ¸Þ½îµåµµ °¢°¢ °®°í ÀÖÁö¿ä.

 

À½½Ä¿¡ ´ëÇØ¼­´Â º°·Î ¾µ ¸»ÀÌ ¾ø´õ±º¿ä.

¾µ °ÍÀÌ ¾øÀ» ¶§´Â pass¶ó°í¸¸ ½áÁÖ¸é µÈ´Ù°í ÇØ¼­ ±×·¸°Ô Çß½À´Ï´Ù.

¼ÓÀÌ ºó À½½Ä Ŭ·¡½º¸¦ ¸¸µç °ÅÁö¿ä.

 

ÀÌÁ¦ ÀÎÅÍÇÁ¸®Å͸¦ ¶ç¿ö¼­ ³ÃÀå°í¿¡´Ù°¡ ÄÚ³¢¸®¸¦ Áý¾î³Ö¾î º¾½Ã´Ù.

 

>>> import fridge

>>> f = fridge.Fridge()

>>> apple = fridge.Food()

>>> elephant = fridge.Food()

 

¸ÕÀú ³ÃÀå°í Ŭ·¡½ºÀÇ °´Ã¼·Î f¶ó´Â °ÍÀ» ¸¸µé°í À½½Ä Ŭ·¡½ºÀÇ °´Ã¼´Â apple°ú elephant¸¦ ¸¸µé¾ú½À´Ï´Ù.

 

>>> f.open()

³ÃÀå°í ¹®À» ¿­¾ú¾î¿ä...

>>> f.put(apple)

³ÃÀå°í ¼Ó¿¡ À½½ÄÀÌ µé¾î°¬³×...

 

³ÃÀå°í ¹®À» ¿­°í, ÀÏ´Ü Áغñ¿îµ¿À¸·Î ³ÃÀå°í¿¡ »ç°ú¸¦ ³Ö¾îºÃ´Âµ¥ Àß µé¾î°¬Áö¿ä?

±×·³ ÄÚ³¢¸®µµ ³Ö¾îº¼±î¿ä?

 

>>> f.put(elephant)

³ÃÀå°í ¼Ó¿¡ À½½ÄÀÌ µé¾î°¬³×...

 

ÄÚ³¢¸®µµ ½ï µé¾î°¬½À´Ï´Ù~

³ÃÀå°í ¼Ó¿¡ »ç°ú¶û ÄÚ³¢¸®°¡ Àß µé¾î°¬´ÂÁö È®ÀÎÇØº¼±î¿ä?

³ÃÀå°í fÀÇ foods ¸®½ºÆ®¿¡ ¹¹°¡ µé¾îÀÖ´ÂÁö º¾½Ã´Ù.

 

>>> f.foods

[<fridge.Food instance at 007924AC>, <fridge.Food instance at 0079153C>]

 

Food Ŭ·¡½ºÀÇ ÀνºÅϽº(instance, ½Çü) µÎ °³°¡ µé¾îÀÖ´Ù°í ³ª¿À´Â±º¿ä.

½Çü³ª °´Ã¼³ª ºñ½ÁÇÑ ¸»À̰ÚÁÒ?

ÀÚ, ³ÃÀå°í °´Ã¼´Â foods¶ó´Â ¸®½ºÆ®¸¦ °®°í ÀÖ±¸¿ä, foods ¸®½ºÆ®´Â À½½Ä Ŭ·¡½ºÀÇ »ç°ú¿Í ÄÚ³¢¸® °´Ã¼¸¦ °®°í ÀÖ½À´Ï´Ù.

°á±¹ ³ÃÀå°í °´Ã¼´Â ´Ù¸¥ °´Ã¼µéÀ» °®°í ÀÖ´Ù°íµµ ÇÒ ¼ö ÀÖ°ÚÁÒ?

 

¿À´Ã º¸½Å °Íó·³ °´Ã¼´Â ¶Ç ´Ù¸¥ °´Ã¼¸¦ Æ÷ÇÔÇÒ ¼öµµ ÀÖ´ä´Ï´Ù.

°´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹Ö¿¡¼­´Â ÀÌ·± °ÍÀ» composition(ÇÕ¼º, º¹ÇÕ)À̶ó°í Çϱ¸¿ä, ¡°has-a¡± °ü°è¶ó°íµµ ÇÕ´Ï´Ù.

¡°f´Â elephant¸¦ °®°í ÀÖ´Ù(f has an elephant).¡± ¸» µÇÁÒ?

º°·Î ¾î·ÆÁö´Â ¾ÊÁö¸¸ Àß ½á¸ÔÀ» ¼ö ÀÖ´Â °³³äÀ̴ϱî ÀÍÇôµÎ¼¼¿ä.

ÀÌ·¸°ÔÇØ¼­ ¿À´ÃÀÇ ÀÓ¹«ÀÎ °´Ã¼ ¼Ó¿¡ °´Ã¼ Áý¾î³Ö±â´Â ÈǸ¢ÇÏ°Ô ¿Ï¼öÇß±º¿ä.

 

Âü°í·Î ¡°has-a¡±°ü°è¸¦ ³ªÅ¸³½ ±×¸²À» º¸¿©µå¸®¸é¼­ ¸¶Ä¡µµ·Ï ÇϰڽÀ´Ï´Ù.

Fridge Ŭ·¡½ºÀÇ °´Ã¼´Â Food Ŭ·¡½ºÀÇ °´Ã¼(elephant µî¡¦)¸¦ ¿©·¯ °³(*) °¡Áú ¼ö ÀÖ´Ù´Â °ÍÀ» ¿¬°á¼± À§¾Æ·¡¿¡ *¿Í elephant¶ó°í ½áÁ༭ ³ªÅ¸³½ °ÍÀÌÁö¿ä.

 

 

 

 


´Ùµé ¼ö°íÇϼ̽À´Ï´Ù~