Buscar

USJT-2015-CP&SI-PPINT-Aula04-Sobrecarga, Sobreposição e Polimorfismo

Prévia do material em texto

USJT – 2015 – CP & SI – PPINT – Práticas de Programação Integrada 
 
Professores: Robson Calvetti, Sérgio Bonato, Hamilton Costa, Liliane Santana e Carlos Dutra. 
 
Aula: 04 
Assunto: Polimorfismo, Sobrecarga e Sobreposição em Java. 
 
Conceitos Básicos abordados pelo Professor: 
Polimorfismo, Sobrecarga (Overload) e Sobreposição (Override). 
 
Exemplo A: Sobrecarga (Overload) 
 
Supondo a existência dos métodos abaixo, em uma classe "Teste": 
 
 public int calcula(int x) 
 { 
 int y; 
 
 y = x * x; 
 
 return y; 
 } 
 
 public int calcula(int a, int b) 
 { 
 int c; 
 
 c = a + b; 
 
 return c; 
 } 
 
 
A criação de um objeto de Teste e a posterior utilização do método em questão seria feita assim: 
 
 Teste t = new Teste(); 
 . 
 . 
 . 
 
 int d,e; 
 
 d = t.calcula(10); 
 
 e = t.calcula(5,10); 
 
Verificar que “d” e “e” são resultados da execução de métodos diferentes. 
 
O que define qual método será utilizado é a assinatura de cada um deles. 
 
Notar que “d” será carregado com 100 e “e” será carregado com 15. 
 
Neste caso, diz-se que o método “calcula” sofreu SOBRECARGA. 
 
 
 
Exemplo B: Sobreposição (Override) 
 
A definição idêntica de métodos não é possível em uma mesma classe, somente em classes diferentes. 
 
Supondo a existência dos métodos abaixo, nas classes “Um” e “Dois”: 
 
 public class Um 
 { 
 public int calc(int x) 
 { 
 return (x * x); 
 } 
 } 
 
 
 public class Dois extends Um 
 { 
 public int calc(int x) 
 { 
 return (x + 5); 
 } 
 } 
 
No trecho abaixo, em uma outra classe: 
 
 . 
 . 
 . 
 
 
 Um d = new Um(); 
 
 Dois e = new Dois(); 
 
 int a,b; 
 
 a = d.calc(10); 
 
 b = e.calc(10); 
 
 . 
 . 
 . 
 
Notar que “a” receberá o valor 100 e “b” receberá o valor 15. 
 
Neste caso, diz-se que houve SOBREPOSIÇÃO. 
 
 
 
Observação: 
- A sobrecarga e a sobreposição permitem o POLIMORFISMO. 
 
 
 
 
 
 
 
 
 
 
 
 
Atividade Prática 1: 
Dadas as classes “Pessoa”, “FuncionarioAposentado” e “Funcionario”, sabendo que existem os 
atributos “salario’, “salarioAposentadoria”, “nome”, “idade” e “cargo” e sabendo que o método 
“categoria”, dado abaixo, pertence à classe “Funcionario”, pede-se: 
 
a) Construa o Diagrama de Classes UML; 
 
b) Construa as classes em Java, lembrando de considerar construtores e incluir alguns métodos, 
 implementando pelo menos um encapsulamento; 
 
c) Monte um programa de acesso; 
 
d) Modifique o código para quem seja implementado o Polimorfismo (Sobrecarga e 
Sobreposição). 
 
Dado o método “categoria”: 
 
public int categoria() 
 { 
 if( idade > 20) 
 { 
 return 30; 
 } 
 else 
 { 
 return 10; 
 } 
 } 
 
Atividade Prática 2: 
 Dadas as classes Shape, TwoDimensionalShape, Circle, Square, Triangle, 
ThreeDimensionalShape, Sphere, Cube e Tetrahedron apresentadas no diagrama de classes abaixo, 
implementar o polimorfismo (Sobrecarga e Sobreposição) para o cálculo de área e perímetro (duas 
dimensões) e de volume e área total das faces (três dimensões), para entradas, cálculos e apresentações 
com medidas em números inteiros, apenas, e em ponto flutuante, distintamente: 
 
 
 
 Criar a classe de teste, com a entrada e apresentação dos valores de todos os atributos 
envolvidos, respectivamente, via teclado e via monitor.

Outros materiais