Capsulization, Information Hiding
keep details hidden
낮은 결합도와 높은 응집도를 유지할 수 있도록 설계
= 추상화 (멤버 변수 & 멤버함수 추가)
= 접근제한 지정
객체지향의 핵심인 캡슐화를 잘하기 위한 가장 간단한 방법은 추상화를 잘 하는 것
추상화는 데이터 위주의 성질(고전적 OOP), 형태(타입), 상태(데이터 주도 설계)와 관계 중심인 시간(절차지향), 행동(함수형), 정의(논리형), 상황(도메인 주도 설계, AOP) 등으로 나누어 생각할 수 있음
Rules
- All member variables should be private
- Basic class operations should be
- Public member functions
- Friend or ordinary functions
- Overloaded operators
- Make class implementation unavailable to users of class
so separate interface file and implementation file
Has-a
member relation unlike OOP Inheritance