캡슐화
: 기능의 구현을 외부에 감춤 ( 정보은닉 : Information Hiding )
: 캡슐화를 통해 기능을 사용하는 코드에 영향을 주지 않고 ( 또는 최소화) 내부 구현을 변경할 수 있는 유연함
캡슐화를 위한 규칙
1. Tell, Don`t Ask
: 데이터 달라 하지말고 해달라고 하기
샘플)
* 변경 전
if ( acc.getEmpAuth() == MANAGER ) {
...운영자 권한
}
* 변경 후
if( acc.hasManagerAuth()){
...운영자 권한
}
2. Demeter`s Law
: 메서드에서 생성한 객체의 메서드만 호출
: 파라미터로 받은 객체의 메서드만 호출
: 필드로 참조하는 객체의 메서드만 호출
샘플)
acc.getExpDate().isAfter(now) -> acc.isExpired()
Date date = acc.getExpDate(); date.isAfter(now); -> ass.isValid(now)
접근제어자
캡슐화를 하기 위해서는 접근제어자를 통해 설계가 잘 이루어져야 한다.
자신 내부의 모듈은 감추고, 다른 모듈의 내부 작업도 직접적으로 개입하지 못하도록 설계해야한다.
▷ 클래스 접근 제어자
default : 동일 패키지의 클래스(class)에만 인스턴스(객체)를 생성가능하다.
public : 다른 패키지에서 인스턴스(객체)를 생성가능하다.
▷ 메소드 접근 제어자
private : 동일한 클래스 안에서만 접근이 가능하고, this를 사용하는 것들은 외부에서 접근 불가능하고, 상속도 안된다.
default : 접근제어자가 없는 형태로 동일한 패키지 안에서만 접근이 가능하다.
protected : 동일한 패키지 안에서 사용가능하고, 다른 패키지라도 상속받은 클래스에는 접근이 가능하다.
public : 모든 객체에서 접근 가능하다.
참조 :
인프런 객체 지향 프로그래밍 입문
'IT Diary > # JAVA' 카테고리의 다른 글
Ioc 와 di (0) | 2021.08.10 |
---|---|
[ JAVA ] 다형성과 추상화 (0) | 2021.08.03 |
[ JAVA ] try catch 문 (0) | 2021.07.09 |
[ JAVA ] this 와 this() (0) | 2021.03.14 |
[JAVA] Class, Object , Instance (0) | 2021.03.14 |