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 Aulas 7 e 8 Classes Abstratas e Interfaces Java

4 4 Conteúdo  Classes Abstratas  Conceito  Definição de Métodos Abstratos  Implementação de Métodos Abstratos  Exercícios  Interfaces Livro-texto: Capítulo 10

5 5 Classes Abstratas  Conceito Para entender o conceito de classe abstrata, é necessário primeiro entender o conceito de classe concreta. Uma classe concreta é toda aquela da qual se planeja e se pode instanciar objetos. As classes abstratas, ao contrário, são aquelas das quais não se planeja instanciar objetos. Elas são criadas, dependendo do aplicativo, como foco exclusivamente na herança. Seu objetivo é definir um conjunto de atributos que serão herdados e/ou métodos que deverão ser implementados pelas classes que a estendam. Por exemplo, uma superclasse FiguraGeometrica pode definir atributos como localização, cor e cor da borda, comuns a todas as FigurasGeométricas específicas tais como Quadrado, Círculo e Retângulo. Também pode definir um comportantento comum, como os métodos mover, desenhar e redimensionar. Mas, esses deverão ser implementados em cada classe específica.

6 6 Classes Abstratas  Definição de Métodos Abstratos Considere o exemplo já dado, a classe FiguraGeometrica. Sua codificação como classe abstrata ficaria assim: public abstract class FiguraGeometrica{ int coordenada_x; int coordenada_y; String corInterna; String corBorda; public abstract void pintar(); public abstract void mover(); public abstract void redimensionar(int razao); }

7 7 Classes Abstratas  Definição de Métodos Abstratos (continuação) A definição de um método como abstrato é feita pela simples adição da palavra abstract antes da definição do tipo de retorno do método. Métodos abstratos não possuem implementação e qualquer classe que possua métodos abstratos deve ser definida como classe abstrata.

8 8 Classes Abstratas  Definição de Métodos Abstratos (continuação) Considere agora algumas das classes filhas de FiguraGeometrica: Quadrado, Círculo, Triângulo. Qualquer uma delas que estenda FiguraGeometrica herdará os atributos ali definidos. Além disso, terá OBRIGATORIAMENTE que, ou implementar os métodos abstratos, ou redefini-los como abstratos para serem implementados por outra classe descendente. Seja qual for o caso, a classe FiguraGeometrica acaba por criar um padrão que terá que ser seguido por todos os seus filhos.

9 9 Classes Abstratas  Implementação de Métodos Abstratos Como já foi dito, métodos abstratos não possuem implementação. Porém, quando herdados por uma classe filha, devem ser implementados nessas classes. A implementação de um método abstrato da classe pai na classe filha é obrigatória (a única exceção é se o método for redeclarado abstrato). Para isso, o procedimento é semelhante ao de uma sobrescrita comum de método. A implementação deve ter a mesma assinatura do método na classe pai. Com isso, podemos declarar variáveis do tipo da classe pai (isso mesmo, não podemos criar instâncias, mas podemos declarar variáveis do tipo da classe abstrata) e preenchê- las com objetos da classe filho, utilizando polimorfismo.

10 10 Classes Abstratas  Exercícios  Como no exercício da aula passada, 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...). Porém, dessa vez, defina que classes devem ou não ser abstratas e que métodos devem ou não ser abstratos. 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.  Analise o exercício sobre contas corrente e contas corrente especias feito em uma aula anterior para, verificar se existem ou não classes e métodos abstratos, 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.

11 11 Herança  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. Utilize o conceito de classe abstrata e justifique-o. Teste suas classes como no exercício anterior.  Exercícios para casa 1.Livro Deitel - Exercícios do Cap.10

12 12 Interfaces Uma interface é uma especificação explícita de um conjunto de métodos, que são implementados por uma classe Uma determinada classe pode implementar um número ilimitado de interfaces (herança múltipla) Interface é uma expressão de projeto enquanto que uma classe é uma combinação de projeto e implementação

13 13 Interfaces Nas interfaces, os métodos são declarados sem nenhum corpo Para implementar uma interface, a classe tem que implementar os conjuntos de métodos declarados Esses métodos devem corresponder exatamente às assinaturas dos método da interface

14 14 Declaração interface interface nome { tipo-retornado nome-metodo1(lista-parametros); tipo-retornado nome-metodo2(lista-parametros);... tipo nome-var1 = valor; tipo nome-var2 = valor;... } interface Chamada { void proc1 (int param); }

15 15 Declaração implements class nomeclasse [extends superclasse] [implements interface0 [,interface1...] } { corpo-da-classe } class Cliente implements Chamar{ void proc1 (int p) { System.out.println(“método chamada com “ + p); }

16 16 Declaração implements class Cliente implements Chamar{ void proc1 (int p) { System.out.println(“método Chamar com “ + p); } class TestaInterface{ public static void main (String args[ ]){ Chamar c = new Cliente( ); c.(42); }


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

Apresentações semelhantes


Anúncios Google