객체 지향 프로그래밍 입문 - 최범균님의 인프런 강좌을 보고 작성하였습니다.
캡슐화(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);