10강. 클래스와 객체1(2)

철새·2022년 2월 10일
0
  • Do it! 자바 프로그래밍 입문 온라인 강의를 수강하며 작성하였습니다.
  • Section 1. 자바의 핵심 - 객체지향 프로그래밍
  • 10강 "클래스와 객체1(2)"
  • 메서드 > 함수 정의하기 > 함수와 스택 메모리 > 클래스에 메서드 구현하기 > 함수의 목적

메서드

  • 함수의 일종으로, 객체의 기능을 제공하기 위해 클래스 내부에 구현되는 함수
  • 함수는 하나의 기능을 수행하는 일련의 코드로, 중복되는 기능은 함수로 구현하고,
    함수를 호출하여 사용한다.

함수 정의하기

// 정의하는 방법
[함수 반환형] [함수 이름] (매개변수1, 매개변수2...){
	기능 코드;
    return [결과값]
}
//예시
int add (int num1, int num2){
	int result;
    result = num1 + num2;
    return result;
}

함수는 위와 같은 형식으로 정의한다.
1. 함수 반환형은 return값의 자료형을 나타내고, return 값이 없는 경우에는 void라고 쓴다.
2. 함수 이름은 함수의 기능과 관련하여 명명한다.
3. 매개변수는 함수의 수행을 위해 필요한 변수로, 함수를 사용할 때 넣어주는 값을 의미한다.

public class FunctionTest {
	public static void main(String[] args) {
		int num1 = 10;
		int num2 = 30;
		
		int sum = addNum(num1, num2);	//1
		System.out.println(sum);	//3
	}
	
	public static int addNum(int n1, int n2) {	//2
		int result = n1 + n2;
		return result;
	}
}

함수를 표현할 때 "함수명()" 으로 표현한다.
1. main() 바깥에 addNum()을 정의하였고, main()에서 addNum()을 호출하면서 num1과 num2를 넘겨주었다.
2. addNum()은 int 값 두 개를 매개변수로 받아 두 값을 더해서 return한다.
3. 함수의 return 값은 변수 sum에 대입된다.
함수 호출 출력
num1의 값인 10과 num2의 값인 30이 더해져서 sum에 40이 정상적으로 대입된 것을 확인할 수 있다.

함수와 스택 메모리

  • 함수가 호출될 때 사용하는 메모리를 스택(stack)이라고 한다.
  • 함수의 기능 수행이 끝나면 자동으로 메모리가 반환된다.

함수와 스택 메모리

위에서 FunctionTest 클래스에서 함수를 정의하는 예제를 기준으로 설명하면,
1. main()에서 int형의 num1, num2, sum 변수를 선언했으므로 4byte*3 = 12byte의 공간이 스택에 생성된다.
2. main()에서 addNum()을 호출하면서 addNum()에서 사용한 int형의 n1, n2, result 변수로 인해 또 12byte의 공간이 스택에 생성된다.
3. result값이 sum에 대입되고 addNum()이 사용한 공간은 자동으로 사라진다.

클래스에 메서드 구현하기

  • 클래스의 메서드는 멤버변수를 사용하여 기능을 구현한다.
public class Student {
	// 멤버 변수를 정의
	int studentID;
	String studentName;
	int grade;
	String address;
	
    //학생 이름을 가져오는 메서드
	public String getStudentName() {
		return studentName;
	}
    //학생 이름을 설정하는 메서드
	public void setStudentName(String name) {
		studentName = name;
	}
}
  • 위 코드는 지난 강의에서 사용한 Student 클래스에 2개의 메서드를 추가한 것이다.
  • 메서드 이름은 클래스 입장이 아닌 메서드를 사용하는 입장에서 이름을 정해주는 것이 좋다.
  • 학생 이름을 가져오는 메서드는 getStudentName으로 명명하고, return 값이 String 자료형이므로 메서드 이름 앞에 반환형으로 String을 써주었다.
  • 학생 이름을 설정하는 메서드는 setStudentName으로 명명하고, return 값 없이 studentName을 바꾸는 기능만 하므로 반환형을 void로 써주었다.

함수의 목적

  1. 코드를 효율적으로 구현하기 위해 함수로 기능을 분리해서 구현하고, 필요한 기능을 가져다 쓴다.
  2. 유지보수가 용이하다. 함수를 호출하는 방식이 아니라면 같은 기능을 하는 여러 개의 코드를 수정할 때 여러번 수정해야하는 불편함이 있지만, 함수를 호출하는 방식으로 구현했다면 함수만 수정하면 된다.
  3. 함수의 이름은 함수의 기능을 나타내는 것이 좋고, 하나의 함수는 하나의 기능만 구현하는 것이 좋다.
profile
효율성을 추구하며 세상을 떠도는 철새입니다.

0개의 댓글

관련 채용 정보