Diferença entre vinculação antecipada e tardia

Diferença - Antecipada vs Ligação tardia
 

Early Binding e Late Binding são dois conceitos relacionados ao polimorfismo. A ligação antecipada ocorre em tempo de compilação, enquanto a ligação tardia ocorre em tempo de execução. o diferença chave entre vinculação precoce e tardia é que Ligação Antecipada usa as informações da classe para resolver chamadas de método, enquanto Ligação Atrasada usa o objeto para resolver chamadas de método.

Linguagens de programação como Java suportam Programação Orientada a Objetos (OOP). É um paradigma que permite construir o programa ou o software usando objetos. Existem vários objetos no software. Esses objetos são conectados um ao outro e transmitem mensagens usando métodos. Todo objeto tem características e comportamentos. As características são descritas pelas propriedades ou atributos. Os comportamentos são descritos usando métodos. O objeto Student pode ter características como nome, idade e são representados por propriedades. O objeto Student pode ter comportamentos como estudar e ler, e eles são representados por métodos. Um dos principais pilares da POO é o polimorfismo. Ele permite que um objeto se comporte de várias maneiras. A ligação inicial e a ligação tardia são dois conceitos no polimorfismo. Os métodos de sobrecarga são ligados usando ligação antecipada. Métodos substituídos são ligados usando ligação tardia.

CONTEÚDO

1. Visão geral e principais diferenças
2. O que é vinculação antecipada
3. O que é vinculação tardia
4. Semelhanças entre vinculação precoce e tardia
5. Comparação lado a lado - vinculação antecipada e tardia em forma de tabela
6. Resumo

O que é vinculação antecipada?

Na Ligação Antecipada, as informações da classe são usadas para resolver a chamada de método. Ligação antecipada ocorre no momento da compilação. Também é conhecido como ligação estática. Nesse processo, a ligação ocorre antes da execução do programa. Os métodos de sobrecarga são ligados usando ligação antecipada. Consulte o programa abaixo.

Figura 01: Classe de cálculo

Figura 02: Programa principal de vinculação antecipada

De acordo com o programa acima, a classe Calculation contém um método add que aceita dois valores inteiros e outro método add que aceita dois valores duplos. No programa principal, um objeto do tipo Cálculo é criado. Ao passar dois números inteiros para o método add, ele invocará o método add que aceita dois números inteiros. Ao passar dois valores duplos para o método add, ele invocará o método correspondente a dois valores duplos. Esse processo de ligação ocorre no momento da compilação. Todas as informações necessárias são conhecidas antes do tempo de execução, aumentando a eficiência do programa e a velocidade de execução.

O que é ligação tardia?

Na associação tardia, o objeto é usado para resolver a chamada de método. A ligação tardia ocorre em tempo de execução. Também é conhecido como ligação dinâmica. Nesse processo, a ligação ocorre na execução do programa. Métodos substituídos são ligados usando ligação tardia. Consulte o programa abaixo.

Figura 03: Classe de forma

Figura 04: Classe Círculo

Figura 05: Classe Triângulo

Figura 06: Programa principal para vinculação tardia

De acordo com o programa acima, a classe Shape possui um método de desenho. Classe Círculo e classe Triângulo estendem a classe Shape. Portanto, essas duas classes podem herdar os atributos e métodos da classe Shape. Classe de forma é a classe base. As classes Circle e Triangle são classes derivadas. A classe Circle e a classe Triangle também têm o método draw com suas próprias implementações. Portanto, o método draw na classe Shape é substituído pelos métodos draw das classes derivadas.

No programa principal, uma variável de referência s do tipo Shape é criada. No momento da compilação, o compilador fará referência apenas ao método de desenho da classe base. Em tempo de execução, diferentes métodos de desenho serão executados. Primeiro, s apontará para o objeto do tipo Shape. Portanto, o método draw da classe Shape é invocado. Então, os s apontarão para o objeto do tipo Circle e chamarão o método draw da classe Circle. Finalmente, s apontará para o objeto do tipo Triangle e chamará o método draw na classe Triangle. Os métodos são chamados dependendo dos objetos. Portanto, o objeto é usado para resolver a chamada de método na associação tardia. As informações necessárias para a ligação são fornecidas em tempo de execução, portanto, a velocidade de execução é mais lenta em comparação à ligação antecipada.

Qual é a semelhança entre ligação inicial e ligação tardia?

  • A ligação precoce e a ligação tardia estão relacionadas ao polimorfismo que é um pilar da OOP.

Qual é a diferença entre vinculação antecipada e vinculação tardia?

Vinculação antecipada vs Vinculação tardia

O processo de usar as informações da classe para resolver chamadas de métodos que ocorrem no momento da compilação é chamado Ligação Antecipada. O processo de usar o objeto para resolver a chamada de método que ocorre no tempo de execução é chamado de associação tardia.
 Tempo de ligação
A ligação antecipada acontece no momento da compilação. A ligação tardia acontece em tempo de execução.
Funcionalidade
Ligação Antecipada usa as informações da classe para resolver a chamada de método. A associação tardia usa o objeto para resolver a chamada de método.
 Sinônimos
A ligação antecipada também é conhecida como ligação estática… A ligação tardia também é conhecida como ligação dinâmica.
Ocorrência
Os métodos de sobrecarga são ligados usando ligação antecipada. Métodos substituídos são ligados usando ligação tardia.
Velocidade de Execução
A velocidade de execução é mais rápida na ligação antecipada. A velocidade de execução é mais baixa na ligação tardia.

Resumo - Antecipado vs Ligação tardia

OOP é comumente usado para desenvolvimento de software. Um dos principais pilares da POO é o polimorfismo. A ligação antecipada e a ligação tardia estão relacionadas a isso. A associação antecipada ocorre em tempo de compilação, enquanto a associação tardia ocorre em tempo de execução. Na sobrecarga de método, a ligação ocorre usando a ligação inicial. Na substituição do método, a ligação ocorre usando a ligação tardia. A diferença entre a associação antecipada e tardia é que a associação antecipada usa as informações da classe para resolver a chamada de método, enquanto a associação tardia usa o objeto para resolver a chamada de método.

Referência:

1.Entrevista Java 04 - Vinculação estática versus vinculação dinâmica, Tutoriais do Mahika, 27 de dezembro de 2017. Disponível aqui
2.Envio de método dinâmico em Java | Tutorial Java principal | Studytonight. Disponivel aqui