[CS][Java] SOLID - 객체지향의 5가지 원칙

손경이·2024년 4월 16일
0

CS Study

목록 보기
8/25

객체지향의 5가지 원칙 SOLID


객체지향적으로 설계 할 때 지켜야하는 5대 원칙

단일 책임 원칙 : 하나의 클래스는 하나의 책임만 갖는다는 원칙
개방 폐쇄 원칙 : 기능을 추가할 때는 기존의 코드를 변경하지 않고도 추가할 수 있어야 한다는 원칙
리스코프 치환 원칙 : 자식 클래스는 언제나 부모 클래스를 대체할 수 있도록 상속되어야 한다는 원칙
인터페이스 분리 원칙 : 인터페이스를 사용할 때 한번에 크게 사용하지 말고 작은 단위로 나눠서 사용하라는 원칙
의존성 역전 원칙 : 의존관계를 맺을 때 추상화된 것에 의존하라는 원칙


> Single Responsibility Principle(단일 책임 원칙)

  • 하나의 클래스는 하나의 책임만 갖는다는 원칙
    • 하나의 클래스는 하나의 기능만 가지는 게 좋음
  • 하나의 클래스에 여러가지 기능을 구현하는 경우 - 단일 책임 원칙에 위배

| 장점

  • 단일 기능만 적혀 있어서 코드의 길이가 짧고 명확해짐
  • 확장성이 좋아짐
  • 재사용성이 좋아짐

> Open-Closed Principle(개방 폐쇄 원칙)

  • 클래스가 확장에는 개방되어 있고 수정에는 닫혀있어야 한다는 원칙
  • 원본 코드를 수정하지 않고 새로운 동작을 추가할 수 있어야 함

> Liskov's Substitution Principle(리스코프 치환 원칙)

  • 상속을 할 때 지켜야 하는 원칙
  • 하위 클래스는 어떠한 경우에도 부모 클래스를 대체할 수 있어야 함
    • 자동차를 상속받아서 다양한 자동차를 만드는 건 되지만 비행기를 만들면 안됨
  • 상위 타입의 객체를 하위 타입의 객체로 치환을 해도 정상 작동 해야함
    • 상속을 할 때는 부모 것을 대신해서 사용을 해도 정상작동하게끔 상속을 받아야 함
      그게 안된다면 상속을 받지 않아야 함

| 사용원칙

  • 추상클래스를 간단하게 그리고 조금 더 분류를 해서 만들기
  • 상속보다는 인터페이스를 생성해서 여러 인터페이스를 조합하는 것이 좋음

> Interface Segregation Principle(인터페이스 분리 원칙)

  • 인터페이스를 사용할 때 한번에 크게 사용하지 말고 작은 단위로 나눠서 사용하라는 원칙

| 사용원칙

  • 작은 단위로 나눈 인퍼테이스들을 조합하는 형태로 코드를 발전시켜 나가기

| 장점

  • 인터페이스를 분리해서 사용하면 코드 간의 결합도가 낮아지고 수정이 용이해짐

> Dependency Inversion Principle(의존성 역전 원칙)

  • 의존관계를 맺을 때 다른 걸 가져다 쓸 때는 일반적이고 추상적인 것에 의존해야 됨
  • 의존관계를 맺을 때는 하위 개념이 아니고 상위 개념인 추상화된 것에 의존하라는 것
  • 예시
    • 채소 (추상회된 상위 개념)
      |---|---|
      당근 사과 (하위 개념)

참고

0개의 댓글