본문 바로가기
CS (Computer Science)/독후감 : 객체지향의 사실과 오해

5일차(6장) - 기능을 담을 구조라는 재료

by 우인입니다 2023. 11. 20.

 


 

6장에서는 지도를 예시로 들며 시작한다.

구조를 바탕으로 시스템을 분할하는 객체지향의 또 다른 측면에 관해 설명하고 있다.

 

 

구조

성공적인 소프트웨어들이 지닌 공통적인 특징은 훌륭한 기능을 제공하는 동시에 사용자가 원하는 새로운 기능을 빠르고 안정적으로 추가할 수 있다는 것이다.

 

 기능만 중요한 것이 아닌 안정적인 환경에 대한 중요성에 대해 다시 한번 생각하게 됐다. 게임개발도 최적화가 이루어지지 않으면 게임콘텐츠가 무색해질만큼 평가가 안좋아지는 것이 생각나는 구절.

 

 

도메인 모델이란 사용자가 프로그램을 사용하는 대상 영역에 관한 지식을 선택적으로 단순화하고 의식적으로 구조화한 형태다.

 

도메인 모델이라는 개념이 나온다. 현실 객체와 소프트웨어 객체와의 차이를 분명히 언급하면서도 이는 은유를 통해 근본적으로 쉽게 변하지않는 안정적이다는 특징을 보여준다.

낯선 설명이라 쉽게 이해가 되진 않았지만 한마디로 우리가 이미 익숙한대로 설계하면 좋다라는 것 같다.

왜냐면 익숙하다라는 것은 오래 변하지않고 본질에 가까우므로 변경을 마주할 일도 적다.

 

 

기능

사용자의 목표를 달성하기 위해 사용자와 시스템 간에 이뤄지는 상호작용의 흐름을 텍스트로 정리한 것을 유스케이스라고 한다.

 

유스케이스라는 개념을 설명해줬는데, 처음 듣는 생소한 개념이었다.

 

 

재료합치기 : 기능과 구조의 통합

불안정한 기능을 안정적인 구조 안에 담음으로써 변경에 대한 파급효과를 최소화하는 것은 훌륭한 객체지향 설계자가 갖춰야 할 기본적인 설계 능력이다.

 

앞서 설명한 기능(유스케이스)와 구조(도메인 모델)을 어우러지게 설명하려한다. 아직은 실제로 이를 활용한 객체지향 프로그래밍이 어떻게 해야할지 감이 오질 않는다.

 

견고한 객체지향 애플리케이션을 개발하기 위해서는 사용자의 관점에서 시스템의 기능을 명시하고, 사용자와 설계자가 공유하는 안정적인 구조를 기반으로 기능을 책임으로 변환하는 체계적인 절차를 다라야 한다는 것이다.

 

이것도 뭔 말인지 알것 같으면서도 모르겠다. 나중에 다시 읽게 되면 시각이 달라지길 바라며 구절을 기록해 본다.

 

안정적인 도메인 모델을 기반으로 시스템의 기능을 구현하라. 도메인 모델과 코드를 밀접하게 연관시키기 위해 노력하가. 그것이 유지보수하기 쉽고 유연한 객체지향 시스템을 만드는 첫걸음이 될 것이다.

 

도메인 모델의 중요성을 다시 한번 강조한다. 그리고 중요한 이유는 유지보수하기 쉬운 유연한 객체지향 시스템을 향한다.