Interaction Diagram?
인터랙션(동적) 다이어그램은 객체가 통신하는 방법과 같은 동적 측면에서 다이어그램을 그린다.
이러한 다이어그램은 커뮤니케이션 다이어그램과 시퀀스 다이어그램이 있다.
Communication Diagram?
커뮤니케이션 다이어그램이란, 객체간의 상호작용에 중점을 둔 다이어그램이다. 다시 말해, 공간에 집중한다.
클래스/객체 표현
클래스는 그냥 이름만 적는다.
익명 객체는 이름 앞에 " : "을 붙인다.
이름이 붙은 객체는 이름 앞에 이름과 클론을 붙인다.
Link
Link란, association과 같은 개념으로 실선으로 나타낸다.
Car는 클래스로, 1개 이상의 Driver 클래스와 연관되어 있다.
ferarri:Car는 ferrari라는 이름의 객체로 tom 객체와 marry 객체와 연관되어 있다.
Message
메시지는 링크 위에 화살표를 붙여 표현된다. 기본적으로 순서:메시지이름() 으로 쓰인다.
커뮤니케이션 다이어그램은 작동 순서를 표현하기 위하여 메시지 왼쪽에 숫자를 표기한다.
위 그림에서 msg1()은 하나의 메시지이다.
msg2, msg3은 각각 1과 2에 관련된 메시지이다.
msg4와 msg5는 3과 관련된 메시지로, msg4 이후 msg5가 나타난다.
자기 자신에게 메시지를 보내는 것도 가능하다. Register 익명 객체는 자기 자신에게 1: clear() 메시지를 보낸다.
객체 생성/삭제
객체의 생성과 삭제는 <<create>>와 <<destroy>>로 표현된다.
위 그림에서 make(cashier) 메시지 전송으로써 :Sale 객체가 생성되었고, delete 메시지 전송으로써 Sale 객체가 삭제되었다.
파라미터/반환
파라미터는 이름:자료형 으로 나타낸다. 반환값은 받는 변수명 := 함수() : 반환자료형으로 나타낸다.
위 그림에서, :Register total() -> :Sale은 Sale에서 total()을 실행하고 그 반환값 tot은 :Register에게 돌아온다.
조건문
조건문은 [조건] 메시지명 으로 보낼 수 있다.
if-else문은 1a: [조건] 메시지 / 1b: [조건] 메시지 ... 으로 나타낼 수 있다.
반복문
반복문은 순서* [i:=1..10] 메시지명으로 나타낸다.
아래 그림의 경우 [조건]이 존재하지 않는데, 그럼에도 불구하고 알아볼 수는 있다.
MultiObject
박스를 중첩해서 인스턴스의 집합을 나타낼 수 있다. 위의 예시는 특정 key에 해당하는 SalesLineItem 객체를 탐색하고 출력한다.
위 그림은 Sale이 getTotal() 연산을 하기 위하여 SalesLineItem MultiObject에 반복적으로 getSubtotal() 연산을 취해서 합을 구해서 반환한다.
Messages to a Class
클래스에게 메시지를 보낼 수도 있다. 이는 클래스의 정적 메소드 호출을 뜻한다.
다형성 메시지
위 그림에서 authorize는 다형성 메시지(Polymorphic Messages)이다. 이는 필요할경우 따로 정의해준다.
Active objects & Asynchronous Messages
활성 객체와 비동기 메시지도 나타낼 수 있다. 활성 객체는 :Clock, 비동기 메시지는 2: run을 참고하여 나타낼 수 있다.
startClock 메시지를 ClockStarter가 받으면, create 메시지를 Clock에게 보내고 run 메시지를 비동기적으로 Clock에게 보낸다. 이때 Clock은 활성 객체로서 작동하게 된다. run이 작동하는 동안 ClockStarter는 System:Class에게 runFinalization 메시지를 보낸다. 즉, 위 그림은 Clock을 시작하는 함수의 다이어그램이다.
'학교강의필기장 > OOP' 카테고리의 다른 글
UML Class Diagram (1) | 2023.12.11 |
---|---|
Interaction Diagram - Sequence Diagram (0) | 2023.12.11 |
Domain Model (0) | 2023.12.10 |
System Sequence Diagram (0) | 2023.12.10 |
Use Case Diagram (0) | 2023.12.10 |