좀더 직접적인 이유로는 확장이 쉽다는 걸 들 수 있지 않을까요.
if나 switch-case로 타입에 따른 대응을 한다면 새로운 타입을 추가했을 때 처리하기 힘들겠죠. Anti-If 캠페인이라는 것, 이런 경우에 쓰이는 if문을 다형성으로 대체하자는 얘기입니다. http://www.antiifcampaign.com/
우리 주변에서 흔이 보는 전등 소켓.. 규격화 되어 있어서, 그 소켓에 맞는 전구들은 어떤 모양이든, 어떤 특성을 가졌든 켜서 사용 할수 있습죠.
소켓모양만 맞는다면, 그냥 동그란 백열등을 켜서 쓸수도, 꽈배기처럼 꼬여있는 모양의 삼파장 램프도, 혹은 할로겐 램프도 소켓 모양만 맞는다면 사용가능하죠.
이런게 다형성 아닐까요? 규격만 맞는다면 전구가 어떤 형태를 가지고 있어도 사용할 수 있는것.. 그게 가장 비슷한 예 일것 같네요..
다음 글을 한 번
다음 글을 한 번 참고해보세요. 관련 글들도 읽어보시면 도움이 될 듯.
http://alankang.tistory.com/249
질문을 다시
질문을 다시 해석하자면 "왜 다형성을 쓰나요?" 쯤 되는 건가요?
실수를 실수로 나눠도 나눗셈을 사용하고, 정수를 정수로 나눠도 나눗셈을 사용한다고 말하고 싶기 때문입니다.
실수나눗셈, 정수나눗셈이라고 부르면 힘들고 불편하잖아요.
그냥 나눗셈이라고 부르지만, 실수를 나눌 때는 소숫점자리까지 나누고, 정수를 나눌 때는 정수만 나오게 하면 편하니까요.
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
전통적인
전통적인 짖다 모델을 쓰면 되지 않을까요?
동물(virtual 짖다)
- 개(void 짖다) : 멍멍
- 고양이(void 짖다) : 야옹
- 호랑이(void 짖다) : 어흥
동물 p[3] = {개, 고양이, 호랑이};
for ( int i=0; i<3; ++i )
p[i].짖다();
뭐 이렇게? -_-;;;;;
옛날에 책에서 본것 같기도 하네요..
반대로 모든 동물들에게는 짖다라는 메서드를 강제해서
프로그램의 틀이 일정하게 유지되는 효과도 있는것 같습니다..
개 짖다.. 닭 도 짖다. 토끼 도 짖다..
============================================================
선한 인간이냐 악한 인간이냐는 그사람의 의지에 달렸다. -에픽테토스-
의지 노력 기다림은 성공의 주춧돌이다. -파스퇴르-
============================================================
============================================================
선한 인간이냐 악한 인간이냐는 그사람의 의지에 달렸다. -에픽테토스-
의지 노력 기다림은 성공의 주춧돌이다. -파스퇴르-
============================================================
복잡도를 줄이기 위해서죠.
프로그래밍, 혹은 소프트웨어 공학의 역사는 감히 '복잡도'와의 싸움이라고 저는 생각합니다.
OOP는 프로그램 설계에 추상적인 사고와 계층 구조를 도입함으로써 복잡도를 줄이려는 노력이라 보고요.
다형성은 그런 추상성의 핵심이죠.
그에 대한 예는 katalog님이 들어주신 '짖다' example이면 충분합니다.
좀더 직접적인
좀더 직접적인 이유로는 확장이 쉽다는 걸 들 수 있지 않을까요.
if나 switch-case로 타입에 따른 대응을 한다면 새로운 타입을 추가했을 때 처리하기 힘들겠죠. Anti-If 캠페인이라는 것, 이런 경우에 쓰이는 if문을 다형성으로 대체하자는 얘기입니다. http://www.antiifcampaign.com/
사고의 추상화가 아닐까요?
사고의 추상화기 때문이 아닐까요?
여러가지의 비슷한 동작들은 하나로 추상화버릴 수 있기 때문입니다.
=========================
CharSyam ^^ --- 고운 하루
=========================
=========================
CharSyam ^^ --- 고운 하루
=========================
..
top down 적인 분류체계를 언어로 묘사한 것이 다형성입니다.
으음...
소켓 이야기가 가장 맘에 와닿았던 것 같습니다.
우리 주변에서 흔이 보는 전등 소켓.. 규격화 되어 있어서, 그 소켓에 맞는 전구들은 어떤 모양이든, 어떤 특성을 가졌든 켜서 사용 할수 있습죠.
소켓모양만 맞는다면, 그냥 동그란 백열등을 켜서 쓸수도, 꽈배기처럼 꼬여있는 모양의 삼파장 램프도, 혹은 할로겐 램프도 소켓 모양만 맞는다면 사용가능하죠.
이런게 다형성 아닐까요? 규격만 맞는다면 전구가 어떤 형태를 가지고 있어도 사용할 수 있는것.. 그게 가장 비슷한 예 일것 같네요..
예시는 많지만..
정작 중요한건 추상화 능력이 어느정도이냐에 따라 실 적용에 달라질겁니다.
추상화 수준이 떨어지는 다형성은 복잡도를 더 증가시킬수도 있지 않을까요..;;
결국 의도적 수련을 얼마나 하느냐에 따라 달려있다는..
-----------
http://sozu.tistory.com
-----------
청하가 제안하는 소프트웨어 엔지니어로써 재미있게 사는 법
http://sozu.tistory.com