객체지향 특징 : 추상화, 캡술화, 상속, 다형성 객체지향 설계 원칙 : SOLID(SRP, OCP, LSP, ISP, DIP) OCP: 개방-폐쇄 원칙 (Open/closed principle) 소프트웨어 요소는 확장에서는 열려 있으나 변경에는 닫혀 있어야 한다 인터페이스를 구현한 새로운 클래스를 하나 만들어서 새로운 기능을 구현 확장 - new를 없애는 행위. 뭐가 들어와도 상관없는 상태가 됨 변화 - 개발자가 수정코딩하는 행위는 최대한 줄여야 함 DIP: 의존관계 역전 원칙 (Dependency inversion principle) 프로그래머는 “추상화에 의존해야지, 구체화에 의존하면 안된다.” 의존성 주입은 이 원칙을 따르는 방법 중 하나 구현 클래스에 의존하지 말고, 인터페이스에 의존하라 역할(..