27
Polimorfismo

Polimorfismo. Objetivos Conceito de polimorfismo Métodos sobrescritos (override) Classes abstratas Métodos abstratos

Embed Size (px)

Citation preview

Page 1: Polimorfismo. Objetivos Conceito de polimorfismo Métodos sobrescritos (override) Classes abstratas Métodos abstratos

Polimorfismo

Page 2: Polimorfismo. Objetivos Conceito de polimorfismo Métodos sobrescritos (override) Classes abstratas Métodos abstratos

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

Polimorfismo

Termo que caracteriza várias formas

Page 4: Polimorfismo. Objetivos Conceito de polimorfismo Métodos sobrescritos (override) Classes abstratas Métodos abstratos

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.