예제 1-1 Zealot 클래스는 void sound() 라는 함수가 있습니다.

클래스 내에서 정의된 함수를 클래스의 멤버함수라고 합니다.

보통 멤버메소드, 혹은 간단하게 메소드라고 부릅니다. C 언어에서 함수라고 불리던 것과

기능면에서는 같은 일을 한다고 보면 되겠지요.

 

클래스를 만들 때 메소드를 정의하게 되는데, 이 메소드는 아무렇게나 정의하는 것이

아닙니다. 클래스에서 꼭 필요한 행위를 포함하고자 하는 경우에만 정의합니다.

클래스에서 정의된 메소드는 객체들이 어떤 행위를 할 수 있는지를 나타냅니다.

예제 1-1  Zealot클래스에 정의된 메소드는 만들어진 질럿들이 어떤 행위를 할 수 있는

가를 의미하고, 만들어진 zealot객체에게 반드시 필요한 행위로 판단해서 포함했다는

뜻입니다.

 

예제 1-1 Zealot 클래스에서 만들어진 zealot객체는 “My Life For Aiur” 라고 소리를

낼수 있어야 하기 때문에 sound()라는 메소드는 Zealot 클래스에 포함되어야 하는 적절한

메소드라고 생각됩니다.

하지만 void fly() 라는 메소드는 어울리지 않을 것입니다. 왜냐하면 zealot객체는 하늘을

날지는 못하기 때문입니다.

 

예제 1-2 BigRib 클래스에서는 int getPrice()라는 메소드가 있습니다.

int getPrice()메소드는 BigRib햄버거의 가격을 알아보기 위한 메소드입니다.

BigRib 햄버거 객체로하여금 가격을 알아볼수 있으니까요. 만약 int getPrice()메소드가

없다면, 일반적인 경우 햄버거 객체로부터 가격을 알아볼수 있는 방법은 없어지게 됩니다.

만약 Zealot 클래스의 예에서 처럼 BigRib 클래스에 void sound()메소드를 추가 한다면

상당히 우습게 되겠지요. 햄버거가 소리를 낸다는 뜻이니까요.

 

이와 같이 해당 클래스에 메소드를 추가하는 것은 해당 클래스로부터 만들어지는

객체에게 메소드로 표현된 어떤 기능을 부여하는 것이고(추가하는 것이고), 객체에게

메소드로 표현된 행위능력을 부여하는 것이 됩니다.

해당 클래스에 어떤 기능이나 행위를 부여하는 것이 옳은 것인지, 옳지 않은 것인지

어울리는 것인지, 그렇지 않은 것인지는 클래스가 앞으로 어떤 의미로 발전 진화되는지를

분석을 해봐야 할 것입니다.

이것은 100% 프로그래머의 몫이며 프로그래머가 판단해야 할 문제입니다.

zealot이 할 수 있는 행위들은 단순히 소리를 내는 것보다 훨씬 많고, BigRib 햄버거는

가격정보뿐만 아니라 그외 유용한 정보(마요네즈,양상추,불고기 소고기등의 내용물 정보등)를 많이 갖고 있기 때문에, 두 객체의 메소드는 점차로 추가 될 것입니다. 

zealot이나, BigRib 햄버거에게 더 많은 것을 시킬 수 있고, 더 많은 정보를 요청할 수 있는

의미와 같겠습니다.

스타크래프트에 등장하는 zealot이 하늘을 날 수 있다면 언젠가는 Zealot클래스에

void fly() 메소드가 추가될 것입니다. 그런 날이 오면 좋겠습니다. 드랍쉽도 잡아보게.

Posted by
,