Polymorphic array¿¡¼­ °¡Àå Å« Áø°¡°¡ ¹ßÈÖ...


[ ´ÙÀ½ ±Ûµé ] [ À̾ ±Û¿Ã¸®±â(´äÇϱâ) ] [ ÀÚ¹Ù ¹¯°í ´äÇϱâ ]

±Û¾´ÀÌ :ÀÓäÀÏ 1998³â 3¿ù 05ÀÏ 19:29:16

In Reply to: (!!) Why?? Procedure Language .vs. OOPL posted by Retiree on 1998³â 3¿ù 05ÀÏ 11:49:11:

¾È³çÇϼ¼¿ä.ÀÓäÀÏÀÔ´Ï´Ù.
À§¿¡ ÀÚ¼¼ÇÑ ¼³¸íÀÌ ÀÖÁö¸¸ Á¦°¡ Á¶±Ý¸¸ µ¡ºÙÀÌ°Ú½À´Ï´Ù.
PolymorphismÀº ¾Æ¸¶µµ Polymorphic array¿¡¼­ °¡Àå Å« Áø°¡¸¦
¹ßÈÖÇÒ°Í °°±º¿ä.


Graphic Editor¿¡¼­ ¸¸¾à µµÇüÀ» Á¤ÀÇÇÏ´Â Figure interface°¡
´ÙÀ½°ú °°ÀÌ ÀÖ´Ù°í °¡Á¤ÇսôÙ.
interface Figure{
public void draw();
}


±×¸®°í À̸¦ implementÇÒ classµéÀÌ Circle°ú RectangleÀÌ
ÀÖ´Ù°í ÇÏ°í ´ÙÀ½°ú °°ÀÌ Á¤ÀÇ µÇ¾ú´Ù°í ÇսôÙ.
class Circle implements Figure{
public Circle(..){//Constructor
...
}


public void draw(){
½ÇÁ¦±¸ÇöºÎ...
}
}


class Rectangle implements Figure{
public Rectangle(..){//Constructor
...
}


public void draw(){
½ÇÁ¦ ±¸ÇöºÎ...
}
}


¿©±â¼­ Rectangle°ú CircleÀº °°Àº Figure¸¦ implement
ÇßÁö¸¸ ±× draw methodÀÇ ½ÇÁ¦ ±¸ÇöÀº ¿ÏÀüÈ÷ ´Ù¸£°ÚÁö¿ä.


À̶§ Graphic EditorÀÇ mainºÎ¿¡¼­


Figure _polymorphic_array[]= new Figure[2];
·Î¼­ ¹è¿­À» ¼±¾ðÇÑÈÄ
Graphic Editor¿¡ ±×·ÁÁø °¢ µµÇüÀ» ¹è¿­¿¡ Áý¾î³ÖÀ¸¸é
¾Æ¸¶µµ typeÀÌ ÀÏÄ¡Çϱ⶧¹®¿¡ ¹®Á¦ ¾øÀÌ µé¾î°¥°ÍÀÔ´Ï´Ù.


Circle c=new Circle(..);
Rectangle r=new Rectangle(..);


_polymorphic_array[0]=(Figure)c;
_polymorphic_array[1]=(Figure)r;


ÀÌ·±½ÄÀ¸·Î ÀúÀåÇÑÈÄ ¸·»ó °´Ã¼¸¦ ±×·Á¾ß Çϴ¼ø°£¿¡´Â
¹è¿­¿¡¼­ Çϳª¾¿ »©³»¾î¼­ draw()¸¦ È£ÃâÇϸé
°¢°¢ÀÇ type¿¡ ¸Â´Â draw() method°¡ È£ÃâµÉ¼ö Àִ°ÍÀÔ´Ï´Ù.


_polymorphic_array[0].draw();//À̶§´Â c°´Ã¼ÀÇ draw°¡
_polymorphic_array[1].draw();//À̶§´Â r°´Ã¼ÀÇ draw°¡ È£Ãâ


À§ÀÇ ¿¹Á¦°¡ Á¶±Ý ¾ïÁö ½º·¯¿î Á¡ÀÌ ÀÖ´õ¶óµµ ÀÌÇØÇØÁֽñâ
¹Ù¶ø´Ï´Ù.



´ÙÀ½ ±Ûµé:



À̾ ±Û¿Ã¸®±â(´äÇϱâ)

À̸§:
E-Mail:
Á¦¸ñ:
³»¿ë:
°ü·Ã URL(¼±ÅÃ):
URL Á¦¸ñ(¼±ÅÃ):
°ü·Ã À̹ÌÁö URL:


[ ´ÙÀ½ ±Ûµé ] [ À̾ ±Û¿Ã¸®±â(´äÇϱâ) ] [ ÀÚ¹Ù ¹¯°í ´äÇϱâ ]