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

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

1. 2 Programação Orientada a Objetos Prof. Maurício Rodrigues de Morais

Apresentações semelhantes


Apresentação em tema: "1. 2 Programação Orientada a Objetos Prof. Maurício Rodrigues de Morais"— Transcrição da apresentação:

1 1

2 2 Programação Orientada a Objetos Prof. Maurício Rodrigues de Morais mmorais.fac4@gmail.com

3 3 Aula 6 Polimorfismo

4 4 Conteúdo  Polimorfismo  Conceito  Exemplos de Polimorfismo  Entendendo o Comportamento  Outros detalhes de implementação  Casting  Método instancef() Livro-texto: Capítulo 10

5 5 Herança  Conceito Polimorfismo, que significa “Muitas Formas”, é uma característica de OO que permite que classes filhas sejam armazenadas em variáveis declaradas com o tipo do pai, embora continuem respondendo pela execução dos seus métodos. Um exemplo deve deixar mais claro: Imagine um hierarquia de classes Animal, Peixe, Pássaro. Peixe e Pássaro são animais e deste herdam um método move(). O método mover() é “sobrecarregado” nas classes filhas de modo a adaptar o funcionamento ao tipo de animal. Nesse cenário, podemo criar um vetor de Animais, e nele armazenar Peixes e Pássaros. Além disso, se chamarmos o método mover() de algum animal na lista, o que será executado depende do tipo do animal (Peixe ou Pássaro) que estiver sendo movido.

6 6 Polimorfismo  Exemplo de Polimorfismo Considere uma classe FiguraGeometrica. Considere ainda que ela tem algumas filhas: Quadrado, Círculo, Triângulo. Imagine que criaremos um vetor de Figuras, onde guardaremos Quadrados, Círculos e Triângulos; em dado momento, varreremos esse vetor e pediremos que a área das figuras seja calculada. Qual método será executado, O do pai, ou o das Filhas? O método das filhas será executado. Uma vez que é um objeto do tipo filha que está armazenado naquela posição de memória. Vejamos o código de exemplo.

7 7 Polimorfismo public static void main(String args[ ]){ FiguraGeometrica[ ] figuras = new FiguraGeometrica[10]; for(int i = 0; i < 10; i++){ if( (i % 3) == 0) { figuras[i] = new Quadrado(i); } else if((i % 3) == 1) { figuras[i] = new Círculo(i); } else { figuras[i] = new Triangulo(i, i); } System.out.println(“A área da figura é: “ + figuras[i].area()); }

8 8 Polimorfismo  Entendendo o Comportamento  A partir do exemplo anterior podemos entender melhor o funcionamento do Polimorfismo:  É possível declarar uma variável com um determinado tipo e armazenar nesse espaço de memória um objeto de um tipo filho. Isso funciona porque o filho herda todo o comportamento do pai, possuindo todos os seus métodos.  No momento em que há uma chamada de método, o programa vai até a posição de memória onde está armazenado o objeto e chama o método correspondente. Como o objeto que está lá é um filho, o método executado é o do filho.

9 9 Polimorfismo  Entendendo o Comportamento (continuação)  Porém, como métodos que são visíveis e podem ser chamados, estão relacionados apenas os métodos do pai (já que a variável foi declarada com o seu tipo), não os do filho. Assim, não será possível chamar diretamente um método que o pai não tenha (seja só do filho).

10 10 Polimorfismo  Outros detalhes de implementação. Para resolver o problema citado anteriomente, podemos usar outra característica da linguagem Java chamada casting. Um casting é quando dizemos, explicitamente, ao programa para considerar que um determinado objeto é de um determinado tipo, ignorando qual o tipo pelo qual foi declarado. Caso o programador se engane, um erro será gerado em tempo de execução. Exemplo: Quadrado quad = (Quadrado)figuras[0]; Além disso, existe uma função Java chamada instanceof que informa se um objeto pertence ou não a uma classe, de modo facilitar o trabalho de casting. Desse modo, é possível testar se uma classe é mesmo de um determinado tipo antes de fazer casting dela.

11 11 Polimorfismo  Exercícios  Crie uma família de classes relacionadas por heranca que represente as seguintes entidades: animais, vertebrados, invertebrados, mamiferos, peixes, aracnideos, aves, cachorro, galinha, vaca, sardinha, aranha. Crie ainda, em cada classe, um método mover que deve retornar uma String com o texto da forma de movimento (por exemplo, peixe: nadar, vaca: andar, etc...). Crie também uma classe com método main que preencha um vetor com animais aleatoriamente e depois execute um por um seus métodos mover.  Altere o exercício sobre contas corrente e contas corrente especias feito em uma aula anterior para, além de incluir herança, possuir um método polimórfico toString, que mostra os dados da conta. Crie ainda um Classe com método main para testá- la nos moldes do exercício anterior.

12 12 Polimorfismo  Exercício Avaliado: Nos moldes do primeiro exercício da transparência anterior, crie um método mover na família de classes que representa as entidades: veiculo, veiculoAereo, veiculoTerrestre, veiculoMarinho, carro, aviao, moto, barco, carroAnfibio, jetski, triciclo. E teste-o.  Exercícios para casa 1.Livro Deitel - Exercícios do Cap.10


Carregar ppt "1. 2 Programação Orientada a Objetos Prof. Maurício Rodrigues de Morais"

Apresentações semelhantes


Anúncios Google