오브젝트 1장

오브젝트 1장

제 1장

패러다임의 시대

  • 토마스 쿤 과학혁명
    • 과학혁명은 과거의 패러다임이 새로운 패러다임에 의해 대체됨을 의미
  • 로버트 플로이드의 프로그래밍 패러다임
    • 프로그래밍 또한 패러다임이 존재함을 언급
  • 프로그래밍 패러다임
    • 절차지향 (C)
    • 객체지향 (Java)
    • 함수형 (LISP)
    • 논리형 (PROLOG)
  • No Silver Bullet by Frederick Philips Brooks
    • 완벽한 패러다임은 없다.
    • 패러다임은 상황에 맞게 적용

객체지향 설계

  • 소프트웨어 모듈의 세가지 목적
    • 실행 중에 제대로 동작
    • 변경을 위해 존재, 간단하게 변경 가능해야함
    • 코드를 읽는 사람이 읽기 쉬워야함
  • 객체는 자율적이고 책임을 가진 존재
    • 다른 객체에 의해 수동적이기 보다는 스스로 행동하게 객체를 만들어야한다.
    • 캡슐화를 통해 외부로부터 접근을 제한
    • 결국 객체의 응집도를 높여야 한다.
  • 객체지향 프로그래밍이란 객체간의 협력
    • 객체 사이에는 필연적으로 의존성이 발생
    • 의존성이 과하다면 결합도가 높음
    • 좋은 설계란 결합도를 낮춰 변경이 용이하게 해야함
  • 설계를 어렵게 만드는 것은 의존성
  • 의존성을 제거함으로써 객체간의 결합도를 낮춤
  • 결합도를 낮추기 위해 캡슐화를 함
  • 캡슐화를 통해 객체의 자율성을 높이고 응집도 높은 객체들을 만듦
  • 객체지향 세계에서 객체는 생물
    • 태어나고, 삶을 영위하고, 죽는다.
    • 능동적이며 자율적
    • 다른 객체들과 협력
  • 설계란 코드를 배치하는 것
  • 모든 사람을 만족시킬 수 있는 설계는 없음
    • 설계는 Trade-Off의 산물
    • 훌륭한 설계는 적절한 Trade-Off의 결과물
    • 설계는 균형의 예술
  • 좋은 설계란?
    • 오늘 요구하는 기능을 온전히 수행하며 내일의 변경을 매끄럽게 수용하는 설계
    • 변경을 수용하는 설계는 버그 발생을 억제
  • 변경 가능한 코드란 이해하기 쉬운 코드
  • 훌륭한 객체지향 설계란 객체 사이의 의존성을 적절히 관리하는 설계
  • 이 책은 유연한 객체지향 설계를 하는 법을 배우는 책

Reference

오브젝트 - 조영호



© 2022. by minkuk

Powered by minkuk