객체지향 설계 원칙

윤이령·2026년 4월 22일

SOLID 원칙

  • Single Responsibility Principle(SRP) : 단칠 책임 원칙
  • Open-Closed Principle(OCP) : 개방, 폐쇄 원칙
  • Liskov Substitution Principle(LSP) : 리스코프 치환 원칙
  • Interface Segregation Principle(ISP) : 인터페이스 분리 원칙
  • Dependency Inversion Principle(DIP) : 의존성 역전 원칙

단일 책임 원칙(SRP)

  • 클래스는 한가지 기능만 수행해야 하고, 한가지 이유로만 변경해야 한다
  • 컴포지션, 어그리게이션 -> 각 클래스를 객체화로 사용

개방, 폐쇄 원칙(OCP)

  • 확장에 열려있고, 수정에 닫혀있어야 한다
  • 새 기능 추가시 기존 코드를 수정하지 않고, 새 클래스를 추가하는 방식으로 구현
  • 추상클래스
    -> monster 클래스에 attack_special 정의
    -> monster_a에서 monster 상속 받아서 새로 정의 (인탱글, 가상 등등)

리스코프 치환 원칙(LSP)

  • 자식 클래스는 부모 클래스를 완전히 대체할 수 있어야 한다
  • is-a 관계
  • 부모로 업캐스팅 후에도 프로그램이 올바르게 동작해야 함

인터페이스 분리 원칙(ISP)

  • 인터페이스는 작고 섬세해야 하고, 클래스는 필요한 인터페이스만 구현해야 함
  • SRP를 인터페이스에 적용한것
  • 사요하지 않는 인터페이스를 강제로 구현하게 해서는 안됨

의존성 역전 원칙(DIP)

  • 상위 수준 모듈은 하위 수준의 모듈에 의존해서는 안 되며 상위, 하위 수준 모두 추상레이어(인터페이스)에 의존해야 함
  • 개방, 폐쇠 원칙(OCP)을 적용하기 위해 사용
  • C++에서는 추상 클래스와 인터페이스로 구현
  • 캐릭터 -> 플레이어(클래스) -> 탈것 / 무기 (인터페이스 / 추상클래스)

0개의 댓글