Laguage

[java] 객체지향 프로그래밍 설계 원칙 - 결합도 / 응집도

kkkkkkkkkkkk 2021. 12. 9. 00:24

이번 글은 객체지향 프로그래밍 설계 원칙을 공부하면서 제가 생각을 한 내용을 정리 해보려고 합니다.

내용이 부족하고 틀린 부분이 있으면 피드백 부탁드립니다.

 

 

설계 원칙의 포인트

결합도는 낮추고 응집도는 높여라

결합도를 낮춰라!

 

이 글이 아주 많이 보였을 것인데 처음에는 무슨 말인지 이해가 안갔습니다.

결합도는 낮추고 응집도는 높여라?? 뭐야?? 이게??

참 어렵네요...

비유를 하면서 이해하는 방법 밖에 없을 것 같습니다.

 

조립 부품 A, B, C 가 있다고 가정해 봅시다. 우리는 완제품을 생산 하기 위해 A 라는 부품과 B 라는 부품이 필요합니다.

 

이로서 완제품은 A 부품과 B 부품의 의존성을 가지게 된다는 것인데 이것이 바로 결합도라고 생각합니다.

 

그러면 결합도를 낮춘다는 것이 무슨 뜻 일까?? 라는 생각이 듭니다.

 

다시 가정한 글로 가서 완제품을 생산 하기 위해 A 부품, B 부품 이 필요합니다.

하지만 실수로 완제품 생산 시 필요하지 않은 즉 의존성이 없는 C 부품을 조립하였습니다.

이렇게 완제품에 불필요한 C 부품이 추가 되어 성능이 떨어질 수도 있다는 문제점을 가지고 있습니다.

이 말을 정리해보자면 의존 관계가 명확하지 않거나 없는 부품들은 결합하지 마라! 라고 할 수 있겠네요.

 

 

응집도를 높여라!

응집도는 모여 있는 정도를 나타내는 말인데?? 

포스기를 생각하면서 공부해봅시다.

포스기의 기능은 메뉴추가(), 메뉴삭제(), 메뉴수정() 있을 것이다. 이 기능들은 해당 포스기에 관련이 있는 기능들만 모여있다.

이렇게 해당 객체에 관련있는 기능들만 모여있는 정도를 응집도라 부릅니다.

 

응집도를 높여라?? 이 말은 무슨 말일까요??

포스기서비스에 해당하는 책임은 포스기서비스에만!

포스기영수증출력서비스에 해당하는 책임은 포스기영수증출력서비스에만!

즉, 책임과 역할을 제대로 나눈다는 말이라고 할 수 있겠네요..

 

 

 

다음 글은 설계 원칙 SOLID 에 대해서 공부한 내용을 정리하겠습니다.

긴글 읽어 주셔서 감사드립니다.