Negocio

Data Binding com Java

Ligação de dados

Se precisar de café para acordar de manhã, alguns itens são muito importantes para você: café na xícara e um pouco de cafeína no café! Você não pode beber um conceito, você precisa beber.

Em Java, podemos criar uma classe para Coffee, mas até vincularmos a classe com variáveis, métodos, construtores e outros, é apenas uma classe. Digamos que adicionemos variáveis ​​para contagem de feijão, conteúdo de cafeína e onças. Quando você cria uma nova instância de uma classe e acessa uma das variáveis ​​subjacentes, esses itens são vinculados. Esta é a vinculação de dados . Nesse caso, seria fazer a aula Café e, digamos, acessar a variável cafeína . Isso seria vinculação de dados em nosso exemplo.

Exemplo de classe de ligação de dados Java

Agora podemos declarar instâncias da classe Coffee e usar essas variáveis ​​e métodos. O código a seguir declara duas instâncias de Coffee e atribui valores para a variável beans .

Método principal de vinculação de dados Java

Nesse caso, vinculamos a variável beans a myCoffee1 e a myCoffee2 (mas com valores diferentes). Cada uma dessas instâncias ocupa um lugar diferente na memória. Nem myCoffee1 nem myCoffee2 podem se comunicar. Nós (desculpem a gramática pobre, mas é a linguagem Java) ‘amarramos’ os dois juntos.

Cobrimos os fundamentos da vinculação de dados. Agora, vamos examinar dois tipos principais de vinculação que você verá em Java: vinculação estática e dinâmica.

Ligação estática

A ligação estática ocorre em tempo de compilação. Lembre-se de que campos e métodos vinculam-se a classes. Quando chamamos um método, Java irá ligá-lo em tempo de compilação ou em tempo de execução. Antes de entrarmos nas ervas daninhas, vamos dar uma olhada em nossa aula de Café novamente. Adicionamos um método chamado brew () que aceita cafeína e oz .

Método estático Java

Como nosso método é estático, significa que os métodos em Coffee pertencem à própria classe. Se você criou uma centena de instâncias de Coffee, você só faz referência aos campos / métodos uma vez. Na verdade, se você vir um método com a palavra-chave static, final ou private antes de seu nome, a vinculação será estática. Esses métodos SEMPRE fazem parte da classe, e apenas dessa classe.

Ligação Dinâmica

Agora, as coisas ficam interessantes. A vinculação dinâmica ocorre em tempo de execução porque Java não necessariamente saberá qual método / campo referenciar no tempo de compilação. Para ilustrar esse conceito, adicionaremos mais alguns códigos ao nosso aplicativo Coffee.

Primeiro, adicionaremos outro método à classe Coffee, que simplesmente exibe uma contagem de grãos. Este é público, não estático. Isso se tornará importante muito em breve:

Método público 1 de vinculação de dados Java

Um dos recursos do Java é que você pode ter uma subclasse ou classes filhas. Ou seja, podemos criar uma classe que herda tudo de Coffee, mas dar a ela seus próprios métodos e campos exclusivos. Ele ainda herda nosso método brew () e nossos campos (cafeína e oz). Nesse caso, criaremos uma classe filha chamada Peaberry (um tipo de café com um grão de formato exclusivo). Além disso, adicionaremos um método beanCount a ele. Sim, você pode ter o mesmo nome de método em uma classe filha! É chamado de substituição porque você está dizendo à classe filha para fazer algo diferente com o método herdado.

Aqui está o método beanCount na classe filha. Mesmo nome, mesmos parâmetros. No entanto, ele pega a contagem inserida e divide por 2.

Método filho de ligação de dados Java

Se você fosse um compilador, como saberia qual método vincular a qual instância da classe? Sua única opção é descobrir isso em tempo de execução. É por isso que métodos como esse são processados ​​/ vinculados à instância em tempo de execução. Ao contrário de um método estático que não pode ser alterado, os métodos substituídos devem ser processados ​​dinamicamente.

Agora, vamos colocar tudo isso junto. Em nossa função principal, declararemos uma instância de Coffee e uma instância de Peaberry, e chamaremos cada um dos métodos:

Ligação de dados Java chamada estática e dinâmica

Quando o programa é executado, vemos a saída estática primeiro, seguida pela saída da vinculação dinâmica de métodos.

Saída de ligação de dados Java

Java processou com sucesso todos os métodos. No entanto, ele executou a vinculação em tempo de compilação para o método estático, deixando os outros dois vinculados em tempo de execução.

Resumo da lição

Vamos revisar o que aprendemos sobre vinculação de dados em um sistema Java. Em Java, a vinculação de dados é a conexão entre classe e método, ou classe e campo. Uma Tree é legal, mas não está ligada a nada até que você crie uma instância de uma Tree e anexe um método grow (). Java trata a ligação estática ou dinamicamente.

A vinculação estática é feita em tempo de compilação. Isso é para métodos que não podem ser substituídos, como métodos estáticos ou finais. A vinculação dinâmica é feita em tempo de execução. Se usamos a substituição (usando o mesmo nome de método com um parâmetro diferente ou o mesmo nome de método em uma classe filha), Java precisa descobrir qual método é usado quando é executado. Não pode saber até que seja executado.