일반적으로 메소드보다는 함수라는 말을 많이 사용한다. 그 나름의 이유가 있다.
함수는 말 그대로 어떠한 기능(Function)을 의미한다.
반면에 메소드는 어떤 클래스 내부에 선언된 함수를 의미한다. 단순 의미로만 따지자면 함수가 메소드보다 더 포괄적이기 때문에 많이 쓰이는 것이다. 하지만 자바 같은 객체지향언어의 경우에는 애초에 함수 자체가 특정 클래스 안에 선언되는 경우가 많아 함수보다 메소드라는 말이 더 많이 쓰이기도 한다.
기억해야할 것은 함수와 메소드는 엄밀히 따지면 다른 말이고 함수가 메소드보다 포괄적인 의미를 가진 단어라는 것이다.
메소드(Method)의 사전적인 의미
멤버 함수라고도 하며, 객체지향 프로그래밍 언어에서 클래스 혹은 객체에 소속된 서브루틴을 가리킨다. 데이터와 멤버 변수에 대한 접근 권한을 가진다.
객체지향 프로그래밍(OOP:object-oriented programming)에서의 클래스는 같은 종류의 집단에 속하는 속성(attribute)과 행위(behavior)를 정의하는 것인데, 클래스에 의해 만들어지며 프로그램 런타임에 실제 메모리 상에 할당되는 객체를 인스턴스라고 한다. 메소드란 클래스 내부에 정의되어 있으며, 인스턴스가 클래스와 관련하여 어떻게 행동하는지의 동작을 정의하는 것이다.
메소드는 기존의 프로그래밍 언어에서의 함수와 대응되는 개념으로, 객체의 상태 및 속성 변경과 같이 객체에 대해 수행할 수 있는 작업을 정의한다. 예를 들어, 엘리베이터라는 객체는 올라감(up), 내려감(down)이라는 메소드를 가질 수 있다. 또한 메소드를 통하면 런타임 시에 주어진 클래스 인스턴스 내에 저장된 데이터에 접근하고, 값을 변경하는 등의 다양한 기능이 수행 가능하다. 자주 사용되는 내용의 코드를 메소드로 정의하고 사용하면 코드의 양이 줄고 코드의 관리 및 유지보수가 용이하다.
메소드가 프로시저 호출과 크게 다른 두 가지는 다음과 같다. 메소드는 오버라이딩(overriding)을 제공한다. 오버라이딩이란 상위 클래스가 가지고 있는 메소드가 하위 클래스로 상속될 때 이를 재정의하여 사용할 수 있도록 하는 기능이다.
메소드의 또 다른 특징은 외부에서 다른 클래스들이 객체의 데이터 속성에 접근하고 수정할 때 그 내용이 내부적으로 어떻게 구성되었는지 숨길 수 있도록 하는 인터페이스, 즉 캡슐화(encapsulation)를 제공한다는 것이다. 캡슐화란 객체 내부의 상태를 숨기고 모든 상호 작용을 객체의 메소드를 통해 이루어지도록 하는 것으로 객체지향 프로그래밍의 주요 원리이다.
또한 메소드는 매개변수의 수와 타입이 다르다면 같은 이름의 메소드를 중복 정의하여 사용할 수 있도록 오버로딩(overloading)하여, 객체지향 프로그래밍 언어에서 하나의 메소드나 클래스가 다양한 방법으로 동작하는 것(다형성)을 지원한다.
[네이버 지식백과] 메소드 [method] (두산백과)
함수(function)의 사전적인 의미
특정 일을 하는 명령어들의 묶음.
함수(function)에는 '기능' 또는 '역할'이라는 뜻이 담겨 있습니다. 수학에서는 '미지수 x 값에 따라 y 값이 정해진다.'와 같이 수학식 사이에 관계가 있는 것을 함수라고 하지요. 프로그래밍에서 함수는 어떤 특정한 일을 하는 명령어들을 묶어놓은 것을 말합니다.
필요한 함수를 미리 만들어 놓으면 처리해야 할 정보가 있을 때마다 모든 명령어를 다 적지 않고도 필요한 함수만 불러 사용할 수 있습니다. 따라서 프로그램을 만들 때 자주 사용하는 기능이나 명령어를 묶어서 함수로 만들어 놓으면 이전과 같은 작업을 반복할 필요가 없어진답니다.
프로그램을 만들 때는 '함수 만들기', '함수 부르기'등의 명령어를 사용해서 함수를 만들 수 있습니다. 함수를 사용할 때에는 'fun()'이라는 용어를 쓰고, 괄호 안에 함수 이름을 넣어 활용하지요.
함수를 사용하는 예를 들어 볼까요? 덧셈에서 '+'는 ‘+’ 기호의 양쪽에 있는 값들을 더하는 기호입니다. 예를 들어, ○ + □ = ☆인 식이 있다고 합시다. 이 '+'를 이용하여 '+ 기호 양쪽을 더해라!'라는 명령을 함수로 미리 만들어놓으면 그 후에는 + 기호만 사용해도 컴퓨터가 명령을 이해하는 것이지요.
이처럼 특별한 기능을 하는 명령어들을 함께 묶어서 기호로 만들어두면 반복되는 기능을 함수이름만 불러서 사용할 수 있어요.
[네이버 지식백과] 함수 [function] (천재학습백과 초등 소프트웨어 용어사전)
댓글