[개발자_객체지향_디자인패턴] 객체 지향 설계 과정

박상준·2024년 8월 11일
0
post-thumbnail

개요

  • 객체 지향 설계 자체는 반복적이고 점진적인 과정임.
    1. 식별
    2. 객체 할당
    3. 캡슐화
    4. 객체 간의 통신 설계를 포함한다

주요 단계

  1. 기능 식별 및 객체의 할당
    • 제공해야 할 기능을 탐색하고 세분화한다.
    • 식별된 기능을 적절한 객체에 할당한다
    • 때로는 데이터를 먼저 추가하고, 그 데이터를 이용하는 기능을 넣을 수도 있다.
  2. 캡슐화
    • 할당된 기능을 최대한 캡슐화하여 구현한다
  3. 객체 간 통신 설계
    • 객체 간에 어떻게 메시지를 주고받을지 결정
  4. 반복
    • 1단계부터 3단계 까지 과정을 개발하는 동안 지속적으로 반복.

예시

  • 파일 데이터 암호화 소프트웨어

기능 식별

  1. 파일에서 데이터를 읽기
  2. 데이터 암호화
  3. 파일에 데이터 쓰기

초기 객체 설계

  1. 파일에서 읽기 객체
  2. 암호화 객체
  3. 파일 쓰기 객체

각 객체의 인터페이스가 도출됨.

interface FileDataReader {
    public byte[] read();
}

interface Encryptor {
    public byte[] encrypt(byte[] data);
}

interface FileDataWriter {
    public void write(byte[] data);
}
  • 각각의 역할에 맞게 도출

책임 분리 및 재설계

  • 암호화 객체는 2가지 책임이 있음.
    • 흐름 제어 ( 데이터 읽기, 암호화, 쓰기 )
    • 데이터의 암호화
  • 구현 과정에서 책임 분리의 필요성이 있다면 재설계
[파일 읽기 객체] --> [흐름 제어 객체] --> [암호화 객체]
                               |
                               v
                     [파일 쓰기 객체]

  • 만약 코드상에서 흐름 제어 객체라는 것이 등장한다면
    • EncryptionProcessor 라는 인터페이스로
      interface EncryptionProcessor {
          public void process();
      }
      • 라는 별도의 래핑 인터페이스로 행위를 감쌀 수 있음.
      • 읽기, 암호화, 쓰기 플로우를 조율하는 역할을 함.

설계의 점진적 발전

  • 객체 설계는 한번에 완성 X, 구현을 진행하면서 점진적으로 완성함
  • 최초의 설계는 완벽하지 않음 → 개발하면서 설계 변경
  • 설계시 변경될 부분을 유연한 구조로 가져가야 한다.

캡슐화의 중요성

  • 내부 구현에 유연함을 제공
  • 객체의 내부 구현이 변경되어도 외부 인터페이스는 유지가능
profile
이전 블로그 : https://oth3410.tistory.com/

0개의 댓글