반응형

메서드란?

 

1. 문장들을 묶어놓은 것. {}

- 작업단위로 문장들을 묶어서 이름 붙인것 (메서드)

프로그래밍에서 코드의 중복은 상당히 나쁘게 본다.
코드의 중복은 반드시 제거해야 한다.

오른쪽 코드는, 왼쪽에서 배열을 출력하는 작업을 별도의 메서드로 만든 것이다.
해당 코드를 {} 안에 넣었다. 
printArr이라는 메서드로 만든 것이다.

메서드를 사용하는 방법은 쉽다.
메서드이름에다가 괄호쳐주고 사용하면 된다. 
이렇게 메서드를 사용하는 것을 메서드 호출이라고 한다. (메서드 사용)

이렇게 중복된 코드를 메서드로 묶은다음, 메서드를 호출하는 방식으로 사용하면 코드가 훨씬 간결해진다.

 

2. 값(입력)을 받아서 처리하고, 결과를 반환(출력)

예를 들어서 add라는 메서드가 있다고 가정해보자.
add메서드가 하는 일은 두개의 값을 더하는 것이다.
덧셈을 하려면, 덧셈 할 값들이 필요하다. 즉, 값2개를 입력받아서 그 값들을 덧셈한 결과를 반환(출력)하는 것이다.
우리가 수학에서 공부한 함수와 비슷하다.

메서드와 함수는 거의 같은 말인데,
메서드는, 객체지향 개념에서 함수를 지칭하는 용어다.
어떤 차이가 있냐면, 메서드는 꼭 클래스 안에 있어야 한다.
함수는 그러한 제약이 없다.(함수는 클래스에 독립적이다)

둘다, 작업에 필요한 값을 입력받아가지고 처리한 후 그 결과를 반환한다라는
근본적인것은 메서드와 함수가 같다라고 생각하자.


 

메서드의 장점

  • 코드의 중복을 줄일 수 있다.
  • 코드의 관리가 쉽다.
  • 코드를 재사용할 수 있다.
  • 코드가 간결해서 이해하기 쉬워진다.

중복코드를 메서드로 만들고, 그 부분들을 메서드 호출로 바꾸면 중복코드를 제거할 수 있다.
그리고 코드를 여러곳에서 관리하던 것을 메서드에서만 관리하면 되므로 관리가 용이하다.
그리고, 이 메서드를 다른 곳에도 가져다가 사용할 수 있어서 재사용이라는 장점도 있다.

 


 

메서드의 작성

  • 반복적으로 수행되는 여러 문장을 메서드로 작성
  • 하나의 메서드는 한 가지 기능만 수행하도록 작성

 

반복적으로 수행되는 여러 문장을 메서드로 작성하면 좋다.
그리고 꼭 반복적으로 수행되지 않더라도 여러 문장으로 구성된 하나의 작업을 메서드로 만들어 놓으면 좋다.
그러면 코드가 간결해지고 이해하기 쉬워진다.

그리고, 작업이 두개인 경우에도 하나로 묶을 수 있지만,
가능하면 하나의 메서드는 한 가지 기능만 수행하도록 작성하는 것이 바람직하다.

왼쪽의 첫번째 코드를 arrayinit(){}, 두번쨰에 배열 출력부분은 printArr(){}로 만드는 것이 바람직하겠다.

이렇게 해야, 나중에 코드를 유지보수 할 때에도 유리하고,
그리고 코드를 최소의 의미있는 작업 단위로 나눠놔야 재사용성이 높아진다.

 


 

메서드 = 선언부 + 구현부

메서드는 선언부와 구현부로 이루어져 있다.
선언부는 메서드 이름, 매개변수(입력, 작업에 필요한 값들)로 이루어져 있다.
이때, 매개변수는 없을 수도 있고 여러개 있을 수도 있다.(0~n개)
그리고 반환타입은 이 메서드가 작업한 작업 결과의 타입이다.

구현부는 메서드 호출시 수행될 코드,
즉, 메서드가 작업시 수행할 코드들을 묶은 것이다.

예를 들어서, add메서드가 있을 때, 이 add메서드는 2개의 값이 필요하다.
그래서 2개의 입력값을 필요로 한다.

앞서 말했듯, 
매개변수는 없을수도 있고 여러개 있을수도 있다. (0~n개)
그러나 출력값은 0개~1개만 있을 수 있다.
그러면 작업 결과가 여러개면 어떡하느냐? 
그럴떄에는 배열을 이용하든지, 하나의 객체(변수를 묶어 놓은 것)로 묶어서 줘야한다. 이 방법에 대해서는 앞으로 공부하면서 배울 것이다.

우리가 게시판을 이용할 때, 첨부파일에 하나의 파일만 업로드를 할 수 있는 경우, 여러개의 파일을 업로드 하기 위해 여러개의 파일을 압축해서 하나의 압축파일을 올리는 것과 비슷하게 생각하면 된다.

그리고 반환할 값이 없을 때는, 반환 타입에 void라고 적는다. (void는 영어로 무효 즉, 없다는 뜻이다)

 


 

메서드의 구현부

  • 지역변수(lv) : 메서드 내에 선언된 변수

앞서 배운 것처럼,
메서드 영역내에 선언된 변수를 지역변수 lv라고 한다.

여기서 lv 지역 변수 x, y, result 총 3개 인데,
x,y는 매개변수(입력) 이다.
매개변수도 지역변수라는 점을 잘 기억해두자.
이 지역변수들은 메서드 영역이 끝날 떄까지 유효하다.
메서드가 종료되면 모두 사라진다.

그렇기 때문에, 서로 다른 메서드 영역에 있는 변수들은 이름이 같아도 상관없다.

 

반응형

'JAVA' 카테고리의 다른 글

return문, 반환값  (0) 2022.03.26
메서드 호출과 메서드의 실행흐름  (0) 2022.03.25
클래스 변수와 인스턴스 변수  (0) 2022.03.25
선언위치 변수 종류  (0) 2022.03.25
클래스의 정의  (0) 2022.03.24