메소드와 함수... 자바를 처음 배울 때 클래스에 선언하는 코드들을 교수님은 메소드라 불렀었었습니다. 그리고 그 전에 C언어를 배울 때는 모든 조각낸 코드들을 함수라고 불렀었죠. 그리고 시간이 지나 보니, 어느덧 메소드와 함수라는 이름을 사용하는데, 이 둘을 잘 구분하고 있나? 싶은 생각이 들어서 간단하게 정리해보고자 합니다.
함수란, 수학에서는 f(x)와 같이 특정 인풋을 통해 특정한 아웃풋을 도출해내는 것을 의미합니다. 위키백과에서는 아래와 같은 그림을 통해 함수를 정의하고 있습니다.
그렇다면 프로그래밍에서 함수는 무엇을 의미하는 걸까요? 코딩을 해 본 사람들은 대부분 알겠지만, 이미 충분히 함수를 이해하고 사용하고 있을 것 같습니다.
int main() { ... }
언어를 제일 처음 배울 때 배웠던 메인함수입니다. 이는 메인, 그러니까 코드를 실행시켰을 때 기준점이 되는 함수를 의미합니다. 이를 잘 살펴보면 int 라는 output type이 존재하며, 파라미터를 통해 데이터를 함수에 전달합니다. 그리고 {} 안에서 무슨 일이 벌어지는지는 모르지만, int 라는 type의 결과값을 return 해줄 것이라는 것을 우리는 알고 있습니다.
이처럼 Input(parameter)을 통해 Function({} 안의 구현 코드)을 동작시켜 Output(return 값)을 도출시키는 것을 함수라고 부른다는 것을 알 수 있습니다.
객체 지향 프로그래밍(OOP)에서 class는 데이터를 저장하고 있을 뿐 아니라, 그 데이터의 가공 및 응용을 위한 여러가지 기능들을 같이 제공하곤 합니다. 그리고 이 클래스 내부에 데이터를 사용하고 응용하거나 기능을 이용하기 위한 함수가 존재하는데, 이를 메소드라고 정의합니다. 이 메소드는 멤버 함수라고도 불리는데, 이를 통해 class에 종속된 함수라는 의미를 지니고 있음을 유추해볼 수 있습니다.
간단하게 포스트되는 글이라서 조금 어색한 느낌이 드는데, 이 두가지를 분류해서 보는데 여러가지 차이점이 많지만, 가장 명확하게 분류할 수 있는 것은 위와 같은 형태인 것 같습니다.
'기타' 카테고리의 다른 글
가볍게 보는 아키텍처 vs 디자인 패턴 (0) | 2024.07.11 |
---|---|
프로퍼티, 그리고 위임 (0) | 2022.10.26 |
클라우드 컴퓨팅 서비스란? (0) | 2022.04.13 |
해시 함수?(feat.computer science) (0) | 2021.06.17 |
JSON과 GSON (0) | 2021.01.26 |
댓글