유데미 X 웅진 STARTERS 취업 부트캠프 백엔드 3기 - 4주차 학습 일지_ Encapsulation

zwundzwzig·2022년 12월 12일
0
post-thumbnail

이전에 공부한 자바스크립트에서 클로저 개념을 통해 캡슐화를 경험했다.
렉시컬 스코프를 활용한 변수 바인딩 개념인 클로저를 통해 자바스크립트는 캡슐화를 구현한다. 심지어 해당 스코프 내의 블록이 소멸돼도, 독립된 복사본인 클로저를 활용해 접근이 가능하다는 개념이다.

캡슐화는 객체 지향 언어의 주된 특징 중 하나이고, 객체 지향 언어로 활용될 수 있는 자바스크립트 역시 캡슐화 구현이 가능한 것이다.

캡슐화의 정의

관련있는 변수나 함수를 하나의 클래스로 묶고 외부에서 쉽게 접근하지 못하도록 은닉하는 방법.

캡슐화를 통해 외부에서 객체 내부에 직접적인 접근이나 훼손을 막고 오직 객체가 제공하는 속성(data fields)과 메소드를 통해서만 접근이 가능하다. 또한 실제 구현 내용 대부분을 감춘다. 이는 외부 스코프에서 내부 스코프의 변수를 변경시킬 수 없는 자바스크립트의 클로저 개념과 상당히 유사하다.

Information Hiding

캡슐화를 설명할 때 주로 함께 설명되는 특징이 은닉화이다.

캡슐화를 활용해 다른 클래스 코드의 잘못된 데이터 접근을 막고 특정 객체나 비즈니스 로직에 들어갈 값을 미리 검증하는데, 이게 바로 은닉화 개념이다.

또한 객체 외부의 코드를 많이 바꾸지 않고도 쉽게 로직을 바꿀 수 있어 객체 지향 언어 특유의 탁월한 재사용성을 바탕으로 유지보수나 확장시 오류의 범위를 최소화 할 수 있다.

데이터가 변경되어도 다른 객체에 영향을 주지 않기 때문에 독립성이 좋고, 객체의 모듈화에 기여한다.

이는 getter / setter 개념의 예시가 되는데, 특정 클래스나 인스턴스 데이터에 접근할 때 해당 값을 가져오거나 get 해당 데이터의 값을 변경시키 set거나 할 수 있는 것이다.

대신, 해당 메소드나 데이터에 접근하기 위해선 접근제어자 modifier 개념과 연결되는데, 이는 추후 블로그에서 좀 더 자세히 다뤄보자.

캡슐화 vs 은닉화

은닉화는 외부에서 객체의 속성을 함부로 접근하지 못하도록 하는 것을 일컫고, 캡슐화는 메서드 안에서 어떠한 일이 일어나고 있는지 모르게 해야한다는 개념이다.

즉, 속성의 접근을 제어 하는 것을 은닉화, 메서드의 내부를 알지 못하도록 하는 것을 캡슐화라고 한다. 은닉화는 속성을, 캡슐화는 메서드를 담당해 중요한 정보를 숨긴다.

외부에서 메서드를 사용하는 사용자는 내부에서 어떤 속성을 썼는지 내부 로직을 예측할 수 없을텐데, 이렇게 사용자가 기능만 알고 사용하게 된다면 캡슐화를 잘 적용시킨 것이다.


본 후기는 유데미-웅진씽크빅 취업 부트캠프 3기 백엔드 과정 학습 일지 리뷰로 작성되었습니다.

유데미 바로가기 / STARTERS 취업 부트캠프 공식 블로그 보러가기


🧷 참고 교재

  • [도우출판]Java의 정석 3rd Edition, - 남궁성
profile
개발이란?

0개의 댓글