[OOP]캡슐화( encapsulation)란?

객체 지향 프로그래밍 입문 - 최범균님의 인프런 강좌을 보고 작성하였습니다.

캡슐화(encapsulation)란?

캡슐화(encapsulation)는 일반적으로 연관 있는 변수와 함수를 클래스로 묶는 작업을 말한다.

객체가 기능을 어떻게 구현 했는지 외부에 감추는 것

  • 구현에 사용된 데이터의 상세 내용을 외부에 감춤

캡슐화만 잘해도 좋은 코드를 만들 수 있음

정보은닉(Information Hiding) 의미 포함(최근에 포함해서 이야기 많이함)

캡슐화의 장점

외부에 영향 없이 객체 내부 구현 변경 가능

  • 클래스 내부 메소드의 구현만 변경하면 되게끔 -> 외부 소스코드의 연쇄적인 변경 x

캡슐화를 잘 할수 있는 규칙!!

Tell, Don’t Ask 규칙
= 데이터를 달라고 부탁하지 말고 직접 해달라고 하기!
Demeter’s Law 규칙

  • 메서드에서 생성한 객체의 메서드만 호출
  • 파라미터로 받은 객체의 메서드만 호출
  • 필드로 참조하는 객체의 메서드만 호출

acc.getExpDate().isAfter(now) -> acc.isExpired();
Date date = acc.getExpDate(); date.isAfter(now); -> acc.isValid(now);