Dans le monde réel, des choses se produisent, souvent simultanément et de manière imprévisible. Ces « choses qui se
produisent » sont appelées « événements ».
Dans le contexte des machines d'état, les événements modélisent l'occurrence d'un stimulus susceptible de déclencher
une transition d'état. Les événements comprennent les signaux, les appels, le temps qui passe ou un changement d'état.
Les événements peuvent être synchrones ou asynchrones.
Un « signal » est un type d'événement qui représente la spécification d'un stimulus asynchrone entre deux instances.
Les événements peuvent être externes ou internes. Les événements externes sont ceux qui transitent entre le système et
ses acteurs. Les événements internes sont ceux qui transitent entre les objets qui résident sur le système. Il existe
quatre types d'événements : les signaux, les appels, le temps qui passe et un changement d'état.
Un signal représente un objet qui est distribué (émis) de manière asynchrone par un objet et reçu (intercepté) par un
autre. Les exceptions sont un exemple de type de signal.
Les signaux peuvent avoir des instances, bien que celles-ci ne soient généralement pas modélisées de manière explicite.
Les signaux peuvent être impliqués dans des relations de généralisation, ce qui autorise la modélisation de hiérarchies
d'événements.
Les signaux peuvent avoir des attributs et des opérations. Les attributs d'un signal lui servent de paramètres.
Un signal peut être envoyé en tant qu'action d'une transition d'état dans une machine d'état ou l'envoi d'un message
dans une interaction. L'exécution d'une opération peut également envoyer des signaux. Lors de la modélisation d'une
classe ou d'une interface, une partie importante de la spécification du comportement de l'élément consiste à spécifier
les signaux pouvant être émis par ses opérations. La relation entre une opération et les événements qu'elle peut
envoyer est modélisée à l'aide d'une relation de dépendance, sous la forme stéréotypée <<send>>.
Tout comme un événement de signal représente l'occurrence d'un signal, un événement d'appel représente la distribution
d'une opération. Dans les deux cas, l'événement peut déclencher une transition d'état dans une machine d'état.
Alors qu'un signal est un événement asynchrone, un événement d'appel est en général synchrone. Ainsi, lorsqu'un objet
appelle une opération sur un autre objet, le contrôle passe de l'expéditeur au récepteur tant que l'opération n'est pas
arrivée à son terme, moment auquel le contrôle est de nouveau confié à l'expéditeur. La modélisation d'un événement
d'appel est visualisée de la même manière qu'un événement de signal. Dans les deux cas, l'événement est affiché avec
ses paramètres comme déclencheur d'une transition d'état.
Bien qu'il n'existe pas d'indice visuel permettant de distinguer un événement de signal d'un événement d'appel, la
différence apparaîtra dans la classe récepteur, car elle déclarera une opération qui traite l'événement d'appel. Dans
le cas d'un signal, il existera une transition dans la machine d'état qui est déclenchée par le signal.
Un événement temporel représente le temps qui passe. Les événements temporels permettent de synchroniser les parties
temporelles du système à l'aide d'un dispositif d'horloge commun. Un événement de changement représente un changement
dans l'état du système ou la satisfaction d'une condition.
Les événements de signal et d'appel impliquent au moins deux objets : un expéditeur et un récepteur. Lorsque le signal
est émis, l'expéditeur distribue ce signal et poursuit sur son flux de commande sans attendre de retour de la part du
récepteur. Ceci est à opposer à la sémantique de l'appel d'opération, dans laquelle l'expéditeur attend que le
récepteur réponde pour reprendre son flux de commande. De ce fait, les opérations sont généralement utilisées pour
représenter les comportements « de blocage » (les comportements qui entraînent un blocage ou empêchent d'autres
événements de se produire), tandis que les signaux sont utilisés pour représenter les comportements qui ne produisent
pas de blocages.
L'envoi, par un objet, d'un signal à un ensemble d'objets est appelé « multidiffusion » et est représenté par l'envoi
d'un signal à un conteneur qui abrite un ensemble de récepteurs. La diffusion correspond à l'envoi d'un signal à tous
les objets d'un système et est représentée par l'envoi d'un signal à un objet qui représente le système dans son
ensemble ; cet objet « système » réalise à son tour un mécanisme de distribution de message qui s'assure que ce signal
est envoyé à tous les objets appropriés du système.
|