A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Capítulo 9 (continuação)

Apresentações semelhantes


Apresentação em tema: "Capítulo 9 (continuação)"— Transcrição da apresentação:

1 Capítulo 9 (continuação)
Polimorfismo 1

2 Polimorfismo Upcast Downcast Operador instanceof Polimorfismo 2

3 Upcast (relacionamento “é-um”)
new ContaCorrente() new Conta() new ContaPoupanca() c (Conta)

4 Upcast Conta c; c = new Conta(); c = new ContaPoupanca(); c = new ContaCorrente(); 4

5 Upcast Conta c = c.setNumero(1005); c.setNome(“Manuel”);
new Conta() Conta c = c.setNumero(1005); c.setNome(“Manuel”); new ContaCorrente() new ContaPoupanca() Métodos presentes na classe Conta podem ser normalmente utilizados sobre um objeto contido numa variável do tipo Conta. 5

6 Upcast Conta c = c.debitarTarifa(10.0);
new Conta() Conta c = c.debitarTarifa(10.0); new ContaCorrente() new ContaPoupanca() Não permitido Métodos ausentes na classe Conta não podem ser utilizados por uma variável mesmo que o objeto contido nela possua tal método. 6

7 Upcast / Downcast ContaCorrente cc = new ContaCorrente(); . . . . . .
Conta c = cc; Upcast Conta c = new ContaCorrente(); ContaCorrente cc = c; ContaCorrente cc = (ContaCorrente) c; Não permitido Ok Downcast 7

8 Operador instanceof Conta c = ; ContaCorrente cc; /* * Se a conta em questão for uma conta corrente, * debita R$10,00 de tarifa. */ if (c instanceof ContaCorrente) { cc = (ContaCorrente) c; cc.debitarTarifa(10.0); } 8 8

9 Polimorfismo Conta c = c.retirar(500.0);
new Conta() Conta c = c.retirar(500.0); new ContaCorrente() new ContaPoupanca() Deve-se cobrar o CPMF? Cada objeto executa o seu próprio método conforme o tipo daquele objeto e independente do tipo de variável que está sendo utilizada. 9

10 Polimorfismo Run-time binding
O “run-time binding” ou “dynamic binding” ou “late binding” (ligação tardia) define a capacidade que a linguagem de programação tem de, em tempo de execução, descobrir que tipo de objeto está na memória naquele momento, tratando-o conforme foi definido para aquele tipo.

11 Exercício A partir das 4 classes abaixo fornecidas pelo instrutor, crie uma classe executável seguindo a especificação do próximo slide FiguraGeometrica getArea() Quadrado lado getArea() Circulo raio getArea() Triangulo base altura getArea()

12 Exercício (continuação)
Esta classe executável deverá criar um array de FiguraGeometrica conforme abaixo: FiguraGeometrica[ ] listaFiguras = { new Quadrado(4), new Triangulo(3, 4), new Quadrado(6.5), new Circulo(2), new Triangulo(6.5, 10) }; A seguir, o programa deverá exibir a área de cada figura pertencente ao array e, ao fim, deverá exibir a quantidade de quadrados no array. O resultado deverá ser exibido conforme o próximo slide.

13 Exercício (continuação)
A classe a ser criada deverá exibir: Area da figura: 16.0 Area da figura: 6.0 Area da figura: 42.25 Area da figura: Area da figura: 32.5 Total de quadrados: 2


Carregar ppt "Capítulo 9 (continuação)"

Apresentações semelhantes


Anúncios Google