객체 지향 프로그램(OOP)의 두번째 특징 '캡슐화'
캡슐화(은닉화)란?
관련있는 데이터를 하나로 묶거나
맴버변수에 외부에서(다른 크래스)접근 못하도록 막는 것을 말한다.
단, 메소드를 통해서 맴버변수의 값을 읽거나 설정하도록 한다.
말그대로 캡슐안에 넣어서 외부에서 내용물을 쉽게 못바꾸게 하거나 관련있는 것들 끼리 하나의 캡슐에 넣는 것을 말한다.
이렇게 캡슐에 둘러싸여서 보호되고 있는 데이터에 접근하는 방법에는 두 가지가 있는데, Getter와 Setter이다.
Getter는 Get, 말 그대로 데이터를 가져오는 역할을 한다.
접근지정자가 private인 맴버변수의 값을 읽을 수 있는 메소드이다.
▲Getter의 형식은 위와 같으며 외부에서 private한 데이터에 접근할 수 있어야 하므로 public을 사용하며 반환타입은 해당 맴버변수의 자료형과 동일해야 한다. 이후 get맴버변수명을 이용하여 호출한다. 데이터를 get해야하기 때문에 return이 존재해야한다.
Setter는 Set, 말 그대로 데이터를 setting 하는 역할을 한다.
접근지정자가 private한 맴버변수에 값을 설장하는 메소드이다.
▲ Setter형식은 위와 같으며 외부에서 set을 할 수 있어야 하기 때문에 public을 사용하며 값을 set만 하기때문에 return값은 필요없으므로 void를 사용한다. 또한 우리가 원하는 값을 해당 private변수에 넣어주어야 하기때문에 인자를 받을 매개변수도 있어야한다.
입금과 출금을 하는 간단한 예제를 보자.
▲ DTO라는 클래스를 만들고 private를 이용해서 맴버변수를 만들었다. 때문에 외부 클래스에서 DTO클래스의 맴버변수에는 그냥 접근할 수 없다.
이제는 외부클래스에서 DTO클래스의 맴버변수에 접근하고 또 데이터를 설정할 수 있도록 getter와 setter메소드를 만들자.
직접 만들수도 있지만 편하게 만들수도 있다.
▲빈곳에서 마우스 우클릭을 눌르고 위와 같은 메뉴를 누른다.
▲ 그러면 여러항목중 위와 같이 getter와 setter를 만드는 기능이 있다. 이를 누르면 편하게 만들 수 있다.
▲ 그러면 알아서 위와같은 getter들과 setter메소드들이 만들어 진다.
this에 대해서는 다른 포스팅에서 다뤄보도록 하고 여기서 this는 해당 메소드가 속해있는 클래스를 뜻한다.
이제 기본정보가 담긴 클래스와 맴버들은 다 만들었으니 해당 맴버들을 사용하기위한 메소드들을 만들어보자.
▲DAO라는 새로운 클래스 파일을 만들고 우리가 한 사람의 정보를 초기화하는 메소드 입금, 출금, 현재통장정보를 출력하는 메소드들을 만들었다.
이제 직접 사용해보자
▲ 사용을 위한 클래스를 새로 만들고 DAO에 있는 메소드들 사용을 위해 인스턴스화를 먼저하였다.
이후 메소드들을 이용하면 객체지향적으로 잘 실행되는 것을 볼 수 있다.
'Java' 카테고리의 다른 글
[Java]this (0) | 2022.03.11 |
---|---|
[Java]캡슐화(Encapsulation) - 진짜 캡슐화 (0) | 2022.03.11 |
[Java]Date 클래스 (0) | 2022.03.10 |
[Java]Math 클래스 (0) | 2022.03.10 |
[Java]Regular Expression(정규표현식) (0) | 2022.03.10 |