예제 1-1 void sound() 혹은 예제 1-2 int getPrice()등과 같이 클래스의 메소드는

메소드이름, 메소드 인자, 리턴형,메소드 내용으로 이루어져 있습니다.

메소드의 이름은 객체가 이 메소드를 통해서 어떤 행위를 할 수 있는지 알려 주는

가장 중요한 요소입니다. 만약 여러분들이 클래스를 설계할 때 메소드 이름이야 어떻게

짓던간에 제대로 일을 수행만 한다면 상관없다고 생각하셨다면 그 생각을 버리시기

바랍니다. 적절하고 체계적으로 구성된 메소드의 이름은 시간이 지나고 프로그램이

진화할 수록 가치가 돋보이게 됩니다.

예제 1-1 Zealot클래스에서 정의된 메소드인 sound는 그 이름으로 보아 객체로

하여금 소리를 내게 하는 기능을 담당하고 있다는 것을 직관적으로 알수 있겠지요.

이는 프로그램의 가독성(Readability 을 아주 높여 주는 것입니다.

저는 클래스를 설계할 때 클래스이름과 메소드이름을 짓는데 아주 많은 노력을

합니다. 반면 마음대로 이름을 짓는 프로그래머를 보면 아주 화가 납니다.

그 직관적이지 않은 이름 때문에 언젠가는 대가를 치루게 되지요.

 

인자는 메소드를 호출할 때 함께 보내는 정보를 의미합니다.

메소드를 호출할 때 함꼐 보낼정보가 없다면 정보를 보내지 않아도 되겠습니다.

Zealot클래스의 sound()라는 메소드는 인자가 없이 빈 괄호 뿐입니다.

zealot으로 하여금 소리를 내게하기 위해 sound()를 호출할 때 어떤 정보도 주지 않아도

소리를 낼수 있기 때문입니다. BigRib 햄버거의 가격을 알려고 getPrice()를 호출하는 경우

에도 정보를 보낼 필요가 없기 때문에 빈 괄호 뿐입니다.

 

리턴형은 객체가 메소드호출의 결과로 돌려주어야 하는 정보를 의미합니다.

하지만 메소드가 반드시 정보를 돌려주어야 하는 것은 아닙니다.

zealot으로 하여금 소리를 내게 하는 sound()라는 메소드는 돌려주어야 할 정보가 없습니다. 이런 경우는 메소드 앞에 void라고 지정해 줍니다.

void라고 지정한 메소드는 메소드 호출의 결과로 돌려주어야 하는 정보가 없다는 뜻입니다.

BigRib클래스의 getPrice()라는 메소드는 BigRib햄버거의 가격정보를 돌려 주어야 합니다.

BigRib햄버거 객체에게 가격이 얼마인지 알아보려고 한 행위이기 때문이지요.

가격에 대한 정보는 int형으로 갖고 있기 때문에 리턴형도 int형으로 선언합니다.

 

 메소드의 내용은 실제로 객체가 해야할 행위를 적어주는 것입니다.

 sound()메소드는 zealot객체로 하여금 소리를 내게 하는 것이고(실제로는 화면에 메시지를

출려하는 것입니다.), getPrice()메소드는 BigRib객체로 하여금 자신의 가격에 대한 정보를

구해서 알려주는 행위입니다.

Posted by
,