Diferença entre ligação estática e ligação dinâmica

Índice:

Diferença entre ligação estática e ligação dinâmica
Diferença entre ligação estática e ligação dinâmica

Vídeo: Diferença entre ligação estática e ligação dinâmica

Vídeo: Diferença entre ligação estática e ligação dinâmica
Vídeo: Diferença entre página ESTÁTICA e DINÂMICA | ilustraCode 2024, Novembro
Anonim

Key Difference – Ligação Estática vs Ligação Dinâmica

Linguagens de programação como Java e C suportam Programação Orientada a Objetos (OOP). Permite construir software usando objetos. Existem muitos objetos em um sistema de software ou programa. Esses objetos possuem atributos e métodos. Os atributos descrevem as características. Os métodos descrevem as ações que podem ser executadas pelo objeto. Os dados são passados através de objetos usando métodos. Os valores necessários são enviados por meio de chamadas de método com parâmetros. A implementação real do método está na definição do método. Há um link entre uma chamada de método e definição de método. É conhecido como vinculativo. Existem dois tipos de ligações. Eles são vinculação estática e vinculação dinâmica. A principal diferença entre a associação estática e a associação dinâmica é que, na associação estática, a associação é resolvida no tempo de compilação, enquanto a associação dinâmica é resolvida no tempo de execução, que é o tempo real de execução. Este artigo discute a diferença entre esses dois mecanismos de vinculação.

O que é Ligação Estática?

Binding é o link entre uma chamada de método e definições de método.

Diferença entre vinculação estática e vinculação dinâmica
Diferença entre vinculação estática e vinculação dinâmica

Figura 01: Ligação Estática e Ligação Dinâmica

Consulte o programa abaixo escrito em Java.

classe pública A{

public void method1(){

System.out.println(“Method1”);

}

public void method2(){

System.out.println(“Method2”);

}

public static void main(String args){

A obj=new A();

obj.method1();

obj.method2();

}

}

De acordo com o programa acima, um objeto do tipo A é criado. Então method1 e method2 são chamados. Identificar qual método deve chamar para execução é conhecido como vinculação. A instrução obj.method1() chamará method1() e obj.method2() chamará method2(). Este link é obrigatório.

Na ligação estática, a ligação é resolvida em tempo de compilação pelo compilador. Também é conhecido como ligação precoce. A vinculação acontece antes de um programa realmente ser executado. A ligação estática ocorre na sobrecarga do método. Consulte o programa abaixo escrito em Java.

Cálculo de vazio público{

public void sum(int x, int y){

System.out.println(“A soma é “, x+y);

}

public void sum(double x, double y){

System.out.println(“A soma é “, x+y);

}

public static void main(String args){

Cálculo cal=new Calculation();

cal.sum(2, 3);

cal.sum(5.1, 6.4);

}

}

De acordo com o programa acima, ao passar os dois inteiros, o método com dois inteiros será invocado. Ao passar dois valores double, será invocado o método correspondente a dois valores double. Esse processo de vinculação ocorre no momento da compilação. O compilador sabe que deve chamar o método sum com dois valores inteiros para cal.sum(2, 3). Para cal(5.1, 6.4), ele chamará o método sum com dois valores double. Todas as informações necessárias são conhecidas antes do tempo de execução, aumentando assim a eficiência do programa e a velocidade de execução.

O que é vinculação dinâmica?

Em Dynamic Binding o compilador não resolve a vinculação em tempo de compilação. A vinculação ocorre em tempo de execução. Também é conhecido como ligação tardia. Dynamic Binding ocorre na substituição de método. Consulte o programa escrito em Java.

classe pública Forma(){

public void draw(){

System.out.println(“Desenhar forma”);

}

}

classe pública Circle() estende Forma{

public void draw(){

System.out.println(“Desenhar círculo”);

}

}

classe pública Triângulo() estende Forma{

public void draw(){

System.out.println(“Desenha um triângulo”);

}

}

classe pública Teste{

public static void main(String args){

Forma s;

s=new Shape();

s.draw();

s=new Círculo();

s.draw();

s=new Triângulo();

s.draw();

}

}

De acordo com o programa acima, a classe Shape possui um método draw(). A classe Circle e a classe Triangle estendem a classe Shape. A classe Circle e a classe Triangle podem herdar os atributos e métodos da classe Shape. Portanto, a classe Shape é a superclasse ou classe pai. Class Circle e Class Triangle são subclasses ou classes derivadas. Essas classes também possuem o método draw() com suas próprias implementações. Portanto, o método draw() na superclasse é substituído.

No método principal, diferentes objetos são invocados. Existe uma variável de referência do tipo Shape, que é s. Então, s invoca o método de acordo com a classe específica. Em tempo de compilação, o compilador fará referência apenas ao método draw da superclasse. Quando a execução real começar, levará à execução de diferentes métodos de desenho. Primeiro, s estará apontando para o objeto do tipo Shape. Portanto, ele invocará o método draw na classe Shape. Então o s estará apontando para o objeto do tipo Circle, e ele invocará o método draw da classe Circle. Finalmente, s estará se referindo ao objeto do tipo Triangle, e irá invocar o método draw na classe Triangle. Embora a variável de referência seja do tipo Shape, a associação depende do tipo de objeto. Este conceito é conhecido como Dynamic Binding. As informações são fornecidas em tempo de execução, portanto, a velocidade de execução é mais lenta em comparação com a vinculação estática.

Qual é a semelhança entre a ligação estática e a ligação dinâmica?

Ambos estão relacionados a um polimorfismo que permite que um objeto se comporte de várias maneiras

Qual é a diferença entre ligação estática e ligação dinâmica?

Ligação Estática vs Ligação Dinâmica

Static Binding é o tipo de vinculação que coleta todas as informações necessárias para chamar uma função durante o tempo de compilação. Dynamic Binding é o tipo de vinculação que coleta todas as informações necessárias para chamar uma função durante o tempo de execução.
Tempo de Ligação
Static Binding ocorre em tempo de compilação. A ligação dinâmica ocorre em tempo de execução.
Funcionalidade
Static Binding usa informações de tipo para vinculação. Dynamic Binding usa objetos para resolver para vincular.
Objeto real
A vinculação estática não usa um objeto real para vinculação. Encadernação dinâmica, use o objeto real para vinculação.
Sinônimos
A vinculação estática também é conhecida como vinculação antecipada. A vinculação dinâmica também é conhecida como vinculação tardia.
Execução
A velocidade de execução é rápida em vinculação estática. A velocidade de execução é baixa em vinculação dinâmica.
Exemplo
A vinculação estática é usada na sobrecarga de métodos. A vinculação dinâmica é usada na substituição do método.

Resumo – Ligação Estática vs Ligação Dinâmica

Existe uma ligação entre uma chamada de método e a definição de um método. É conhecido como vinculativo. Existem dois tipos de ligações chamadas ligação estática e ligação dinâmica. A diferença entre a associação estática e a associação dinâmica é que, na associação estática, a associação é resolvida no tempo de compilação, enquanto a associação dinâmica é resolvida no tempo de execução, que é o tempo real de execução. Como as informações necessárias são fornecidas antes do tempo de execução, a vinculação estática é rápida na execução em comparação com a vinculação dinâmica.

Baixe o PDF de Ligação Estática vs Ligação Dinâmica

Você pode baixar a versão em PDF deste artigo e usá-la para fins offline conforme nota de citação. Faça o download da versão em PDF aqui: Diferença entre vinculação estática e vinculação dinâmica

Recomendado: