C++

[C++]객체지향적 설계

programmer-faust 2025. 6. 11. 20:48
  • 순서
    1. 응집도
    2. 결합도
    3. SOLID원칙
    4. 단일 책임 원칙
    5. 개방 폐쇠 원칙
    6. 리스코프 치환 원칙
    7. 인터페이스 분리 원칙
    8. 의존 역전 원칙
  • 객체지향적 설계가 중요한 이유
    1. 대부분 라이브러리 및 오픈소스는 객체지향적으로 설계됨
    2. 좋은 설계로 구현된 코드는 개발 시간을 단축할 수 있음
    3. 좋은 설계로 구현된 코드는 기능 변경에 유연하게 대응할 수 있음
  • 응집도
    1. 응집도란? : 클래스 또는 모듈 내부의 구성 요소들이 얼마나 밀접하게 관련되어 있는지를 나타내기 때문에 일반적으로 응집도가 높을수록 좋은 설계라고 평가됨.
    2. 응집도가 낮은 경우
      • 서로 관련 없는 기능들이 하나의 클래스에 포함된 경우를 의미함.
      • ex)팀원들의 목적이 하나인 팀과 팀원들의 목적이 각기 다른 팀의 차이
    3. 응집도가 높은 경우
      • 서로 관련 있는 모듈들만 하나의 class에 있는 경우
      • ex)1.피자배달 경로 확인 => 2.주문한 고객 대응 => 3.배달 예상 시간측정
  • 결합도
    1. 결합도란? : 모듈 또는 클래스 간의 의존성을 나타내기 때문에 일반적으로 결합도가 낮을수록 좋은 코드이다. 유지보수의 측면에서 다른 모듈의 영향을 적게 받게되어 유지보수가 용이해진다.
  • SOLID 원칙
    1. SOLID 원칙이란? : 객체지향 설계에서 유지 보수성과 확장성을 높이기 위한 5가지 원칙을 뜻함.
    2. SOLID 원칙의 주요 목적
      • 유지보수성 및 확장성 향상
      • 변경에 유연한 설계 제공
    3. SOLID 원칙 5가지
      • (S)단일책임원칙
      • (O)개방 폐쇠 원칙
      • (L)리스코프 치환 원칙
      • (I)인터페이스 분리 원칙
      • (D)의존 역전 원칙
  • 단일책임원칙(SRP)
    • 단일책임원칙이란? : 각 클래스는 하나의 책임만 가져야한다.
    • 즉, 클래스는 하나의 변경 이유만을 가져야 하며, 특정 기능이나 역할을 수행하는데 집중해야함
  • 개방 폐쇠 원칙(OCP)
    • 개방 폐쇠 원칙이란? : 수정에는 닫혀있고 확장에는 열려있어야한다.
    • 즉, 기존 코드를 최소한으로 변경하면서 새로운 기능을 추가할 수 있도록 설계해야함.
  • 리스코프 치환 원칙(LSP)
    • 리스코프 치환 원칙이란? : 어떤 상황이든 자식 클래스는 부모 클래스를 대체할 수 있어야한다.
    • 부모 클래스를 사용하는 코드가 자식 클래스로 대체 되더라도 정삭정으로 작동해야하고 이를 위해 자식 클래스는 부모 클래스의 동작을 일관되게 유지해야함.
  • 인터페이스 분리 원칙(ISP)
    • 인터페이스 분리 원칙이란? : 클라이언트는 자신이 사용하지 않는 메서드에 의존하지 않아야한다.
    • 하나의 인터페이스 보다는 역할별로 세분화된 인터페이스를 만들어 필요한 기능만 구현하도록 설계해야함.
  • 의존 역전 원칙(DIP)
    • 의존 역전 원칙이란? : 고수준 모듈은 저 수준 모듈에 직접 의존하는 것이 아니라, 두 모듈 모두 추상화에 의존해야함.
    • 구체적인 구현(저 수준 모듈)에 의존하는 것이 아닌, 인터페이스나 추상 클래스 같은 추상화 계층을 두어 결합도를 낮추는 것.

'C++' 카테고리의 다른 글

[C++] TRPG(TextRPG) Character제작  (0) 2025.06.19
[C++]FMath  (0) 2025.06.18
[C++]STL(Standard Template Library)  (1) 2025.06.11
[C++]템플릿  (0) 2025.06.09
[C++] 자원 관리하기  (0) 2025.06.09