1. 모델링으로서의 객체지향
현실 세계의 객체처럼 인식하고 다룰 수 있도록 프로그래밍 하는 것
2. 설계와 아키텍쳐 관점에서의 객체지향
캡술화와 인터페이스를 통한 의존성 관리
나는 후자쪽에 무게를 두는 편이다.
마침 비슷한 관점을 이야기하는 글을 봐서 이 글을 쓰고 있다.
https://github.com/msbaek/memo/blob/master/core-of-oop.md
객체지향 프로그래밍이나 의존성 주입의 메커니즘을 다루는 글은 많은데, 그 메커니즘이 왜 그렇게 설계되었는지, 그것을 통해서 무엇을 이루려고 하는 것인지 구체적으로 설명하는 글은 별로 없는 것 같다.
전자의 관점은 객체지향을 클래스에만 초점을 두고 보는 것이라고 생각한다.