다형성을 설명하려면?

ddeng72의 이미지

객체지향의 다형성을 어떻게 설명해야 될까요?

그냥 사전적인 정의 말고요. 왜를 알려주려면요.

creativeidler의 이미지

다음 글을 한 번 참고해보세요. 관련 글들도 읽어보시면 도움이 될 듯.

http://alankang.tistory.com/249

semmal의 이미지

질문을 다시 해석하자면 "왜 다형성을 쓰나요?" 쯤 되는 건가요?

실수를 실수로 나눠도 나눗셈을 사용하고, 정수를 정수로 나눠도 나눗셈을 사용한다고 말하고 싶기 때문입니다.

실수나눗셈, 정수나눗셈이라고 부르면 힘들고 불편하잖아요.

그냥 나눗셈이라고 부르지만, 실수를 나눌 때는 소숫점자리까지 나누고, 정수를 나눌 때는 정수만 나오게 하면 편하니까요.
------------------------------
How many legs does a dog have?

------------------------------
How many legs does a dog have?

katalog의 이미지

전통적인 짖다 모델을 쓰면 되지 않을까요?

동물(virtual 짖다)
- 개(void 짖다) : 멍멍
- 고양이(void 짖다) : 야옹
- 호랑이(void 짖다) : 어흥

동물 p[3] = {개, 고양이, 호랑이};
for ( int i=0; i<3; ++i )
p[i].짖다();

뭐 이렇게? -_-;;;;;

xyhan의 이미지

반대로 모든 동물들에게는 짖다라는 메서드를 강제해서
프로그램의 틀이 일정하게 유지되는 효과도 있는것 같습니다..

개 짖다.. 닭 도 짖다. 토끼 도 짖다..

============================================================

선한 인간이냐 악한 인간이냐는 그사람의 의지에 달렸다. -에픽테토스-
의지 노력 기다림은 성공의 주춧돌이다. -파스퇴르-

============================================================

============================================================

선한 인간이냐 악한 인간이냐는 그사람의 의지에 달렸다. -에픽테토스-
의지 노력 기다림은 성공의 주춧돌이다. -파스퇴르-

============================================================

oomymy의 이미지

프로그래밍, 혹은 소프트웨어 공학의 역사는 감히 '복잡도'와의 싸움이라고 저는 생각합니다.

OOP는 프로그램 설계에 추상적인 사고와 계층 구조를 도입함으로써 복잡도를 줄이려는 노력이라 보고요.

다형성은 그런 추상성의 핵심이죠.

그에 대한 예는 katalog님이 들어주신 '짖다' example이면 충분합니다.

7339989b62a014c4ce6e31b3540bc7b5f06455024f22753f6235c935e8e5의 이미지

좀더 직접적인 이유로는 확장이 쉽다는 걸 들 수 있지 않을까요.
if나 switch-case로 타입에 따른 대응을 한다면 새로운 타입을 추가했을 때 처리하기 힘들겠죠. Anti-If 캠페인이라는 것, 이런 경우에 쓰이는 if문을 다형성으로 대체하자는 얘기입니다. http://www.antiifcampaign.com/

charsyam의 이미지

사고의 추상화기 때문이 아닐까요?

여러가지의 비슷한 동작들은 하나로 추상화버릴 수 있기 때문입니다.

=========================
CharSyam ^^ --- 고운 하루
=========================

=========================
CharSyam ^^ --- 고운 하루
=========================

bxhs의 이미지

top down 적인 분류체계를 언어로 묘사한 것이 다형성입니다.

바라미의 이미지

소켓 이야기가 가장 맘에 와닿았던 것 같습니다.

우리 주변에서 흔이 보는 전등 소켓.. 규격화 되어 있어서, 그 소켓에 맞는 전구들은 어떤 모양이든, 어떤 특성을 가졌든 켜서 사용 할수 있습죠.
소켓모양만 맞는다면, 그냥 동그란 백열등을 켜서 쓸수도, 꽈배기처럼 꼬여있는 모양의 삼파장 램프도, 혹은 할로겐 램프도 소켓 모양만 맞는다면 사용가능하죠.
이런게 다형성 아닐까요? 규격만 맞는다면 전구가 어떤 형태를 가지고 있어도 사용할 수 있는것.. 그게 가장 비슷한 예 일것 같네요..

sozu의 이미지

정작 중요한건 추상화 능력이 어느정도이냐에 따라 실 적용에 달라질겁니다.
추상화 수준이 떨어지는 다형성은 복잡도를 더 증가시킬수도 있지 않을까요..;;
결국 의도적 수련을 얼마나 하느냐에 따라 달려있다는..

-----------
http://sozu.tistory.com

-----------
청하가 제안하는 소프트웨어 엔지니어로써 재미있게 사는 법
http://sozu.tistory.com