1. 조물주가 이 땅에 특별한 목적을 가지고 생명체를 창조해내었다면,
프로그래머 역시 어떠한 목적이 있기 때문에 한 객체를 시스템내에서 창조한다.
창조된 생명체는 자신의 역할을 다할 책임이 있다.
<모델링>
Object oriented programming, 이른바 OOP라 불리우는 개념의 기본이다.
흔히 모델링을 접하게 되면 현실세계를 컴퓨터속으로 투영시키는 작업이 모델링이라는 말을 듣게 된다.
RDB모델링에서는 Entity를 도출하고 각 Entity간의 Relation을 정의하는 것이 시작이 된다.
어떠한 정보를 저장하는 가에 중점을 두고 작업을 진행하는 것이 DB모델링이라면
하나의 Object가 어떻게 동작하는가에 중점을 두고 작업을 진행하는 것이 Application모델링.
그중에서도 OOP에 해당한다.
<Responsibility>
Object는 속성과 행위를 갖게 되며 각각 변수와 메소드라는 형태로 표현이 된다. 개발자는 이 object를 통해서 본인이 의도한 바를 구현하고자 한다. 본인이 하고 싶은 일을 대신 시킨다고 봐도 무방하다.
하나의 object로 모든 일을 처리할 것인지, 여러개의 object로 나누어서 처리할 것인지, 나눈다면 몇개로 어떻게 나눌것인지는 만드는 사람의 몫이다. 해당 시스템이 궁극적으로 이루고자 하는 목적과 범위가 무엇인지를 명확히 파악하고 그에 맞게 적절하게 구성하는 것이다.
하나의 object로 모든 일을 처리하는 방식을 흔히 God object라고 부르며 이는 대표적인 anti-pattern의 하나이다. 모든 변경사항에 영향을 받기 때문에 항상 변경될 수밖에 없다.
이는 유지보수성을 심각히 저하시켜서 결국 재개발을 할 수 밖에 없다.
하나의 변경사항에 대한 수정의 범위는 한곳 이 되는 것이 바람직하며(coupling), 유사한 기능에 대해서도 한곳에 모여있는 것이 좋다. (cohesion)
'Application Design' 카테고리의 다른 글
Azure IoT Hub를 이용한 Firmware Update기능 + Java enum을 활용한 디자인패턴 적용 (0) | 2019.10.08 |
---|---|
2. 어떠한 객체도 혼자서 모든 일을 할 수 없다.(재사용성) (0) | 2017.03.24 |
IT시스템과 현실세계의 관계 (0) | 2015.06.29 |
Fine-Grained vs Coarse-Grained (0) | 2014.12.08 |
Enterprise Application Design (0) | 2014.10.23 |