4.3. Sinal
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).
Suponha que seu programa esteja copiando um arquivo de um local para o outro, e que durante a cópia acabe o espaço livre no local de destino, impossibilitando a cópia. Neste momento, sua aplicação pode gerar um sinal de alerta, informando que não há espaço livre no destino e, consequentemente, cancelar a operação. Observe que não houve um erro interno, mas tão somente a impossibilidade de concluir a operação por conta da falta de um requisito da operação: espaço em disco suficiente.
X