Top Banner
Polimorfismo
27

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

Apr 22, 2015

Download

Documents

Internet User
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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.