소프트웨어 공학 기법중에 객체지향 이라는 패러다임이 있습니다.
누군가에게 물어보면 “모든것은 객체다” 라고 대답을 해 주더군요. 참내 뭔 소린지...
보통 프로그램을 짤때 어떤 멍청한 데이터가 오면 그녀석을 어떻게 처리하고
또 그 결과물을 어떻게 처리해서 어떤 결과를 내지요. 우리의 멍청한 데이터는
여기 저기 날아다니면서 목표에 가깝게 변신해 갑니다.
그런데 객체지향 에서는 멍청한 데이터가 똑똑해 집니다.
이 데이터는 더이상 멍청한 바이트 덩어리가 아니라, 엄연한 하나의 객체가 됩니다.
똑똑한 데이터, 우리의 객체는 이제는 전과 같지 않아요.
자기 자신이 누군지 그리고 자신은 뭘 할 수 있는지도 잘 알고 있지요.
우리는 이 객체와 대화를 할 수 있습니다.
대화를 통해서 이 객체에게 명령을 내리면 그 명령을 알아듣고 맞는 행동을 하죠.
그리고 객체지향에는 상속 이라는 개념이 있습니다.
어떠한 객체를 상속받은 녀석은, 상속해준 그 부모 객체와 아주 똑 닮아가지고
부모가 알아듣는 명령은 이 녀석도 알아 듣지요.
근데 그냥 닮는게 아니라, 부모보다 “더” 똑똑해 집니다. 더 많은 명령을 알아듣고
능력도 더 향상될 수 있지요.
더 똑똑해졌고 “마치” 부모와 같아요. 우리는 이 녀석이 그 부모의 자식이라는 걸 알고
이녀석이 무엇을 할 줄 아는지 예측이 가능하죠.
여기에서 재미있게도 은유법(혹은 메타포) 이라는 개념을 이야기 할 수 있습니다.
우리가 누군가에게 무엇인가에 대해 설명을 할때, “그건 말이야 마치 * * * 과 같아서......”
“그건 * * *의 *** 와 비슷해”
“여자의 마음은 흔들리는 갈대와 같아서 젠장할 도무지 알 수가 없다니까” 풉;;
종종 우리는 어떠한 어려운 개념에 대해서 공부를 하거나 설명을 들을때,
자신이 알고있는 범주내의 무엇과 비교해보고 공통점을 찾을때, 이해가 급 잘됨을 느낍니다.
용어는 제멋대로 다 다르고, 뭔가 화려해 보이다가도 내가 아는 무엇의 그것과 다를바 없다고
결론이 나면, 금방 이해가 되지요. 완전 바닥부터 배울때 보다 훨씬 금방 배우게 됐군요.
객체지향의 상속도 이와 비슷합니다. 우리는 객체지향적 설계를 할때 프로그램 하고자하는
대상에 대해서 일반적인 공통점을 찾아내려고 노력을 하지요.
우리의 프로그램은 이 공통이라는것을 가지고 시작을 하고, 상속을 받으면서 계속
똑똑해져 갑니다. 마치 우리가 미리 알았던것과 비슷한 무엇을 배우는 것 처럼요.
완전 바닥에서 배우는것 보다, 아는 범주내의 것과 연관지어 배우는것이 쉬운것과 마찬가지로
프로그램을 짤때에도, 이미 작성해둔 범주의 기능에 대해서 연관지어 기능을 추가하고
조금의 수정을 하게되면 프로그램을 짜는것이 수월해 집니다.
우리가 누군가에게 무언가를 가르칠때 “이것은 * * * 의 그것과 같다고 보면 되.. “ 라고 하듯
프로그램을 짤때(컴퓨터를 가르칠때) 이 기능은 ~ 객체의 ~ 과 같다고 보면되... 라고 하면서
바닥부터 가르쳐야할 눈물나는 상황을 피할수가 있는겁니다.
이럴때 보면 소프트웨어는 공학이라기 보다 예술에 더 가까운 것 같아요 :)
'객체지향'에 해당되는 글 1건
- 2008/11/23 귀천 은유법(Metaphor)과 상속(inheritance). (4)
받은 트랙백이 없고,
댓글 4개가 달렸습니다.

글
댓글을 달아 주세요
댓글 RSS 주소 : http://maya.jaram.org/blog/bth/rss/comment/15댓글 ATOM 주소 : http://maya.jaram.org/blog/bth/atom/comment/15
관리자만 볼 수 있는 댓글입니다.
헉
Abstraction으로 얘기할 수도 있지 :)
Abstraction! :D