본문 바로가기

책/Object

객체, 설계

변경에 취약한 코드

결합도(Coupling) : 객체 사이의 의존성

 - 결합도가 높을 수록 함께 변경될 확률이 높아진다.

 - 결합도를 낮춰 변경이 용이한 설계를 만들어야 한다.


자율성을 높이자

캡슐화(encapsulation) : 개념적이나 물리적으로 객체 내부의 세부적인 사항을 감추는 것

객체를 인터페이스와 구현으로 나누고 인터페이스만을 공개하자

 - 객체 사이의 결합도를 낮추고 변경하기 쉬운 코드를 작성하기 위해 따라야 하는 가장 기본적인 설계 원칙


캡슐화와 응집도

응집도(cohesion) : 밀접하게 연관된 작업만을 수행하고 연관성 없는 작업은 다른 객체에게 위임하는 것

 - 자신의 데이터를 스스로 처리하는 자율적인 객체를 만들면 결합도를 낮추고 응집도를 높일 수 있다.


절차지향과 객체지향

절차지향 : 프로세스와 데이터를 별도의 모듈에 위치시키는 방식

객체지향 : 프로세스와 데이터가 동일한 모듈 내부에 위치하도록 하는 방식


책임의 이동

설계를 어렵게 만드는 것은 의존성

해결 방법은 불필요한 의존성을 제거함으로써 객체 사이의 결합도를 낮추는 것

결합도를 낮추려면 다른 객체가 몰라도 되는 세부사항을 내부로 감춰 캡슐화

결과적으로 불필요한 세부사항을 객체 내부로 캡슐화 하는 것은 객체의 자율성을 높이고 응집도 높은 객체들의 공동체를 창조할 수 있게 한다.


' > Object' 카테고리의 다른 글

메시지와 인터페이스  (0) 2020.06.29
책임 할당하기  (0) 2020.06.23
설계 품질과 트레이드오프  (0) 2020.06.22
역할, 책임, 협력  (0) 2020.06.22
객체지향 프로그래밍  (0) 2020.06.02