polimorfismo. objetivos conceito de polimorfismo métodos sobrescritos (override) classes abstratas...
TRANSCRIPT
![Page 1: Polimorfismo. Objetivos Conceito de polimorfismo Métodos sobrescritos (override) Classes abstratas Métodos abstratos](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc17b497959413d8f0858/html5/thumbnails/1.jpg)
Polimorfismo
![Page 2: Polimorfismo. Objetivos Conceito de polimorfismo Métodos sobrescritos (override) Classes abstratas Métodos abstratos](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc17b497959413d8f0858/html5/thumbnails/2.jpg)
Objetivos
• Conceito de polimorfismo
• Métodos sobrescritos (override)
• Classes abstratas
• Métodos abstratos
![Page 3: Polimorfismo. Objetivos Conceito de polimorfismo Métodos sobrescritos (override) Classes abstratas Métodos abstratos](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc17b497959413d8f0858/html5/thumbnails/3.jpg)
Polimorfismo
Termo que caracteriza várias formas
![Page 4: Polimorfismo. Objetivos Conceito de polimorfismo Métodos sobrescritos (override) Classes abstratas Métodos abstratos](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc17b497959413d8f0858/html5/thumbnails/4.jpg)
Polimorfismo
Princípio pelo qual, a partir de uma subclasse, criam-se (instanciam-se)
objetos utilizando referências do tipo de uma superclasse.
![Page 5: Polimorfismo. Objetivos Conceito de polimorfismo Métodos sobrescritos (override) Classes abstratas Métodos abstratos](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc17b497959413d8f0858/html5/thumbnails/5.jpg)
Uso do Polimorfismo
• Sobrescrita de métodos (override)
• Métodos declarados na superclasse sendo redefinidos na subclasse com a mesma assinatura.
• Alterar o comportamento do método em uma subclasse.
![Page 6: Polimorfismo. Objetivos Conceito de polimorfismo Métodos sobrescritos (override) Classes abstratas Métodos abstratos](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc17b497959413d8f0858/html5/thumbnails/6.jpg)
Exemplo
Superclasse Desenho
Subclasses Quadrado e Triangulo.
Quadrado e Triangulo são
especializações da classe Desenho.
![Page 7: Polimorfismo. Objetivos Conceito de polimorfismo Métodos sobrescritos (override) Classes abstratas Métodos abstratos](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc17b497959413d8f0858/html5/thumbnails/7.jpg)
public class Desenho {
public void imprime ()
{
System.out.println("Figura não especificada");
}
}
![Page 8: Polimorfismo. Objetivos Conceito de polimorfismo Métodos sobrescritos (override) Classes abstratas Métodos abstratos](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc17b497959413d8f0858/html5/thumbnails/8.jpg)
public class Triangulo extends Desenho {
public void imprime ()
{
System.out.println("imprimindo triangulo");
}
}
![Page 9: Polimorfismo. Objetivos Conceito de polimorfismo Métodos sobrescritos (override) Classes abstratas Métodos abstratos](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc17b497959413d8f0858/html5/thumbnails/9.jpg)
public class Quadrado extends Desenho {
public void imprime ()
{
System.out.println("imprimindo quadrado");
}
}
![Page 10: Polimorfismo. Objetivos Conceito de polimorfismo Métodos sobrescritos (override) Classes abstratas Métodos abstratos](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc17b497959413d8f0858/html5/thumbnails/10.jpg)
public class Main {
public static void main(String[] args) {
int i;
Desenho AR[ ] = new Desenho[6];
AR[0] = new Desenho();
AR[1] = new Triangulo();
AR[2] = new Quadrado();
AR[3] = new Quadrado();
AR[4] = new Triangulo();
AR[5] = new Triangulo();
for (i=0; i<6; i++){
AR[i].imprime();
}
}
![Page 11: Polimorfismo. Objetivos Conceito de polimorfismo Métodos sobrescritos (override) Classes abstratas Métodos abstratos](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc17b497959413d8f0858/html5/thumbnails/11.jpg)
Classes Abstratas
• Característica principal: a partir dela não poderá ser feito nenhum tipo de instância.
• Têm em sua declaração um ou mais métodos abstratos.
![Page 12: Polimorfismo. Objetivos Conceito de polimorfismo Métodos sobrescritos (override) Classes abstratas Métodos abstratos](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc17b497959413d8f0858/html5/thumbnails/12.jpg)
Declaração de classes abstratas
• Uso da palavra reservada abstract
![Page 13: Polimorfismo. Objetivos Conceito de polimorfismo Métodos sobrescritos (override) Classes abstratas Métodos abstratos](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc17b497959413d8f0858/html5/thumbnails/13.jpg)
Declaração de classes abstratas
public abstract class Produto
![Page 14: Polimorfismo. Objetivos Conceito de polimorfismo Métodos sobrescritos (override) Classes abstratas Métodos abstratos](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc17b497959413d8f0858/html5/thumbnails/14.jpg)
Métodos abstratos
• Não tem corpo ou implementação e só pode estar numa classe abstrata.
• A classe que estende a classe abstrata é responsável em fazer a implementação dos métodos.
![Page 15: Polimorfismo. Objetivos Conceito de polimorfismo Métodos sobrescritos (override) Classes abstratas Métodos abstratos](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc17b497959413d8f0858/html5/thumbnails/15.jpg)
Declaração de métodos abstratos
abstract <tipo de retorno> <identificador>;
![Page 16: Polimorfismo. Objetivos Conceito de polimorfismo Métodos sobrescritos (override) Classes abstratas Métodos abstratos](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc17b497959413d8f0858/html5/thumbnails/16.jpg)
ExemploCriar a superclasse abstrata Funcionario com os
atributos nome e email. Criar o
método construtor com parâmetros e o método
abstrato imprime.
Criar a subclasse Medico com os atributos
especialidade e CRM. Elaborar o método
construtor com parâmetros e implementar o
método abstrato imprime.
![Page 17: Polimorfismo. Objetivos Conceito de polimorfismo Métodos sobrescritos (override) Classes abstratas Métodos abstratos](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc17b497959413d8f0858/html5/thumbnails/17.jpg)
Criar a subclasse Administrador com os atributos
departamento e numero de funcionarios.
Elaborar o método construtor com parâmetros e
Implementar o método abstrato imprime.
Criar o aplicativo TesteFuncionario.
Instanciar o objeto Medico e o objeto
Administrador. Chamar o método imprime para
cada objeto.
![Page 18: Polimorfismo. Objetivos Conceito de polimorfismo Métodos sobrescritos (override) Classes abstratas Métodos abstratos](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc17b497959413d8f0858/html5/thumbnails/18.jpg)
public abstract class Funcionario {
protected String Nome, email;
public Funcionario(String Nome, String email)
{
this.Nome=Nome;
this.email=email;
}
abstract void imprime();
}
![Page 19: Polimorfismo. Objetivos Conceito de polimorfismo Métodos sobrescritos (override) Classes abstratas Métodos abstratos](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc17b497959413d8f0858/html5/thumbnails/19.jpg)
public class Medico extends Funcionario {
private int CRM;
private String esp;
public Medico (String n, String e, int CRM, String esp) {
super (n, e);
this.CRM = CRM;
this.esp = esp;
}
public void imprime(){
System.out.println("Medico");
System.out.println("Nome: " + Nome);
System.out.println("Email: " + email);
System.out.println("CRM " + CRM);
System.out.println("Especialidade: " + esp);
}
}
![Page 20: Polimorfismo. Objetivos Conceito de polimorfismo Métodos sobrescritos (override) Classes abstratas Métodos abstratos](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc17b497959413d8f0858/html5/thumbnails/20.jpg)
public class Administrador extends Funcionario {
private int numero;
private String depto;
public Administrador (String n, String e, int numero, String depto) {
super (n, e);
this.numero = numero;
this.depto = depto;
}
public void imprime() {
System.out.println("Administrador");
System.out.println("Nome: " + Nome);
System.out.println("Email: " + email);
System.out.println("Numero de funcionarios " + numero);
System.out.println("Departamento: " + depto);
}
}
![Page 21: Polimorfismo. Objetivos Conceito de polimorfismo Métodos sobrescritos (override) Classes abstratas Métodos abstratos](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc17b497959413d8f0858/html5/thumbnails/21.jpg)
public class Main {
public static void main(String[] args) {
Medico Med1= new Medico("Plinio", "pl@gmail", 1234, "Oftalmo");
Administrador Adm1 = new Administrador("Maria", "mari@hotmail", 10, "Financas");
Med1.imprime();
Adm1.imprime();
}
}
![Page 22: Polimorfismo. Objetivos Conceito de polimorfismo Métodos sobrescritos (override) Classes abstratas Métodos abstratos](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc17b497959413d8f0858/html5/thumbnails/22.jpg)
Exercício
Criar a superclasse abstrata Funcionario com
os atributos protegidos nome e salario. Criar
métodos set e get para nome e salário.
Declarar o método método abstrato reajuste.
Criar a subclasse Vendedor com os atributos
regiao e comissao. Criar os métodos set e
get para região e comissão. Implementar o
método abstrato reajuste acrescentando 10% ao
valor do salario.
![Page 23: Polimorfismo. Objetivos Conceito de polimorfismo Métodos sobrescritos (override) Classes abstratas Métodos abstratos](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc17b497959413d8f0858/html5/thumbnails/23.jpg)
Criar a subclasse Secretaria com os
atributos idioma e departamento.
Criar os métodos set e get para idioma e
departamento.
Implementar o método abstrato reajuste
acrescentando 15% ao valor do salario.
Criar o aplicativo TesteFuncionario para
inicializar os atributos, chamar os
métodos reajuste e imprimir.
![Page 24: Polimorfismo. Objetivos Conceito de polimorfismo Métodos sobrescritos (override) Classes abstratas Métodos abstratos](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc17b497959413d8f0858/html5/thumbnails/24.jpg)
Exercicio 2Criar a superclasse Conta com o atributo
privado saldo. Elaborar um método construtor
com parâmetros. Definir um método debito
que debite o saldo. Definir um método credito
que credite o saldo. Criar o método get para o
saldo.
![Page 25: Polimorfismo. Objetivos Conceito de polimorfismo Métodos sobrescritos (override) Classes abstratas Métodos abstratos](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc17b497959413d8f0858/html5/thumbnails/25.jpg)
Criar a subclasse ContaEspecial com o
atributo privado limite.
Elaborar um método construtor com
parâmetros.
Redefinir o método debito: se o saldo
retornado pelo método get for maior que 0
debitar o valor senão debitar o limite.
Redefinir o método getSaldo retornando o
valor do saldo + o limite.
![Page 26: Polimorfismo. Objetivos Conceito de polimorfismo Métodos sobrescritos (override) Classes abstratas Métodos abstratos](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc17b497959413d8f0858/html5/thumbnails/26.jpg)
Criar a subclasse Poupança com o atributo
privado juros.
Elaborar um método construtor com
parâmetros.
Redefinir o método credito da seguinte forma:
O valorCredito = (getsaldo * juros ) + valor
Chamar o método credito da superclasse para
alterar o atributo.
![Page 27: Polimorfismo. Objetivos Conceito de polimorfismo Métodos sobrescritos (override) Classes abstratas Métodos abstratos](https://reader036.vdocuments.mx/reader036/viewer/2022062312/552fc17b497959413d8f0858/html5/thumbnails/27.jpg)
Criar o aplicativo TesteContas.
Instanciar uma conta poupança e uma conta
especial inicializando com o método
construtor com passagem de parâmetros.
Definir um valor para o debito e para o
credito das duas contas.
Imprimir o saldo das duas contas.