Diferença principal - vinculação estática vs vinculação dinâmica
Linguagens de programação como Java e C # oferecem suporte à Programação Orientada a Objetos (OOP). Permite construir software usando objetos. Existem muitos objetos em um sistema de software ou programa. Esses objetos têm 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 transmitidos por meio 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 do método real está na definição do método. Existe um link entre uma chamada de método e definição de método. É conhecido como vinculação. Existem dois tipos de ligações. Eles são vinculação estática e vinculação dinâmica. A principal diferença entre vinculação estática e vinculação dinâmica é que, na vinculação estática, a vinculação é resolvida no tempo de compilação, enquanto a vinculaçã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.
CONTEÚDO
1. Visão geral e diferença principal
2. O que é vinculação estática
3. O que é vinculação dinâmica
4. Semelhanças entre vinculação estática e vinculação dinâmica
5. Comparação lado a lado - vinculação estática vs vinculação dinâmica em forma tabular
6. Resumo
O que é vinculação estática?
A vinculação é o vínculo entre uma chamada de método e as definições de método.
Figura 01: Vinculação estática e vinculação dinâmica
Consulte o programa abaixo escrito em Java.
public class A {
public void method1 () {
System.out.println (“Método1”);
}
public void method2 () {
System.out.println (“Método2”);
}
public static void main (String args) {
A obj = novo A ();
obj.method1 ();
obj.method2 ();
}
}
De acordo com o programa acima, um objeto do tipo A é criado. Em seguida, o método1 e o método2 são chamados. Identificar qual método deve chamar para execução é conhecido como vinculação. A instrução obj.method1 () chamará o método1 () e obj.method2 () chamará o método2 (). Este link é vinculativo.
Na vinculação estática, a vinculação é resolvida em tempo de compilação pelo compilador. Também é conhecido como vinculação antecipada. A vinculação acontece antes que um programa seja executado. A ligação estática ocorre na sobrecarga do método. Consulte o programa abaixo escrito em Java.
public void Calculation {
public void sum (int x, int y) {
System.out.println (“Soma é“, x + y);
}
public void sum (double x, double y) {
System.out.println (“Soma é“, x + y);
}
public static void main (String args) {
Cálculo cal = novo cálculo ();
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 duplos, o método correspondente a dois valores duplos será invocado. 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 duplos. Todas as informações necessárias são conhecidas antes do tempo de execução, portanto, aumenta a eficiência do programa e a velocidade de execução.
O que é vinculação dinâmica?
Na vinculação dinâmica, o compilador não resolve a vinculação no momento da compilação. A vinculação ocorre em tempo de execução. Também é conhecido como vinculação tardia. A vinculação dinâmica ocorre na substituição do método. Consulte o programa escrito em Java.
public class Shape () {
public void draw () {
System.out.println (“Desenhar forma”);
}
}
public class Circle () extends Shape {
public void draw () {
System.out.println (“Desenhar um círculo”);
}
}
public class Triangle () extends Shape {
public void draw () {
System.out.println (“Desenhar triângulo”);
}
}
public class Test {
public static void main (String args) {
Forma s;
s = nova forma ();
s.draw ();
s = novo círculo ();
s.draw ();
s = novo 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. Círculo de classes e Triângulo de classes são subclasses ou classes derivadas. Essas classes também têm o método draw () com suas próprias implementações. Portanto, o método draw () na superclasse é sobrescrito.
No método principal, diferentes objetos são chamados. Existe uma variável de referência do tipo Forma, que é s. Então, s invoca o método de acordo com a classe específica. Em tempo de compilação, o compilador só fará referência ao método de desenho da superclasse. Quando a execução real começar, ela levará à execução de diferentes métodos de desenho. Primeiro, s estará apontando para o objeto do tipo Forma. Portanto, ele invocará o método draw na classe Shape. Então, o s estará apontando o objeto do tipo Circle e invocará o método draw da classe Circle. Por fim, s estará se referindo ao objeto do tipo Triangle e invocará o método draw na classe Triangle. Mesmo que a variável de referência seja do tipo Forma, a vinculaçã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 vinculação estática e a vinculaçã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 vinculação estática e vinculação dinâmica?
Artigo Diff meio antes da tabela
Vinculação estática versus vinculação dinâmica |
|
A vinculação estática é o tipo de vinculação que coleta todas as informações necessárias para chamar uma função durante o tempo de compilação. | Vinculação dinâmica é 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 | |
A vinculação estática ocorre em tempo de compilação. | A vinculação dinâmica ocorre em tempo de execução. |
Funcionalidade | |
A vinculação estática usa informações de tipo para vinculação. | A vinculação dinâmica usa objetos para resolver a vinculação. |
Objeto real | |
A vinculação estática não usa um objeto real para vinculação. | Vinculação dinâmica, use o objeto real para vinculação. |
Sinônimos | |
A vinculação estática também é conhecida como vinculação inicial. | A ligação dinâmica também é conhecida como ligação tardia. |
Execução | |
A velocidade de execução é rápida em vinculação estática. | A velocidade de execução é baixa na vinculação dinâmica. |
Exemplo | |
A vinculação estática é usada na sobrecarga de método. | A vinculação dinâmica é usada na substituição do método. |
Resumo - Vinculação estática vs. Vinculação dinâmica
Existe um link entre uma chamada de método e definição de método. É conhecido como vinculação. Existem dois tipos de vinculações denominadas vinculação estática e vinculação dinâmica. A diferença entre a vinculação estática e a dinâmica é que na vinculação estática, a vinculação é resolvida no tempo de compilação, enquanto a vinculaçã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 Static Binding vs Dynamic Binding
Você pode baixar a versão em PDF deste artigo e usá-la para fins off-line de acordo com a 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