12-2. 빈을 이용한 간단한 프로그래밍 (자바빈즈)
◆ pacakge
사용자의 컴퓨터를 들여다보면 여러 개의 폴더로 이루어져 있다. 이 폴더들은 관련성이 있는 파일을 함께 모아 둔 곳이다. 이처럼 클래스 파일을 폴더 구조처럼 잘 정리하여 둔다고 생각한다.
package ch01;
public class SimpleBean {
private String message = ""; - ①
public String getMessage(){ - ②
return message; - ③
} - ④
public void setMessage(String message) { - ⑤
this.message = message; - ⑥
} - ⑦
}
package란 꾸러미를 이야기한다. 일상생활 속에서도 같은 종류나 연관성이 있는 물품들은 하나의 꾸러미로 묶어 둔다. 이처럼 클래스도 묶어 두어 서로 연관성이 있는 클래스들을 함께 보관하게 된다.
클래스 이름을 SimpleBean으로 하고 다른 클래스들이 SimpleBean이라는 클래스를 언제든지 참조해서 사용할 수 있음을 나타낸다. 현재 SimpleBean이라는 클래스는 public으로 선언했기 때문에 외부 클래스 누구든지 자신을 사용할 수 있는 것이다. 여기서는 특별히 생각할 필요 없이 대부분 이처럼 public을 사용하면 된다는 것 정도만 알면 빈즈 프로그래밍을 하는 데 충분하다.
① : 변수를 선언한다. 변수는 어떠한 값을 담을 수 있는 역할을 한다. 변수 이름이 messsage라는 것을 통해 어떤 메시지를 담을 것인가를 알 수 있다. String은 문자열을 담기 위해 선언해주어야 하는 부분이다. 그래서 message라는 변수는 어떤 문자열을 담을 변수라는 것을 알 수 있다. 여기서는 private을 선언하였기 때문에 절대 외부 클래스에서 message 변수에 직접적으로 접근해서 사용할 수 없게 되는 것이다. 정리하자면 문자열을 담을 변수 message를 외부의 클래스에서는 직접적으로 사용할 수 없도록 권한을 부여하여 선언해두고 있다.
②~⑦ : 실제 동작을 정의하는 곳이다. 수학의 함수로 비유하자면 쉽게 이해할 수 있다. 함수란 어떤 값을 입력하면 입력된 값을 처리한 후에 마지막 결과물을 돌려주는 역할을 한다. 이처럼 클래스에서 기능을 정의하고 있는 것을 메서드라고 한다. 메서드는 특정한 역할을 수행하고 결과물을 돌려주거나 혹은 돌려줄 필요가 없는 경우에는 그냥 동작만을 수행한다. 이렇게 메서드를 만들 때에도 public, protected, private을 사용하여 권한을 표시하게 된다.
②~④ : public 다음에 오는 String은 이 메서드를 호출하게 되면 그 결과값으로 String, 즉 문자열을 결과값으로 반환해 준다는 의미이다. 메서드의 내부를 보자면 단지 message 값을 반환(return)해주도록 되어 있다. 즉 변수 message에 담긴 내용을 반환해주는 것이다.
⑤~⑦ : pubic 다음에 오는 void는 이 메서드를 호출하면 특별히 반환해주는 값이 없음을 말한다. 이 메서드를 사용하려면 먼저 메서드에게 넘겨주는 값이 있어야 한다. 함수에 어떤 값을 넘겨주어야 하는데 메서드는 이러한 값을 받아서 처리하는 것처럼 현재 메서드를 사용하기 위해서는 어떤 값을 넘겨주어야 하는데 메서드는 이러한 값을 받아서 처리하도록 작성되어 있는 것이다.
this.message = message의 의미는 메서드 자신이 넘겨받은 값을 자신(SimpleBean)의 변수인 message에 값을 저장한다는 뜻이다. 여기서 메서드의 값으로 넘겨받는 변수 message를 매개변수라고 말한다. 즉 매개변수 message에 담긴 문자열을 자신의 변수인 message에 담아 둔다는 의미이다. 이러한 매개변수는 임시적으로 데이터를 저장할 임시 변수라고 생각한다. 그러므로 매개변수인 message와 자신의 변수인 message는 이름만 같을 뿐 전혀 다른 변수이다. 그런데 이름이 같기 때문에 구분해주어야 하는데 이런 경우 사용할 수 있는 것이 this라는 단어(키워드)이다. 자바에서 자기 자신의 클래스(객체)를 지칭할 때 this라는 단어를 이용한다. 이것이 혼동스럽다면 처음부터 변수의 이름을 달리하면 된다.
◆ TIP || 왜 접근을 제한할까?
private로 선언하게 되면 외부에서 직접적으로 변수에 값을 지정하는 것은 할 수 없게 된다. 예를 들어 나이를 나타내는 age라는 변수가 선언되어 있다고 할 경우 만일 외부에서 나이에 대한 정보를 직접 저장할 수 있도록 public으로 선언하게 되면 잘못된 값(ex: -10살)이 저장될 수 있다는 것이다. 따라서 값을 저장하고자 한다면 반드시 setXxx() 형식과 같은 메서드를 통해서 입력하도록 유도하고 메서드는 이렇게 입력되는 정보가 올바른지 검사한 후에 저장하도록 하는 것이다. 위의 예제에서는 특별히 검사하는 기능은 포함하고 있지는 않지만 중요한 정보를 다루어야 할 경우에는 반드시 필요한 정보이다.
'IT || 개발공부' 카테고리의 다른 글
[JSP] 자바 빈즈에 대한 궁금증 (자바빈즈) (0) | 2023.02.18 |
---|---|
[Java/JSP] 빈을 이용한 JSP 파일 예제 (자바 빈즈 / 자바 빈즈 id, name) (0) | 2023.02.16 |
[Java] 자바빈즈 만들기 (자바빈즈 작성 방법 / 접근제한자 / 자바 구조) (0) | 2023.02.11 |
[Java] 자바빈즈 (JavaBeans) (0) | 2023.02.08 |
[Servlet] 서블릿의 라이프 사이클 (get / post 방식) (0) | 2023.02.07 |
댓글