IT자료실/기술서적
오브젝트 - 기술서적 스터디 1단원-객체, 설계
Ramda
2023. 6. 25. 15:52
소프트웨어 모듈이 가져야 하는 세 가지 기능
- 실행 중 제대로 동작
- 변경을 위해 존재하는 것
- 코드를 읽는 사람과 의사소통 하는 것
변경에 취약한 코드
- 변경에 취약한 코드는 의존성과 관련이 높다
- 의존성은 변경에 대한 영향을 암시
- 객체지향 설계는 서로 의존하면서 협력하는 객체들의 공동체를 구축하는 것 (기능을 구현하는 최소한의 의존성만 유지하고 불필요한 의존성은 제거)
- 객체 사이의 의존성이 과한 것을 결합도가 높다고 한다
- 설계의 목표는 객체 사이의 결합도를 낮춰 변경이 용이한 설계를 만드는 것
자율성을 높이자
- 개념적이나 물리적으로 객체 내부의 세부적인 사항을 감추는 것을 "캡슐화" 라고 한다
- 캡술화의 목적은 변경하기 쉬운 객체를 만드는 것
- 객체를 인터페이스와 구현으로 나누고 인터페이스만 공개하는 방법이 가장 기본적인 설계원칙
캡슐화와 응집도
- 밀접하게 연관된 작업만 수행하고 연관성 없는 작업은 다른 객체에게 위임하는 객체를 응집도가 높다고 한다
- 객체는 자신의 데이터를 스스로 처리하는 자율적인 존재여야 함
- 외부 간섭을 최대한 배제하고 메시지를 통해서만 협력하는 자율적인 객체들의 공동체를 만드는 것이 객체지향 설계의 지름길
절차지향과 객체지향
- 절차적 프로그래밍 : 프로세스와 데이터를 별도의 모듈에 위치시키는 방식
- 객체지향 프로그래밍 : 데이터와 프로세스가 동일한 모듈 내부에 위치한 방식
- 휼륭한 객체지향 설계의 핵심은 캡술화를 이용해 의존성을 적절히 관리하면서 객체들의 결합도를 낮추는 것
객체지향 설계
- 설계는 코드를 배치하는 것
- 좋은 설계란 오늘 요구 기능을 온전히 수행하고, 내일의 변경을 수용할 수 있는 설계
- 변경에 유연하게 대처할 수 있는 코드가 우리가 원하는 방향
- 훌륭한 객체지향 설계한 협력하는 객체의 사이의 의존성을 적절하게 관리하면서 설계해야함
1단원 정리
객체지향 설계의 필요성에 대한 점들을 다시 상기 시킨 느낌이다. 이 책을 공부하기 전의 알고 있던 개념들을 다시 한번 정리하는 마음으로 읽었던 단원이다.
결국 설계의 방법은 객체지향을 하되 객체들의 의존성과 캡술화를 이용해 얼마나 짜임새 있도록 사용하느냐가 아닐까 싶다. 각각의 상황에 맞게 방법을 변경해가면서 사용하라는 느낌을 받았다.
본 게시글은 오브젝트의 서적을 읽고 개인적으로 정리한 글입니다.