본문 바로가기
소프트웨어 공학

[객체지향] 함수와 메서드 차이

by 티옌.liy 2022. 11. 9.

절차지향에서 함수를 쓰다가

객체지향에서 메서드를 사용하다보면

함수나 메서드나 똑같은거 아닌가 하는 생각이 드는데

엄연히 이 둘은 다르다.

 

함수는 독립된 모듈처럼 어디서든 호출이 가능하지만

메서드는 클래스에 종속되어 있으므로

접근제어자 권한에 따라 호출 및 사용이 제한된다.

 

 

1. 함수 (function)

하나의 기능을 수행하는 일련의 코드로, 다른말로 서브루틴이라 한다.

구현된 함수는 호출하여 사용하고 호출된 함수가 종료되면 기존 제어코드로 복귀한다.

함수로 구현된 기능은 여러 곳에서 동일한 방식으로 호출하여 사용이 가능하다.

 

2. 함수 구현(정의)하기

함수의 선언부는 반환 값 이름, 매개 변수으로 구성된다.

내부는 코드, 반환 값, 함수 구역으로 구성된다.

 

함수 구성 형식
반환값 함수이름(매개 변수1, 매개 변수2){
    Code 작성
    
    반환문 예약어(return)

}
예시 코드 - 덧셈을 수행하고 결과값을 반환하는 함수
int add(int firstNumber, int secondNumber){
    int result;
    result = firstNumber + secondNumber;
    return result;
}

 

3. 메서드 구현(정의)하기

메서드(Method)는 객체의 기능을 구현하기 위해 클래스 내부에서 구현하는 함수이다.

맴버 함수 (member function)이라고 불리기도 한다.

 

메서드를 구현하여 객체가 수행할 기능을 정의, 구현한다.

메서드의 이름은 이 객체를 사용하려는 상대 객체에 관점으로 명명하는것이 좋다

 

예시코드 - 축구 선수 객체에 축구공을 받는 기능 구현
public class SoccerPlayer{

    public void getBall(Object playUser){
        code 구현
    }
}

 

4. 함수 호출과 스택 메모리

Stack 메모리는 함수 호출 시 지역 변수들이 사용하는 메모리 영역이다.
함수 수행이 끝나면 자동으로 OS에게 자원을 반환한다.

 

함수가 수행하기 위한 스택 공간을 함수 스택 프레임이라 하며

함수 호출 시 함수 스택 프레임의 시작주소를 호출하는 것이다.

출처 https://www.tcpschool.com/c/c_memory_stackframe

 

댓글