본문 바로가기
프로그래밍

함수?? 메서드?? 무슨 차이가 있을까??

by 지나팩 2024. 4. 15.

 

프로그래밍 언어를 조금 공부해보신 분들은 한번쯤은 들어보셨을 함수와 메서드. 이 두 용어는 종종 혼용되어 사용되곤 하지는데요. 아마 대부분의 분들은 공부하시면서 둘다 기본적으론 그 기능은 똑같다고 배우셨을것 같네요. 저 역시도 마찬가지였는데. 하지만 이 둘의 개념은 다릅니다. 물론 그 개념에 대해 모른다고 해서 프로그래밍을 하지 못하는 것은 아니나 어떠한 차이점이 있는지에 대해 알아둠으로써 더 효율적인 구조를 작성할 수 있는 기반이 될 수도 있기에 함께 알아보도록 하겠습니다.

 

함수(Function)

  • 함수는 어떤 작업을 수행하는 코드의 묶음입니다. 일반적으로 입력을 받아서 처리하고, 결과를 반환합니다.
  • 함수는 독립적으로 존재할 수 있으며, 특정 객체나 클래스에 종속되지 않습니다.
  • 예를 들어, 파이썬에서 print()나 len()과 같은 내장 함수는 어떤 객체에도 속하지 않고 독립적으로 작동합니다.

함수 예시: C++에서 함수는 클래스 외부에 정의될 수 있으며, 특정 객체에 종속되지 않습니다. 아래 예시에서는 정수 배열의 합을 계산하는 전역 함수를 만들겠습니다.

 

 

메서드(Method)

  • 메서드는 클래스의 일부로 정의된 함수입니다. 즉, 메서드는 객체의 행동을 정의하고 객체의 데이터(속성)와 상호작용합니다.
  • 메서드는 반드시 객체와 관련되어 사용되며, 객체의 상태를 변경하거나 객체의 정보를 반환하는 역할을 합니다.
  • 예를 들어, 파이썬의 리스트 객체에는 .append(), .pop()과 같은 메서드가 있습니다. 이러한 메서드는 특정 리스트 객체에 대해 호출되고, 그 객체의 내용을 조작합니다.

메서드 예시: 메서드는 클래스의 일부로 정의되며, 클래스의 인스턴스에 대한 데이터와 행동을 관리합니다. 여기서는 Rectangle 클래스를 만들고, 이 클래스의 멤버 함수로 면적을 계산하는 Area 메서드를 추가합니다.

 

이 두 예시에서, sumArray 함수는 독립적으로 작동하며 어떠한 클래스의 객체에도 종속되지 않습니다. 반면, Rectangle 클래스의 Area 메서드는 Rectangle 객체의 상태(너비와 높이)를 사용하여 면적을 계산하며, 객체의 데이터에 접근할 수 있는 권한을 가집니다. 이로써 클래스의 멤버 함수는 클래스의 인스턴스 데이터를 직접적으로 관리하고 조작하는 데 사용됩니다.

 

 

간단히 말해, 모든 메서드는 함수입니다(코드의 묶음이며, 호출 시 특정 작업을 수행)하지만, 모든 함수가 메서드는 아닙니다(메서드는 클래스의 일부이며 객체에 종속됩니다). 함수는 보다 일반적인 용어이며, 메서드는 객체 지향 프로그래밍에서 클래스와 객체의 맥락에서 사용되는 특수한 형태의 함수입니다. Unity의 경우 c#을 사용하기에 기본적으로 용어를 메서드로 사용하는 이유가 바로 이 이유입니다.

댓글