Ligação dinâmica

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa

Em ciência da computação, ligação dinâmica é o processo de selecionar qual implementação de uma operação polimórfica (método ou função) chamar em tempo de execução. A ligação dinâmica contrasta com a ligação estática, na qual a implementação de uma operação polimórfica é selecionada em tempo de compilação. O propósito da ligação dinâmica é suportar casos onde a implementação apropriada de uma operação polimórfica não pode ser determinada em tempo de compilação por ela depender do tipo em tempo de execução de um ou mais parâmetros reais à operação.

Ela determina a exata implementação de uma requisição com base no nome da requisição (operação) e no objeto que executa a operação no tempo de execução. Geralmente acontece quando uma função membro de uma classe derivada é invocada usando um ponteiro para sua classe base. A implementação de uma classe derivada será invocada ao invés da operação da classe base. Isto permite a substituição de uma implementação particular usando a mesma interface, o que por sua vez habilita o uso de polimorfismo.

Exemplo[editar | editar código-fonte]

Suponha que todas as formas de vida são mortais. Na programação orientada a objetos, nós podemos dizer que as classes Pessoa e Planta devem implementar a interface Mortal, a qual contém o método Morrer().

Pessoas e Plantas morrem em diferentes condições; por exemplo, Plantas não possuem um coração que pára. Ligação dinâmica é a prática de descobrir qual método invocar no tempo de execução. Por exemplo, se nós escrevermos

void Matar(Mortal m) {
  m.Morrer();
}

não fica claro se é uma Pessoa ou Planta, e assim se Planta.Morrer() ou Pessoa.Morrer() deveriam ser invocados no objeto. Com ligação dinâmica, o objeto m é examinado no tempo de execução, e o método correspondente à classe atual é chamado.