728x90
반응형

 

 

 

캡슐화 

: 기능의 구현을 외부에 감춤 ( 정보은닉 : 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 : 모든 객체에서 접근 가능하다.

 

 

 

 

 

참조 :

인프런 객체 지향 프로그래밍 입문 

https://radait.tistory.com/5

728x90
반응형

'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

+ Recent posts