캡슐화 (encapsulation) - 개념적이나 물리적으로 객체 내부의 세부적인 사항을 감추는 것 (private, protected, public 등을 포함해 변경하기 쉬운 객체를 만드는 것)
응집도 (cohesion) - 밀접하게 연관된 작업만을 수행하고 연관성 없는 작업은 다른 객체에게 위임하는 정도
의인화 (anthropnmorphism) - 현실에서는 수동적인 존재도 객체지향의 세계에서는 모든 것이 능동적이고 자율적으로 바뀐다느 점을 고려하라!
절차적 프로그래밍 (Procedural Programming) - 프로세스와 데이터를 별도의 모듈에 위치시키는 방식
↔ 책임의 이동 (shift of responsibility)
객체지향 프로그래밍 (Object-Oriented Programming) - 프로세스와 데이터를 동일한 모듈에 위치하도록 프로그래밍하는 방식 (객체의 자율성을 높이고 응집도 높은 객체들을 설계하자)