좋은 소프트웨어 설계는 결합도가 낮고, 응집도가 높은 설계 방법을 의미한다. 응집도는 높이고 결합도는 낮추자는 5개의 원칙을 객체 지향 설계 원칙에 적용한 것이 객체지향설계의 5원칙이다. 결합도 모듈(클래스)간의 상호 의존 정도를 나타내는 지표이다. 결합도가 낮다는 것은 모듈 간의 상호의존성이 줄어들기 때문에 객체의 재사용과 유지보수가 유리하다는 것의 의미한다. 응집도 하나의 모듈 내부에 존재하는 구성 요소들의 기능적인 관련성을 나타낸다. 응집도가 높다는 것은 하나의 모듈에 책임을 집중시켜 독립성을 높이기 때문에 마찬가지로 객체의 재사용 및 유지보수가 용이해진다. SRP(Single Responsibility Principle) - 단일 책임 원칙 모든 클래스는 하나의 책임만 가지며, 클래스는 그 책임을..