외부 언어 선택
사용자가 알아야 하는 동작 이름만 public으로 남기고 자료구조 이름은 숨긴다.
public, private, protected는 문법 키워드보다 설계 약속에 가깝다. 어디서 상태를 바꿀 수 있는지를 좁힐수록 객체의 조건을 설명하기 쉬워진다.
사용자가 알아야 하는 동작 이름만 public으로 남기고 자료구조 이름은 숨긴다.
값 검증이 필요한 멤버는 setter보다 의미 있는 명령으로 바꾸는 편이 안전하다.
protected 멤버는 파생 클래스 전체에 내부 표현을 노출하므로 장기 결합을 만든다.
class Account {
public:
void deposit(int amount);
bool withdraw(int amount);
int balance() const;
private:
int cents_ = 0;
};