Day14 - 캡슐화, 정보 은닉 / setter , getter

2021. 3. 6. 13:40JAVA 공부

이번에는 정보 은닉, 캡슐화에 대해 알아 봅시다

 

캡슐화

캡슐화는 객체지향프로그래밍의 특징 중 하나로, 연관된 데이터와 함수를 논리적으로 묶어놓은 것 입니다.

즉. 비슷한 데이터, 비슷한 기능 들을 묶어서 사용하는 겁니다.

우리가 이미 하고 있는거에요

Student 는 학생이죠? 우리는 학생에 있을 법한 변수를 넣고, 있을 법한 기능을 넣어 줬습니다.

그리고, 뜬금없이 Student에 fly 같은 기능을 넣지는 안잖아요?

이게 바로 캡슐화에요. 

 

정보 은닉

자. 생각해 봅시다

여러분의 개인정보 소중한가요? 소중하죠

왜 소중한가? 음... 왜 소중할까요? 그건 스스로 생각해 봅시다

아무튼. 데이터는 소중하죠?

 

그러면, 이 데이터를 아무나 막 설정하고, 보고 하면 되나요? 안되죠?

그렇기 때문에 우리는 정보를 은닉할 필요가 있습니다.

그럼 여기서 정보(데이터)는 무엇인가?

우리는 데이터나 값을 어디에 저장하죠? 변수에 저장하죠. 멤버변수.

바로 방금 전에 배운 private를 멤버변수 앞에 붙여주면, 같은 클래스에서만 사용하고, 다른 곳에서는 저장된 값이 뭔지, 존재 자체도 모르잔아요?

그렇습니다. 앞으로 우리는 멤버 변수 앞에 private 를 붙여서 사용할 겁니다.

 

앞에 private 를 붙이면 같은 클래스에서 밖에 못쓰는데, 그러면 같은 클래스에서만 사용하라는 거에요? 그러면 클래스를 만드는 의미가 없잔아요

 

네 그러면 클래스를 만드는 의미가 없어지죠. 그래서 setter와 getter 가 존재합니다.

 

setter / getter

setter 와 getter 는 private 되어 있는 멤버 변수에 값을 변경하거나, 값을 가져오는 역할을 합니다.

setter와 getter 는 public 으로 선언 하죠

 

setter 는 멤버변수의 값을 변환 하는 기능

getter 는 멤버변수의 값을 가져오는 기능을 합니다

 

setter 는 멤버변수의 값을 변환하기 전에, 조건을 넣기도 합니다.

 

예제를 봅시다

MyBirth 클래스에서 멤버 변수들을 전부 private 로 선언해 줍니다.

 

setter를 먼저 보죠. setter 가 하는 기능이 뭐죠? 멤버 변수의 값을 변환해주는 거죠

그러면, 반환유형은 없고, 매개변수는 있어야 겠네요?

이렇게 해주면 됩니다. 여기서 setter 는 public 으로 해줘야 다른곳에서 쓰겠죠

이런 setter는 멤버변수의 값을 변환 해주는 기능을 하니까, 조건도 넣어보죠

이러면, 매개변수로 받는 year 가 1950 ~ 2021 사이일 경우만 멤버변수의 값이 변환 되겠죠

 

getter를 봅시다

getter는 값을 가져오는 기능이에요. 즉 값을 반환 하는거죠

그러면 가져올 값과 같은 데이터 유형이 반환 유형이 되고, 매개변수는 필요 없겠네요 ?

이렇게 해주면 됩니다. 쉽죠?

 

그런데 멤버변수가 막 엄청 많아요. 그러면 언제 setter와 getter를 다 만듭니까 귀찮게

네. 너무 자주 쓰이는 기능이다 보니까 이클립스에서 이런 setter와 getter 그리고 생성자 까지 만드는 걸 지원해줍니다.

alt+ shift + s 를 누르세요 ! 

그러면 이렇게 나오는데, Generate Getter and Setters... 를 클릭해 줍시다

여기 나오는 항목이 뭐에요? 제가 만든 private 멤버 변수죠

setter와 getter 를 만들 멤버 변수를 클릭해주세요. 저는 Select All 을 누르겠습니다

그리고 Generate 를 누릅니다

- 끝 -

간단하죠? 생성자도 똑같이 만들 수 있습니다.

alt + shift + s 를 누르고, Generate Constructor using Fields... 를 눌러줍니다

생성자에서 초기화 시켜줄 멤버변수를 선택하고 똑같이 Generate 누르면 됩니다.

이번에는 기본 생성자도 만들어 봅시다 ctrl + space + enter 누르면 됩니다

TODO 는 그냥 여기서 하고자 하는 걸 코딩해라 란 뜻입니다. 지우셔도 되고 안 지우셔도 되고....

 

※단축키 말고 맨 위에 있는 탭중에 Source 를 누르면 똑같이 할 수 있습니다

 

이제 만드는 법도 알았고, 빨리 만드는 단축키도 알았으니 사용을 해봅시다.

 

이번에는 캡슐화 , 정보은닉, setter 와 getter 에 대해 알아 보았습니다

 

고생하셨습니다

'JAVA 공부' 카테고리의 다른 글

Day15 - 다형성  (0) 2021.03.08
Day14 - 클래스 내에서 객체 만들기  (0) 2021.03.06
Day14 - 접근 제한자  (0) 2021.03.05
Day13 - super  (0) 2021.03.04
Day13 - this  (0) 2021.03.04