[오브젝트 #1]-객체, 설계

호준·2023년 6월 21일
0

오브젝트

목록 보기
1/1
post-thumbnail

오브젝트-조영호 책을 보면서 공부하면서 정리한 글입니다.


소프트웨어 모듈의 세 가지 목적

  1. 실행 중에 제대로 동작하는 것
  2. 변경을 위해 존재하는 것
  3. 코드를 읽는 사람과 의사소통하는 것

설계의 목표

  • 객체 사이의 결합도를 낮춰 변경이 용이한 설계를 만드는 것이어야 한다.
    • 목표를 이루기 위해서는?
      1. 캡슐화를 이용해 의존성을 적절히 관리함으로써 객체 사이의 결합도를 낮추는 것
      2. 자율성을 높인다 -> 자신의 문제를 스스로 해결하도록 코드를 변경
      3. 기본적인 원칙을 따라야한다.
        • 인터페이스(Interface)구현(Implementation)으로 나누고 인터페이스는 공개하고 구현은 공개하지 않는 것이 객체 사이의 결합도를 낮추고 변경하기 쉬운 코드를 작성하기 위해 따라야하는 기본적인 설계원칙이다.

응집도 높게? 낮게?

  • 응집도를 높게 해야한다.
    • 밀접하게 연관된 작업만을 수행하고 연관성 없는 작업은 다른 객체에게 위임하는 객체를 가리켜 응집도가 높다고 말한다.
    • 결합도를 낮추면 응집도가 높아짐
    • 자신의 데이터를 책임져야 응집도가 높아짐

절차지향과 객체지향

  • 절차적 프로그래밍 : 프로세스와 데이터를 별도의 모듈에 위치시키는 방식
  • 객체지향 프로그래밍 : 프로세스와 데이터가 동일한 모듈 내부에 위치하도록 프로그래밍하는 방식 (자신의 문제를 스스로 처리한다(자율성))
    • 훌륭한 객체지향 설계의 핵심 : 캡슐화를 이용해 의존성을 적절히 관리함으로써 객체 사이의 결합도를 낮추는 것

설계를 어렵게 하는 것

  • 설계를 어렵게 하는것은 의존성이다.
  • 해결방법
    1. 불필요한 의존성을 제거함으로써 객체 상의 결합도를 낮추는 것
    2. 세부사항을 객체 내부로 감춰 캡슐화를 하는 것

결론

  • 불필요한 세부사항을 객체 내부로 캡슐화하고, 객체의 자율성을 높이고 응집도 높은 객체들의 공통체를 창조하여 낮은 결합도높은 응집도를 가지고 협력하도록 최소한의 의존성만을 남기는 것을 훌륭한 객체지향 설계라 할 수 있다.

*캡슐화

  • 개념적이나 물리적으로 객체 내부의 세부적인 사항을 감추는 것
  • 목적은 변경하기 쉬운 객체를 만드는 것

*인터페이스

  • 클라이언트 프로그램에 어떤 매ㅔ서드를 제공하는지 알려주는 명세 또는 약속이다.
  • 추상 메서드의 집합(추상메서드만 가지고 있음. 다른 그 외에는 아무것도 가지고 있지 않음)
  • 상속, 구현
  • 참고

*구현

  • 계획, 아이디어, 모델, 설꼐, 사양, 표준, 알고리즘 또는 정책의 적용 또는 실행을 실현하는 것
  • 참고
profile
도전하자

0개의 댓글