[내일배움캠프/C++] 객체 지향적 설계

김세희·2025년 6월 4일

✍️Today I Learned

  1. 객체 지향적 설계
    • 응집도
    • 결합도
    • SOLID

응집도

클래스 내 모듈들이 얼마나 관련되어 있는지를 나타낸다.
응집도가 높을수록 좋은 설계
목적이 다른 기능이 한 클래스에 섞여있거나 하나의 클래스에 모든 기능이 들어있으면 유지보수가 어렵다.
에러가 발생했을 때 찾기도 쉽고 기능 변경할 때 영향을 최소화한다.

결합도

모듈 또는 클래스간의 의존성을 나타낸다.
결합도가 낮을수록 좋은 설계

SOLID 원칙

객체지향 설계에서 유지 보수성과 확장성을 높이기 위한 5가지 원칙

1. 단일 책임 원칙(SRP)

각 클래스는 하나의 책임만 갖는다.
하나의 클래스에 모든 메서드를 구현하지 않고 각 기능별로 클래스를 나눠야 한다.

2. 개방 폐쇄 원칙(OCP)

확장에는 열려 있어야 하고 수정에는 닫혀있어야 한다.
기존 코드를 최소한으로 변경하면서 새로운 기능을 추가할 수 있도록 설계해야 한다.
공통되는 특징을 부모 클래스에서 인터페이스만 구현하고 세세한 함수의 정의는 자식 클래스에서 구현한다.

3. 리스 코프 치환 원칙(LSP)

자식 클래스는 부모 클래스에서 기대되는 행동을 보장해야한다.
다형성을 활용하여 프로그래밍할때 부모 클래스를 사용하는 코드가 자식 클래스로 대체되더라도 정상적으로 동작해야 한다.

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

클라이언트는 자신이 사용하지 않는 메서드에 의존하지 않아야 한다.
하나의 거대한 인터페이스가 아니라 역할별로 세분화된 인터페이스를 만들어 필요한 기능만 구현하도록 설계해야 한다.

5. 의존 역전 원칙(DIP)

고수준 모듈은 저수준 모듈(구체적인 구현)에 의존하는 것이 아니라 두 모듈 모두 추상화에 의존해야한다.
인터페이스나 추상 클래스 같은 추상화 계층을 두어 결합도를 낮춰야 한다.

0개의 댓글