Orientação a Objetos - Parte ll

Continuando sobre o assunto de Orientação a Objetos, falaremos sobre sobrecarga de métodos, polimorfismo, variáveis de referencias e os demais detalhes que você precisará saber para a prova SCJP 1.5.

Orientação a Objetos - Parte ll

 

Resumo

Continuando sobre o assunto de Orientação a Objetos, falaremos sobre sobrecarga de métodos, polimorfismo, variáveis de referencias e os demais detalhes que você precisará saber para a prova SCJP 1.5.

 

Sobrecarga e Sobrescrita de método.

Método Sobrescrito são métodos declarados com mesmo nome em sua classe ou em suas subclasses, mas com algumas características:

Métodos Sobrecarregados são métodos que tem o mesmo nome, mas com argumentos diferentes, eles possuem estas características:

Não confunda métodos sobrescritos com sobrecarregados, com certeza eles testaram você para saber seus conhecimentos nisso.

Agora que você já sabe as regras para sobrescrita e sobrecarga de um método, iremos falar agora de Polimorfismo.

 

Variável de Referencia

A única maneira de acessar um objeto é usando uma variável de referência, um detalhe muito importante que você deve saber é que a variável de referência pode se referir a qualquer subtipo do objeto declarado.

 

Lembra daquela semântica que foi dito sobre herança? “É UM”. Então podemos tratar um objeto da classe filha como se fosse um objeto da classe pai.

Veja nesta Figura 01 de um código que já foi usado.

 

 

Figura 01.

 

De acordo com este código podemos dizer que:

 EsporteRadical esp = new Skate( );

 

Este código é totalmente permitido, pois afinal de contas Skate é um EsporteRadical.

 

Mas se fizéssemos ao contrário? Se tentássemos passar um objeto da classe pai a uma variável da classe filho? Caso isso ocorra o compilador irá “gritar” a JVM irá lançar um Exception.

 

Para que o compilador não “grite” em nossos ouvidos é necessário fazer um downcasting, informando-o qual objeto está debaixo da árvore da herança, veja.

Skate sk8 = (Skate) esp;

 

Polimorfismo

A primeira coisa que deve vir a sua cabeça quando se trata de polimorfismo é herança, ela tem que estar bem definido para que você possa entender o conceito, ou seja, quando a classe B herda de uma classe A, todos os membros (varáveis de instância e métodos) públicos ou protegidos de A passa a fazer parte de B. Usando outra abordagem é dizer que polimorfismo é usado usar um tipo genérico de variáveis de referencia para apontar para tipos de objetos mais específicos.

 

Vamos ver na prática como tudo funciona, olhe na Figura 02.

 

 

Figura 2.

 

Veja que usamos alguns conceitos apresentados até agora, vimos herança, que é fundamental pra que haja o polimorfismo, onde as classes Filha01 e Filha02 herdou as variáveis de instancia e métodos públicos da sua classe pai. Houve o uso correto de herança de construtores, e houve o uso correto do uso de variáveis de instância, onde tratamos um objeto da classe filha como se fosse um objeto da classe pai, à partir daí iniciá-se o polimorfismo.

 

Interface

Para o exame você precisará saber como implementar o uso correto de uma Interface, mas primeiro você precisa saber o que é uma Interface.

Interface é um contrato, onde você estará concordando em fornecer implementações válidas de cada método definido na Interface e que qualquer pessoa que souber como são os métodos da interface poderá chama-los na instância de uma classe que a implemente.

 

Uma Interface não pode implementar nenhuma classe, somente pode estender outra interface, e uma classe não estende uma Interface, mas sim à implementa, e podendo implementar quantas Interfaces desejar.

 

A classe não abstrata que implementar uma Interface deve declarar todos seus métodos não declarados. Lembrem-se todos os métodos das Interfaces são implicitamente públicos, então quando declará-los você precisará indicar explicitamente.

 

Variáveis e métodos static.

O que você precisa saber é que variáveis e métodos marcados com static pertencem a classe, ou seja, você pode usá-los sem uma variável de instancia.


Você nunca poderá acessar um variável não static de um método static, preste muita atenção pois ele te testarão.


Outro ponto que você deve lembrar é que métodos static não podem ser sobrecarregados. Porem eles podem ser redefinidos.

 

Retorno Covariantes

A partir de Java 1.5 você tem a possibilidade de modificar o tipo de retorno de um método, porém existe uma regra para que isso possa acontecer.

Acoplamento e Coesão

A definição de acoplamento e coesão é subjetivo para a definição do exame, mas o que você terá que saber é que uma boa estrutura de projetos Orientados a Objetos exige um acoplamento fraco e uma alta coesão. Mas o que é isso?


Acoplamento é o grau que uma classe depende, interage com outra classe. E coesão refere a finalidade que a classe foi criada.


Então quanto mais uma classe não depender de outra, isso significa que ela tem o baixo acoplamento, e o maior a especialização dela, isso significa alta coesão, você estará seguindo os princípios da Orientação a Objetos.

Artigos relacionados