Back-End 면접질문5

Lee·2020년 10월 22일
1

객체지향 설계 5대 원칙에 대해 설명해주세요

  • 일명, SOLID 원칙이라고 불리며
    SRP(Single Reposibility Principle) : 단일 책임 원칙
    OCP(Open Closed Principle) : 개방 폐쇠의 원칙
    LSP(Liskov Substitution Priciple) : 리스코프 치환 우너칙
    ISP(Interface Segregation Principle) : 인터페이스 분리 원칙
    DIP(Dependency Inversion Principle) : 의존 역전 원칙
    의 5가지를 의마합니다
    하나씩 설명드리겠습니다

  • 먼저 SRP 입니다. 이는 하나의 클래스에 하나의 기능만 책임지도록 하는 원리입니다. 하나의 클래스가 너무 여러 역할을 하게 되면 변경시에 너무 많은 변경사유가 생기기 때문에 하나의 클래스를 변경하는 이유는 하나만 하도록 한 클래스에는 한기능만 하도록 만드는 것입니다. 객체 지향 4대 원칙중 '추상화(abstraction)'에서 모델링과도 깊은 연관성을 가지고 있습니다.

  • 둘째로 OCP 입니다. 개방 폐쇄 원칙인데 간단히 요약해보면 소프트웨어 엔티티(클래스, 모듈, 메소드 등)은 자신의 확장에 대해서는 열려있어야 하고 주변의 변화에 대해서는 닫혀 있어야 한다는 점입니다. 예를 들어 운전자가 QM6를 구입해서 운전하다 볼보 XC90으로 차를 변경했는데 이때 운전자 클래스는 중간에 자동차라는 클래스를 둠으로써 여러차를 산다고 해도 자기 자신의 클래스는 영향을 받지 않고 확장을 한다는 것을 알 수 있습니다. JDBC를 사용해 DB를 만들때도 마찬가지로 DB 서버 종류가 변경되어도 JDBC를 사용하는 클라이언트 코드는 변경하지 않아 OCP원칙을 따른다는 것을 알 수 있습니다

  • 셋째로 LSP 입니다. 서브타입은 언제나 자신의 기반타입으로 교체할 수 있어야 한다는 말인데 쉽게 말하자면 객체 지향에서의 상속은 조직이나 계층도가 아닌 분류도여야 한다는 점입니다. 일반적인 가족의 계층도를 생각해보면 아버지, 어머니 및에 아들 딸이 있는데 이를 class라고 하고 아버지를 new로 딸이 생성이 된다고 가정하면 뭔가 이상하다는 것을 알 수 있습니다. 하지만 동물을 class로 하고 new로 사자가 생성된다고 하면 이상하지 않습니다. 이처럼 객체지향은 분류에 중점을 두고 설계를 해야한다는 것입니다.

  • 넷째로 ISP 입니다. SRP 같은 경우는 단일 기능을 하는 여러 class로 설계 하는 것을 의미한다면 ISP같은 경우는 여러 기능을 하는 class를 인터페이스로 분할해서 각각 하나의 기능만 하도록 하는것을 의미합니다.

  • 마지막으로 DIP 입니다. DIP 같은 경우는 변하기 쉬운 구체적인 것에 의존하지 말고 추상화된 것에 의존하라는 의미입니다. OCP와도 의미적으로 상통합니다.

profile
두비두비둡

0개의 댓글