객체지향 ‐ 객체지향 - dnwls16071/Backend_Summary GitHub Wiki
📚 객체지향
- 객체지향은 데이터 및 데이터와 관련된 프로시저를 객체라고 불리는 단위에 묶는다.
- 객체(Object)란 무엇일까?
- 객체의 핵심은 바로 기능을 제공하는 것에 있다.
- 예를 들어, 스피커는 소리 크기를 줄이는 기능과 소리 크기를 키우는 기능이 있을 것이다.
- 스피커가 "어떻게" 소리를 줄이고 키우는 것이 중요한 것이 아니다. "어떤" 기능을 제공하는 것이 중요한 것이다.
📚 캡슐화(Encapsulation)
- 도움이 되는 규칙 1. Tell, Don't Ask
- 도움이 되는 규칙 2. 데미테르의 법칙
⭐Tell, Don't Ask
// Bad(X)
// member.getExpiryDate() -> 만료일자를 가져온다.
if (member.getExpiryDate() != null) {
// 만료 시 처리 로직(어쩌구 저쩌구...)
}
// Good(O)
if (member.isExpired()) {
// 만료 시 처리 로직(어쩌구 저쩌구...)
}
- Bad 케이스와 같이 데이터를 읽는 것은 데이터 중심으로 코드를 작성하게 만드는 원인이 되며, 절차지향적인 코드를 유도하게 된다.
- 데이터 대신 기능을 실행해달라고 명령하면 해당 기능을 어떻게 구현했는가 여부가 감춰지게 된다. 기능 구현이 캡슐화되었다는 의미가 된다.
- 메서드에서 생성한 객체의 메서드만을 호출
- 파라미터로 받은 객체의 메서드만을 호출
- 필드로 참조하는 객체의 메서드만을 호출