개념: 이벤트 및 신호
주제
현실 세계에서 일은 대개 동시에 예측 불가능하게 발생합니다.
"발생하는 일"을 '이벤트'라고 합니다.
상태 시스템의 컨텍스트에서 이벤트는 상태 전이를 트리거할 수 있는
자극의 발생을 모델링합니다.
이벤트에는 신호, 호출, 시간 경과 또는 상태 변경이 포함됩니다.
이벤트는 동기 또는 비동기일 수 있습니다.
'신호'는 두 인스턴스 간 비동기 자극의 스펙을 표시하는
일종의 이벤트입니다.
이벤트는 외부 또는 외부일 수 있습니다.
외부 이벤트는 시스템과 시스템의 액터 사이에
전달되는 이벤트입니다.
내부 이벤트는 시스템 내에 활성화되어 있는 객체 사이에
전달되는 이벤트입니다.
신호, 호출, 시간 경과 및 상태 변경과 같은
4가지 종류의 이벤트가 있습니다.
신호는 한 객체가 비동기적으로 디스패치한(전송) 후
다른 객체가 받는(수신) 객체를 나타냅니다.
예외는 신호 유형의 예입니다.
인스턴스가 일반적으로 명시적으로 모델링되지 않는 경우에도
신호는 인스턴스를 포함할 수 있습니다.
신호는 이벤트 계층 구조의 모델링을 사용 가능하게 하여
일반화 관계에 연관됩니다.
신호는 속성 및 조작을 포함할 수 있습니다.
신호의 속성은 매개변수 역할을 합니다.
신호는 상태 시스템에서의 상태 전이 조치 또는
상호 작용에서의 메시지 전송으로 전송될 수 있습니다.
조작 실행이 신호를 전송할 수도 있습니다.
클래스 또는 인터페이스를 모델링할 때
요소 작동 지정의 중요한 파트는 조작에 의해 전송될 수 있는
신호를 지정하는 것입니다.
전송할 수 있는 조작 및 이벤트 간의 관계는
종속성 관계를 사용하여 모델링되고
<<전송>>으로 유형화됩니다.
신호 이벤트가 신호의 발생을 나타내는 것과 같이
호출 이벤트는 조작의 디스패치를 나타냅니다.
두 경우 모두, 이벤트는 상태 시스템에서 상태 전이를 트리거할 수 있습니다.
신호가 비동기 이벤트인 반면에 호출 이벤트는 일반적으로 동기입니다.
이것은 객체가 다른 객체에 대한 조작을 호출할 때
조작이 완료될 때까지 제어가 송신측에서 수신측으로 전달되며
그 후에 제어가 송신측에 리턴됨을 의미합니다.
호출 이벤트 모델링은 신호 이벤트와 동일한 방법으로 가시화됩니다.
두 경우 모두, 이벤트는 매개변수에 따라
상태 전이에 대한 트리거로 표시됩니다.
신호 이벤트와 호출 이벤트를 구분할 수 있는
시각적인 신호가 없더라도
수신측 클래스가 호출 이벤트를 처리하는 조작을 선언하므로
차이점이 나타납니다.
신호의 경우, 신호에 의해 트리거되는 상태 시스템에서 전이합니다.
시간 이벤트는 시간의 경과를 나타냅니다.
시간 이벤트는 공통 시계 메커니즘을 사용하여
시스템의 시간 의존 파트를 동기화하는 데 사용됩니다.
변경 이벤트는 시스템의 상태 변경 또는 일부 조건의 만족도 변경을 나타냅니다.
신호 및 호출 이벤트에는 송신측 및 수신측과 같은 최소한 두 개의 객체가 포함됩니다.
신호가 전송될 때 송신측은 신호를 디스패치한 다음
수신측에서 리턴하기를 기다리지 않고 제어 플로우를 지속합니다.
이것은 제어 플로우를 재개하기 전에 송신측이 수신측에서
응답하기를 기다리는 조작 호출의 의미론에 대조되는 것입니다.
이 때문에, 일반적으로 조작은 "블로킹" 작동(다른 것이 발생하는 것을
차단하거나 막는 작동)을 표시하는 데 사용되는 반면
신호는 비 블로킹 작동을 표시하는 데 사용됩니다.
하나의 객체가 객체 세트에 신호를 전송하는 행위를
'멀티캐스팅'이라고 하며 수신측 세트를 보유하는 컨테이너에
신호를 전송하여 표시됩니다.
브로드캐스팅은 시스템의 모든 객체에 신호를 전송하는 행위이며
전체적으로 시스템을 나타내는 객체에 신호를 전송하여 표시됩니다.
이 '시스템 객체'는 차례로 메시지 분배 메커니즘을 구현하여
시스템의 해당 객체 모두에 신호가 전송되었는지 확인합니다.
|