응집도는 모듈 내부에 존재하는 구성 요소들 사이의 밀접한 정도를 나타낸다. 즉 하나의 모듈 안에서 구성 요소들 간에 똘똘 뭉쳐 있는 정도. 응집도가 높을수록 구성 요소들이 꼭 필요한 것들로만 모여 있고, 낮을수록 서로 관련성이 적은 요소들이 모여 있다.
응집도 종류
이러한 응집도는 아래와 같이 다양한 기준으로 모듈을 구성할 수 있고 그에 따라 응집도와 품질이 달라진다.
기능적 응집도 : 모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우.
순차적 응집도 : 모듈 내의 하나의 활동으로부터 나온 출력 데이터를 그 다음 활동의 입력 데이터로 사용할 경우.
교환적 응집도 : 동일한 입력과 출력을 사용하여 서로 다른 긴으을 수행하는 구성 요소들이 모여 있을 경우.
절차적 응집도 : 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우.
시간적 응집도 : 특정 시간에 처리되는 몇 개의 기능을 모아 하나의 모듈로 작성할 경우.
논리적 응집도 : 유사한 성격을 가지거나 특정 형태로 분류되는 처리요소들로 하나의 모듈이 형성되는 경우.
우연적 응집도 : 모듈 내부의 각 구성요소들이 서로 관련 없는 다른 기능을 수행하는 경우.
결합도(Coupling)
한 모듈과 다른 모듈 간의 상호 의존도 또는 연관 관계. 쉽게 말해서 얼마나 클래스간에 연결이 되어 있는지 나타내는 것이다. A클래스와 B클래스가 연관이 있다고 하자. A클래스가 변경이 된다고 한다면 B클래스도 당연히 변경이 되어야 한다. 만약 큰 프로젝트를 진행했다고 한다면 연결된 것이 많으면 많을수록 그만큼 변경해야 하는 것도 많아진다.
결합도가 높은 시스템은 당연히 유지보수가 어렵다.
결합도를 낮추기 위한 방법이 있다.
1. 다형성
다형성은 객체지향 언어의 핵심 개념이며 여러 행태를 가질 수 있는 능력을 뜻한다. 상속이나 메소드 재정의 인터페이스를 통해 이루어져 있다 하지만 이 방법도 어느정도의 코드 수정이 필요하지만 이전보다는 결합도도 낮아지고 유지보수도 쉬워졌다고 할 수 있다.
2. 디자인 패턴
Factory 패턴을 사용하는 것이다. 클라이언트에서 사용할 객체 생성을 캡슐화해서 즉 객체 생성을 위한 클래스를 하나 더 만들어 그 곳에서 클라이언트 요청에 따라 객체 생성을 다르게 하는 것.
'CS > 공통' 카테고리의 다른 글
비쥬얼 스튜디오 프로젝트명 변경하는 방법 (0) | 2022.06.30 |
---|---|
DirectX 11 LNK2019 에러 해결 방법 (0) | 2022.06.30 |
OOP (0) | 2022.06.22 |
dxerr.lib(dxerrw.obj) : error LNK2019 해결방법 (0) | 2022.06.20 |
객체지향 - SOLID 개발 5대 원리 (0) | 2022.06.07 |