1. 객체 지향 설계 5원칙

  1. SRP (Single Responsibility Principle) : 단일 책임 원칙

    1. 하나의 Class는 하나의 책임만 가져야 함
    2. 어떤 변화에 의해 Class를 변경해야 하는 이유는 오직 하나뿐이어야 함
  2. OCP (Open-Closed Principle) : 개방 폐쇄 원칙

    1. S/W 구성요소(Component, Class, Module, Function 등)는 확장에 대해서는 열려 있어야 하지만 변경에 대해서는 닫혀 있어야 함

    2. 자신의 확장에는 열려 있고, 주변의 변화에 대해서는 닫혀 있어야 함

      코드 연구소 를 참고하였습니다 - https://code-lab1.tistory.com/121

      코드 연구소 를 참고하였습니다 - https://code-lab1.tistory.com/121

  3. LSP (Liskov Substitution Principle) : 리스 코프 치환 원칙

    1. 프로그램의 Object는 프로그램의 정확성을 깨뜨리지 않으면서 “*하위 타입”*의 인스턴스로 바꿀 수 있어야 함
    2. Sub Type은 언제나 기반 타입으로 교체할 수 있음
    3. Sub Type은 언제나 기반 타입과 호환될 수 있어야 함
    4. Sub Type은 기반 타입이 약속한 규약을 지켜야 함
  4. ISP (Interface Segragation Principle) : 인터페이스 분리 원칙

    1. 특정 Client를 위한 Interface 여러 개가 범용 Interface하나보다 나음
    2. 한 Class는 자신이 사용하지 않는 Interface구현하지 말아야 한다는 원칙임
    3. 어떤 Class가 다른 Class에 종속(Inherit)될 때에는 가능한 최소한의 Interface을 사용해야 함
  5. DIP (Dependency Inversion Principle) : 의존 관계 역전 원칙

    1. ProgrammerAbstract에 의존해야지, 구체화에 의존하면 안 됨

    2. Abract(Interface)에 의존해야지, 구체화(Class)에 의존하면 안 된다는 것

      코드 연구소 를 참고하였습니다 - https://code-lab1.tistory.com/121

      코드 연구소 를 참고하였습니다 - https://code-lab1.tistory.com/121

→ 앞 글자들을 모아 SOLID 라고 부르기도 함