[TIL] 접근 제어 지시자와 정보 은닉

DEVELOPERS_Ivan ㅣ 2023. 12. 11. 19:14

목차
1_오늘의 TIL
2_접근 제어 지시자(acces modifier)
3_get() / set() 메소드
4_정보 은닉

 

1_오늘의 TIL

 

오늘은 부트 캠프에서 학습을 하였던 부분을 정리하기 위해 자바부터 스프링까지 재차 기록해 보려고 한다. 

 

2_접근 제어 지시자(acces modifier)

 

클래스 외부에서 클래스의 멤버 변수, 메서드, 생성자를 사용 할 수 있는지 여부를 지정하는 키워드입니다.

캡슐화는 접근 제어자를 통해 이루어 집니다.

TPYE Explanation
public 접근 제한 없음 
protected 동일한 패키지 내에 존재하거나 파생 클래스에서만 접근 가능
default 아무런 접근 제한자를 명시하지 않으면 default 값이 되며, 동일한 패키지 내에서만 접근 가능
private 자기 자신의 클래스 내에서만 접근 가능(외부 클래스, 상속 관계의 클래스에서도 접근 불가)

 

3_get() /  set () 메소드

 

private 으로 선언된 멤버 변수(필드) 에 대해 접근, 수정할 수 있는 메소드를 public 으로 제공 get () 메소드만 제공되는 경우 read-only 필드

자동으로 생성해 주는 단축 기능이 존재한다.

 

4_정보 은닉

 

private 으로 제어한 멤버 변수도 public 메소드가 제공되면 접근 가능하지만 변수가 public으로 공개되었을 때 보다 private 일 때 각 변수에 대한 제한을 public 메소드에서 제어 할 수 있다.

객체 지향 프로그램에서 정보 은닉은 필요한 외부에서 접근 가능한 최소한의 정보를 오픈함으로써 객체의 오류를 방지하는 클라이언트 객체가 더 효율적으로 객체를 활용 할 수 있도록 해준다.

 

캡슐화는 객체 내부의 속성이나 행위를 외부에서 직접 접근할 수 없게 하는 것이다. 흔히 은닉과 혼동하는 경우가 많은데, 은닉화란 캡슐화를 통해 얻어지는 '실제 구현 내용 일부를 외부에 감추는 효과'이다.
 
객체의 속성과 행위를 묶으면 응집도가 올라가므로 자율적인 객체가 된다는 장점이 있다. 자율적인 객체가 되면 다른 객체의 영향을 덜 받기 때문에 자신의 상태를 스스로 잘 처리할 수 있게 된다.
 
그런데 이 상황에서 캡슐화가 이루어지지 않으면 외부에서 내부 속성에 접근하여 사용할 수 있기 때문에 결합도가 높아지고 응집도가 낮아지게 된다. 이렇게 되면 객체는 수동적인 객체가 되고 다른 객체의 영향을 크게 받기 때문에 자신의 상태를 스스로 처리하기 힘들어져 유지보수를 어렵게 한다.
 
또한, 결제 로직과 같이 민감한 부분을 외부로 공개하게 되면, 악용될 수 있는 위험이 있다.
 
즉, 변경에 유연한 프로그램을 만드는 동시에 보안적인 프로그램을 만들기 위해서 캡슐화를 지켜야 한다.