객체, 설계

로롱이·2022년 7월 19일
0

오브젝트

목록 보기
1/5

의존성

어떤 객체가 변경될 때 그 객체에게 의존하는 다른 객체도 함께 변경될 수 있다는 사실이 내포돼 있다.

캡슐화

캡슐화의 목적은 변경하기 쉬운 객체를 만드는 것이다. 캡슐화를 통해 객체 내부로의 접근을 제한하면 객체와 객체 사이의 결합도를 낮출 수 있기 때문에 설계를 좀 더 쉽게 변경할 수 있게 된다.

캡슐화와 응집도

객체 내부의 상태를 캡슐화하고 객체 간에 오직 메시지를 통해서만 상호작용하도록 만드는 것이다.
연관성 없는 작업은 다른 객체에게 위임하는 객체를 가리켜 응집도(cohesion)가 높다고 말한다.

절차적 프로그래밍

변경하기 쉬운 설계는 한 번에 하나의 클래스만 변경할 수 있는 설계다.
절차적 프로그래밍은 프로세스가 필요한 모든 데이터에 의존해야 한다는 근본적인 문제점 때문에 변경에 취약할 수밖에 없다.

객체지향 프로그래밍

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

  • 객체 스스로가 자율적인 존재가 되도록 설계하자.
  • 객체 스스로 처리하도록 하자.
  • 객체는 자신을 스스로 책임진다.

객체 설계 시

객체가 어떤 데이터를 가지느냐보다는 객체에 어떤 책임을 할당할 것이냐에 초점을 맞춰야 한다.

  • TicketSeller (책임) - 티켓을 판매하는 것
  • Audience (책임) - 티켓을 구매하는 것
  • Theater (책임) - 관람객을 입장시키는 것
  1. 불필요한 의존성을 제거함으로써 객체 사이의 결합도를 낮추자.
  2. 결합도를 낮추기 위해서는 세부사항을 내부로 감춰 캡슐화하자.
  3. 캡슐화를 하기 위해서는 객체의 자율성을 높이고 응집도 높은 객체들의 공동체를 창조하자.

의인화

능동적이고 자율적인 존재로 소프트웨어 객체를 설계하는 원칙을 가리켜 의인화라고 부른다.

설계란?

코드를 배치하는 것이다.

이건 내 개인적인 생각인데 설계를 하면 아주 먼 미래의 변화를 대응하는 것이 아니라 예측 가능한 범위 내에서 변화를 대응하기 위해 필요한 것이다.

결론

  • 훌륭한 객체지향 설계란 협력하는 객체 사이의 의존성을 적절하게 관리하는 설계다.
  • 객체 간의 의존성은 애플리케이션을 수정하기 어렵게 만드는 주범이다.
profile
모두 화이팅!

0개의 댓글

관련 채용 정보