[ CS ] OOP 5가지 설계 원칙 ( SOLID )

이하나·2022년 12월 5일
0

CS STUDY

목록 보기
3/5

[1] S - 단일 책임의 원칙 ( SRP, Single Responsibility Principle )

  • 한 클래스는 하나의 책임만 가져야 한다.

    하나의 클래스에 대해 변경하려는 이유가 하나가 되어야 한다.
    여러 대상이 한 클래스의 변경에 영향을 미친다면,
    그 클래스는 여러 책임을 가지고 있다고 할 수 있다.
    즉, 클래스의 변경에 미치는 대상은 하나여야 한다.

[2] O - 개방-폐쇄 원칙 ( OCP, Open/Close Principle )

  • 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.

    클래스나 메소드 혹은 속성을 직접적으로 수정하지 않고 ( 변경에는 닫혀있고 )
    상속이나 오버라이딩을 통한 확장이나 변경이 가능해야 한다. ( 확장에는 열려있다. )

[3] L - 리스코프 치환 원칙 ( LSP, Liskov Substitution Principle )

  • 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.

    자식 클래스의 인스턴스, 자식 객체가 부모 클래스 내의 요소를 호출 할 때
    자식 객체가 부모 객체를 완전히 대체 할 수 있어야 한다.
    즉, 확장된 자식 클래스는 부모 클래스의 동작은 완전히 대체 할 수 있어야 한다.
    예를 들어, 같은 조건에서 부모 객체가 요소를 호출할 때와 자식 객체가 동일 요소를 호출할 때
    서로 다른 결과가 나온다면 그것은 완전히 대체한다고 볼 수 없다.

[4] I - 인터페이스 분리 원칙 ( ISP, Interface Segregation Principle )

  • 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.

    인터페이스는 특정 클라이언트가 사용하는 메소드로만 구성되어
    사용하지 않는 기능의 변경에 대한 영향을 받지 않도록 해야 한다.
    즉, 클라이언트에 맞게 인터페이스를 분리시켜야 한다.

[5] D - 의존관계 역전 원칙 ( DIP, Dependency Inversion Principle )

  • 추상화에 의존해야지, 구체화에 의존하면 안된다.

    고수준 모듈이 변하기 쉬운 저수준 모듈에 의존해서는 안된다.
    저수준 모듈이 변경되었을 때 그에 맞추기위해 고수준 모듈 또한 변경이 되어서는 안된다.
    세부적인 저수준 모듈보다 그 모듈들을 포함하는 더 큰 추상화된 개념의 모듈에 의존해야 한다.

[6] 참고 사이트

profile
코딩을 배우는 비전공자 코린이!

0개의 댓글