ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1장 - 객체, 설계
    📕 book/오브젝트 2022. 9. 18. 18:07

    티켓 판매 애플리케이션


    로버틴 마틴은 소프트웨어 모듈이 가져야 하는 세 가지 기능에 관해 설명

    • 모듈 : 크기와 상관없이 클래스나, 패키지, 라이브러리 같은 프로그램을 구성하는 임의의 요소

    모든 소프트웨어 모듈에는 3가지 목적이 있다.

    1. 실행 중에 제대로 동작하는 것.
    2. 변경을 위해 존재하는 것. ( = 변경이 용이 )
    3. 코드를 읽는 사람과 의사소통하는 것 ( = 이해하기 쉬워야 한다. )

    예상을 빗나가는 코드

    • 이해 가능한 코드 : 동작이 우리의 예상에서 크게 벗어나지 않는 코드
    1. 상식과는 너무나도 다르게 동작
      • 코드를 읽는 사람과 제대로 의사소통하지 못한다.
    2. 코드를 이해하기 위해 여러 가지 세부적인 내용들을 한번에 기억하고 알고 있어야 한다.
      • 코드를 작성하는 사람, 읽고 이해해야 하는 사람 모두에게 부담

    변경에 취약한 코드

    객체 사이의 의존성

    의존성 - 변경에 대한 영향을 암시

    어떤 객체가 변경될 때 그 객체에게 의존하는 다른 객체도 함께 변경될 수 있다

    객체 사이의 의존성을 완전히 없애는 것이 정답 X
    객체지향 설계는 서로 의존하면서 협력하는 객체들의 공동체를 구축하는 것.
    
    [목표]
    애플리케이션의 기능을 구현하는 데 필요한 최소한의 의존성만 유지하고 불필요한 의존성을 제거
    

    객체사이의 의존성이 과한 경우 ⇒ 결합도가 높다

    • 두 객체 사이의 결합도가 높으면 높을 수록 함께 변경될 확률도 높아진다.
    • 변경이 어려워 진다.

    설계의 목표 : 객체 사이의 결합도를 낮춰 변경이 용이한 설계를 만든다.

    자율적인 객체

    캡슐화

    객체 내부의 세부적인 사항을 감추는 것.

    • 목적 : 변경하기 쉬운 객체를 만드는 것.
    • 캡슐화를 통해 객체 내부의 접근을 제한하면 객체와 객체사이의 결합도를 낮출 수 있다.

    자율적인 존재

    내부 구현을 외부에 노출하지 않고 자신의 문제를 스스로 책임지고 해결한다.

    ⇒ 변경 용이성의 측면에서도 개선되었다.

    캡슐화와 응집도

    객체 내부의 상태를 캡슐화하고 객체 간에 오직 메시지를 통해서만 상호작용하도록 만드는 것.

    • 민접하게 연관된 작업만 수행하고 연관성이 없는 작업은 다른 객체에게 위임하는 객체
      • 응집도가 높다!!!

    자율적인 객체 → 결합도 낮추고 응집도를 높일 수 있다.

    절차지향과 객체지향

    절차적 프로그래밍

    프로세스와 데이터를 별도의 모듈에 위치시키는 방식

    프로세스가 필요한 모든 데이터에 의존해야 하는 문제점 → 변경에 취약

    객체지향 프로그래밍

    데이터와 프로세스가 동일한 모듈 내부에 위치하도록 프로그래밍하는 방식

    캡슐화를 이용해 의존성을 적절히 관리함으로써 객체 사이의 결합도를 낮춘다.

    책임의 이동

    객체지향 : 절차적 프로그래밍의 차이를 만드는 것 - 책임의 이동

    책임 : 기능을 가리키는 객체지향 세계의 용어

     

    각 객체는 자신을 스스로 책임진다.

    객체지향 애플리케이션은 스스로 책임을 수행하는 자율적인 객체들의 공동체를 구성

    → 객체에 어떤 책임을 할당할 것이냐에 초점을 맞춰야 한다.

    의인화

    능동적이고 자율적인 존재로 소프트웨어 객체를 설계하는 원칙

     

    출처

     

    오브젝트 - YES24

    역할, 책임, 협력을 향해 객체지향적으로 프로그래밍하라!객체지향으로 향하는 첫걸음은 클래스가 아니라 객체를 바라보는 것에서부터 시작한다. 객체지향으로 향하는 두번째 걸음은 객체를

    www.yes24.com

     

    댓글

Designed by Tistory.