GRASP(General Responsibility Assignment Software Pattern) 객체지향설계의 9가지 principle. 앞서 identify requirement, domain 모델 등으로 파악한 responsibility를 object들에게 어떻게 할당할 것인지 에 대한 가이드라인. Responsibility 어떤 클래스의 계약이나 의무. - Knowing responsibility : encapsulated data가 어떤 오브젝트/클래스와 연관되어 있는지, 서로 알고 있는 객체/클래스들, 내가 가지고 있는 정보/ 할 수 있는 연산 - Doing responsibility : 어떤 것을 수행(init, control, coordinate activity) 일반적으로 responsibility는 method와 같지 않다. 그러나 메서드들은 해당 클래스의 responsibility를 만족시킬 수 있도록 구현되어야 한다. (여러 메서드의 조합으로 하나의 책임 구현) 설계의 목표 : 시스템을 여러 개의 모듈로 분배하고, 적절한 모듈에 알맞은 책임을 부여하는 것. Modularity가 좋을 수록 프로그래머가 감내해야 하는 복잡도가 낮아진다. 관심사를 분리하고 information을 hiding 하는 것이 모듈화를 잘 진행하는 방법이다. 이를 측정하는 방법은 Coupling과 Cohesion이다. - Coupling(결합도) : 모듈 간의 상호의존성. 어떤 클래스가 다른 여러 클래스들에 의존할 경우 이 값이 커진다. 결합도가 클 경우, 어떤 클래스의 변화가 다른 클래스에 전파되고 영향을 미치기 때문에 좋지 않다. 또한 재사용하기 어려우며 전체 시스템을 이해하기 어려워진다. (하나를 알기 위해 다른 의존적인 클래스를 모두 알아야 하므로) 따라서 이 값은 낮을 수록 좋다. X -> Y : Type X depends on Y. X가 Y의 attribute/method reference를 가지고 있을 경우, X가 Y의 subclass일...
댓글
댓글 쓰기