본문 바로가기
뉴렉처 과정 기록 (Backend)/JAVA

03/25 JAVA 캡슐화

by yeonee3219 2021. 3. 25.

오류의 범위를 안쪽으로 한정짓기

 

 

 

함수를 포함할수 있는 울타리가 기존에는 없었다 -> 필요 -> 만들어진 도구 : 클래스

 

 

데이터 구조와 함수를 모아논 것

   => 캡슐 (capsule)

 

캡슐밖에서는 영향을 받을 수 없도록 모아놓는 것 (함수를 새로 정리)

   => 캡슐화 <객체지향은 아니다>

 

 

 

 

 

 

 

 

 

캡슐안에 모여있어야 하는 것들이 밖에 존재할때 -> 캡슐이 깨졌다...(강제할 수 있는 방법이 없어)

 

 

 

은닉성을 가능하게 하는 도구

 

처음부터 외부에서(캡슐밖에서) 사용할 수 없게 만드는 능력이 포함 -> 접근 제어 지시자로

 

 

protected -> 상속배울때 알아보자

 

 

 

 

 

 

오른쪽에서 nums이름바꿔버리면 왼쪽에서 오류

 

캡슐화 해보기

 

 

 

 

 

왼쪽에 있던 오류난 함수들을 캡슐화해서 Lotto클래스 안에 넣었다

 

왜 print함수는 캡슐에 안 넣었는가? -> 콘솔출력용 함수이기 때문에 

 

 

 

 

그렇다면 Program class 안에 콘솔출력용 함수(print)가  Lotto 캡슐의 private함수(nums) 사용할 수 있게 해보자

 

private 함수(nums)는 깨뜨리지 않고 그 값을 리턴받을 새로운 함수(getNum) 만들어주기

 

 

처음에 내가 해본 것, return값이 잘못됐다

 

 

return값이 정수여야 하고.. 

 

 

생성된 로또의 정수배열 i번째를 매개로 받았으니 그대로 리턴

 

 

 

gen함수에서는 lotto객체 생성과 초기화가 있는것은 바람직하지 않으니 메인함수로 분리

 

->초기화해야하는 부분이 메인함수에 있으면 nums때문에 캡슐이 깨지므로 초기화하는 함수를 캡슐안에 새로 생성

 

 

 

 

 

sort부분이 계속 오류뜨길래 왜그런가했더니... for문안에서의 범위가 잘못됐더라..

 

-> 잘 돌아감 

 

 

 

 

lotto size도 한번에 지정해주고 싶다! 따로 lotto.size로 바꿔주었다

 

 

main 함수안에서는 또 캡슐 깨져버려 -> getSize함수 새로 만들기

 

 

 

이클립스가 편하게 만들어줌