CH12. 객체지향 모델링(클래스 + 시퀀스 다이어그램)

김유찬·2023년 6월 13일
0

소프트웨어 공학

목록 보기
11/12
post-thumbnail

● 다이어그램의 종류

■ 클래스 다이어그램

  • Generalization(일반화 관계): 일반적인 것에서 특화된 것과의 관계, 보통 상속을 표현
  • Realization(실체화 관계): 인터페이스와 그것을 구현한 것과의 관계
  • Association(연관 관계): 한 객체가 다른 객체를 수요하거나 파라미터로 객체를 받아서 처리하는 관계
    -Aggregation(집합): 메인 클래스가 삭제될 시 대상 클래스는 같이 삭제가 안됨(분리가 되도 독립적으로 동작, 약한 결합)
    -Composition(합성): 메인 클래스가 삭제될 시 대상 클래스도 같이 삭제가 됨(분리가 되면 의미가 없어짐, 강한 결합)
  • Dependency(의존 관계): 한 객체가 다른 객체를 소유하지는 않지만, 다른 객체의 변경에 따라 같이 변경을 해주어야 하는 관계

Association(연관 관계)

  • 단방향: 클래스간의 관계가 "->"로 구현 되며, 화살표의 대상은 자신을 가리키는 클래스의 존재 여부를 알지 못함
  • 양항뱡: 클래스간의 관계가 "-"로 구현되며 서로 연관되어 있음

    ※ Aggregation(집합)
  • 팩토리는 애드온을 건설할 수 있는데 이때 팩토리가 위치를 이동해도 애드온은 파괴되지 않음
  • 빈 마름모와 닿아있는 클래스가 메인클래스, 반대가 대상 클래스
    ※ Composition(합성)
  • 캐리어가 인터셉트 유닛을 생성하는데 캐리어가 죽으면 인터셉트도 같이 죽게됨
  • 빨간색으로 채워진 마름모와 닿아있는 클래스가 메인 클래스, 반대가 대상 클래스

Dependency(의존 관계)

  • 한 객체가 다른 객체를 소유하지는 않지만, 다른 객체의 변경에 따라서 같이 변경을 해주어야 할 때 사용
  • 점선 화살표 사용

■ 클래스 다이어그램 심화
● 연관(배열)

  • 실선, 화살표, 배열 원소 수

● 연관(벡터, 링크 등)

  • 실선, 화살표, 벡터 표시

● 상속

  • 실선, 큰 화살표, 가리키는 쪽이 부모

● 인터페이스

  • 점선, 큰 화살표, 가리키는 쪽이 인터페이스

● 추상클래스

  • 직사각형, abstract 표시

● 내부클래스

  • 원 안에 + 표시 부분이 , 화살표

● 익명 내부클래스

  • 내부클래스와 동일 + 익명 내부 클래스 부분에 anonymous 기재

■ 시퀀스 다이어그램

  • 객체 간의 동적 상호작용을 시간적 개념을 중심으로 모델링
  • 수직방향이 시간이 흐름을 나타냄
  • 객체들이 가져야 하는 오퍼레이션과 속성을 구체적으로 정의해야 함
  • 객체의 책임은 오퍼레이션으로 정의되며, 오퍼레이션을 위한 객체의 속성도 정의해야 함

  • 액터: 메시지 체인을 시작할 수 있는 엘리먼트
  • 객체: 메시지를 송수신하는 객체
  • 메시지: 객체간 연결 기능을 담당
  • 회계 메시지: 같은 객체에 대한 함수를 호출
  • 제어 블록: 제어문을 위한 루프

● 시퀀스 다이어그램과 커뮤니케이션 다이어그램

  • 두 다이어그램 모두 상호작용 다이어그램의 구성요소
  • 시간의 흐름에 따른 객체 사이의 메시지 이동을 보기 위해서는 시퀀스 다이어그램 사용, 이벤트 흐름을 돕기 위해
  • 단순히 객체 간 메시지의 흐름 보기 위해서는 커뮤니케이션 다이어그램 사용

● 분석과 설계 단계 사용

  • 분석 단계 대표 - 유스케이스 다이어그램
  • 설계 단계 - 클래스 다이어그램
  • 분석과 설계 단계에서 구조적 모델이 정의되면 이를 기반으로 시퀀스 다이어그램 작성

■ 시퀀스 다이어그램 구성요소

  • 유스케이스 다이어그램의 액터, 클래스 다이어그램의 클래스 등을 의미
  • 시작 순서에 따라 시작 객체를 왼쪽에 표현, 순차적으로 오른쪽 방향으로 표기
  • 생명선은 객체의 생명주기를 의미

  • 생명선에서 객체의 활성화를 사각형으로 표기 -> 활성화 블럭 or 제어 블럭
  • 길이가 특정 시간 단위를 의미하지는 않음

  • 서로 다른 객체 간의 의사소통
  • 호출을 하는 객체의 생명선에서 호출받는 객체의 생명선으로 화살표 표시
  • 객체는 자기 자신에게도 메시지를 보낼 수 있음
  • 메시지 명칭은 위에 작성

  • 동기: 호출한 객체가 결과를 받아야 종료되는 호출
  • 비동기: 호출한 객체가 결과를 기다리지 않고 호출 후 별도의 업무 수행 또는 종료
  • 반환: 동기호출의 결과를 반환
  • 플랫: 동기/비동기 구분없이 일반적인 호출(비동기와 동일하지만 굵기가 굵음)

■ 작성 순서
1. 작성대상 선정: 유스케이스 등을 기반으로 시퀀스 다이어그램에 필요한 객체 선정
2. 객체 위치 선정: 좌측부터 시간 순서 및 중요도 순서대로 객체 선정
3. 메시지 정의: 객체 간 호출 관계나 처리 순서에 따른 메시지 정의
4. 시퀀스 다이어그램 평가: 객체와 메시지 배치를 평가하고 부족한 경우 객체 추가
5. 다이어그램 개선: 객체 추가 시 2번부터 재작업

● 음식 주문 예제

  • 짜장면은 객체이긴 하나 주문이 들어올 때만 있는 객체라고 볼 수 있음

● 분석과 설계 예제

  • 주문 시스템

  • 경계, 도메인, 데이터 관리 계층

  • MVC 모델

  • 클래스 다이어그램

  • 패키지 다이어그램
profile
eukddan

0개의 댓글