책임을 가지는 객체들이 서로 협력함으로써 문제를 해결하는 것전문가로써 각자의 책임 을 가진다.협력으로 이뤄진다.요청 해결 하고 처리는 전적으로 위임 한다. (Message)자율성(독립적 흐름)을 가지고 책임을 수행하고 전문성을 가진다.설계를 하며 어떻게 작성할지보단 어떤흐름과 책임이 필요하지로 분류한다.

알고있는 것 으로 해당 객체에대해 의존성이 생김 (협력을 위해)전파 할 수 있는 문제가 존재. 유지보수성이 떨어짐.최소화 하는것을 목적이 중요. (객체지향의 최대근본문제)
필요성 에 대한것.추상적인것 만 의존하도록 유도 및 설계가 가능하다.HOW , 주로 메소드 Body 부분What

acc.getDate().isAfter(now) 이렇게 말고
acc.isExpired() 이렇게 작성
참조 : https://m.blog.naver.com/fbfbf1/222798772563
다른객체 로 대체/확정되는 변경이 존재.객체 단위로 변경성을 높힘. 관심사 에 대한 분리 자율성 확보DIP 가 가능하다.DIP (Dependency Inversion Principle) : 객체에서 Class 를 참조해야할때 Class 를 직접참조하는 것이 아닌 대상의 상위요소
추상클래스 or 인터페이스로 참조하라는 원칙
참조 : https://inpa.tistory.com/entry/OOP-%F0%9F%92%A0-%EC%95%84%EC%A3%BC-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EB%8A%94-DIP-%EC%9D%98%EC%A1%B4-%EC%97%AD%EC%A0%84-%EC%9B%90%EC%B9%99

타입계층 을 만들어낼 수 있다. 추상화, 다형성을 구현하는데 문법적 기반을 만들어준다.행동을 보장 해준다.형변환 을 문법적인 보장 을 해준다.
동적 바인딩다양한 자료형에 속하는것을 허가 되는 성질. 행위호환성 을 보장한다.외부에서 주입받는 것.
IOC 와 DI이 객체지향적으로 어떤 도움이 될까?
