Language/JAVA

5주차 과제 : 메소드 정의하는 방법

메소드란?

 

  • Method

 

클래스가 만들어지기 전에 기능만 담당했던것을 function이라하고

클래스의 필드와 함께 관련된 기능을 담당하는 것을 메서드라고 한다. (하는 일은 같지만 관점이 바뀌며 용어가 달라졌다.)

객체의 동작에 해당하는 중괄호 { } 블록이다.

중괄호 블록은 이름을 가지는데 이것이 메소드의 이름이다.

메서드를 실행하면 블록 내의 모든 코드들이 일괄적으로 실행된다.

필드를 읽고 수정하는 역할부터 다른 객체를 생성해서 활용하는 등 다양한 역할을 수행한다.

객체간의 데이터 전달의 수단으로 사용된다.

외부로 부터 매개값을 받을 수 있고 실행 후 어떤 값을 리턴할 수도 있다.

 

선언부(리턴타입, 메서드이름, 매개변수선언)와 실행 블록으로 구성된다.

메서드의 선언부를 메서드 시그너처(signature)라고도 한다.

 

naming convention

메소드의 이름은 숫자를 사용하면 안되고, $와 _를 제외한 특수 문자를 사용하지 말아야 한다.

관례적으로 메소드의 이름은 소문자로 작성한다.

서로 다른 단어가 혼합된 이름이라면 뒤이어 오는 단어의 첫머리 글자는 대문자로 작성한다.

 

메소드 정의하는 방법

인터페이스

더보기
/*
 * 계산기 인터페이스
 * - 더하기, 빼기, 곱하기, 나누기
 */

package kr.co.dong.ch6;

public interface Calc {
	int sum(int n, int m);
	int sum(int...n);
	int minus(int n, int m);
	int minus(int...n);
	int mul(int n, int m);
	int mul(int...n);
	double div(int n, int m) throws Exception;
	double div(int...n);
}

클래스

더보기
/*
 * 계산기의 기능을 구현하는 클래스 : class Cal
 * -(두 수) 더하기, 빼기, 곱하기, 나누기 등
 */

package kr.co.dong.ch6;

public class Cal implements Calc{
	// 더하기 : 매개변수 2개의 정수, 결과값 정수로 리턴
	@Override
	public int sum(int n, int m) {
		return n + m;
	}
	// 가변인수 매개변수로 쓰는법 (자료형... 변수명)
	// 이때 들어오는 매개변수는 배열로 치환되어 사용된다.
	@Override
	public int sum(int...n) {
		int result = 0;
		for(int temp : n) {
			result += temp;
		}
		return result;
	}
	
	// 빼기 : minus
	@Override
	public int minus(int n, int m) {
		return n - m;
	}

	@Override
	public int minus(int... n) {
		int result = 0;
		for(int temp : n) {
			result -= temp;
		}
		return result;
	}

	// 곱하기 : mul
	@Override
	public int mul(int n, int m) {
		return n * m;
	}

	@Override
	public int mul(int... n) {
		int result = 1;
		for(int temp : n) {
			result *= temp;
		}
		return result;
	}

	// 나누기 : div
	@Override
	public double div(int n, int m) throws Exception{
		double result = 0.0;
		if(m == 0) throw new Exception("0으로 나눌 수 없습니다.");
		result = (double)n / m;
		return result;
	}

	@Override
	public double div(int... n) {
		double result = 0.0;
		try {
			for(int temp : n) {
				result /= (double)temp;
			}
		}catch (Exception e) {
			e.printStackTrace();
		}
		
		return result;
	}
}

사용시

더보기
package kr.co.dong.ch6;

public class CalTest {
	public static void main(String[] args) {
		Cal c1 = new Cal();
		int n1 = 10, n2 = 30;
		int result = 0;
		
		// 더한다
		result = c1.sum(n1, n2);
		System.out.println(result);
	}
}