4.3. Sinal

Uma mensagem pode gerar um sinal. Isso significa que a mensagem pode ser apenas um alerta, como um beep, uma piscada em uma janela, uma tela de alerta, ou uma caixa de mensagem simples na tela do computador.

Ela não requer uma mensagem de retorno (no máximo um clique em um botão de ok ou o fechamento da janela de alerta). Um sinal é um tipo de classe associada a um evento que pode desencadear um procedimento dentro da classe de destino. Nesse contexto, normalmente não existe um retorno para a classe que a invocou.

Sinais são utilizados para informar um determinado acontecimento ao usuário, como o término de um processamento, a chegada de um e-mail, um alerta baseado em uma unidade de tempo. Sinais não são usados para controle de erros, mas eles podem ser usados para o controle de operações. Exemplo.

Veja este outro exemplo: suponha que no momento de concluir a venda do ingresso para o espetáculo teatral ocorra um problema com o cartão de crédito do cliente e ele fique impossibilitado de efetuar o pagamento. Neste cenário um sinal gerado pelo sistema de pagamento é retornado à aplicação (provavelmente algo como pagamentoConfirmado() = Falso) e com essa informação o sistema terá de desfazer a reserva do assento, liberando-o para outra venda. Observe que não houve um erro, mas sim um sinal de que a operação de pagamento não foi concluída com sucesso.

Os sinais são utilizados para controlar os caminhos alternativos de uma aplicação. Normalmente esperamos que todos os procedimentos ocorram com sucesso, mas nem sempre isso acontece: pagamentos que são cancelados, produtos em uma pré-venda que ficam com estoque indisponível, cadastros que ficam sem informações essenciais e obrigatórias e por isso os sistemas devem permitir um controle de desfazer ou cancelar algo que começou a ser feito (como uma venda). Nesse sentido, é muito comum que o sinal requeira do sistema apenas um cancelamento dos objetos em memória (destruindo-os e voltando para a tela inicial do sistema ou do módulo) ou desfazendo operações em banco de dados (muitas vezes cancelando transações de banco de dados).

Copyright © 2014 AIEC.