Programação Orientada à Objetos com java Prof. Dr. Alexandre L. Rangel
Classes Abstratas 2
Programação Orientada à Objetos Dá-se importância aos antepassados quando já não temos nenhum. François Chateaubriand 3
Classes Abstratas Usamos a palavra chave abstract para impedir que ela possa ser instanciada. Esse é o efeito direto de se usar o modificador abstract na declaração de uma classe. Não poder ser instanciada, significa que não há objetos que possam ser construídos diretamente de sua definição. 4
Classes Abstratas Por exemplo, a compilação do seguinte trecho de código: 5
Classes Abstratas Geraria a seguinte mensagem de erro: 6
Classes Abstratas Normalmente, elas definem um grupo de funcionalidades das quais pelo menos uma está esecificada mas não está definida ou seja, contém pelo menos um método abstrato. A implementação destes métodos fica a cargo das classes Filhas ou classes Finais. (SOMERA b, 2016) 7
Métodos Abstratos 8
Métodos Abstratos Um método abstrato não cria uma definição, mas apenas uma declaração de um método que deverá ser implementado em uma classe derivada. Se esse método não for implementado na classe derivada, esta permanece como uma classe abstrata mesmo que não tenha sido assim declarada explicitamente. 9
Métodos Abstratos Assim, para que uma classe derivada de uma classe abstrata possa gerar objetos, os métodos abstratos devem ser definidos em classes derivadas: 10
Métodos Abstratos 11
Mas, como declarar um método abstrato? 12
Métodos Abstratos Às vezes, não fica claro como declarar um método abstrato. Basta escrever a palavra chave abstract na assinatura do mesmo e colocar um ponto e vírgula em vez de abre e fecha chaves! 13
Exemplo 14
Classes Abstratas 15
Classes Abstratas 16
Exercício 17
Programação Orientada à Objetos 18
Programação Orientada à Objetos 19
Referências 20
Referências DEITEL, Paul; DEITEL, Harvey. Programação orientada a objetos: polimorfismo. In: DEITEL, Paul; DEITEL, Harvey. Java: Como Programar. 8. ed. São Paulo: Pearson Education, 2010. Cap. 10. p. 304-331. GENARI, Maria Cristina. Minidicionário Saraiva de Informática. São Paulo: Saraiva, 2003. 555 p. GOES a, Wilson Moares. Diagrama de Classes. In: GOES, Wilson Moares. Aprenda UML por meio de estudo de casos. São Paulo: Novatec, 2014. Cap. 5. p. 132-177. b, Wilson Moares. Introdução à Análise e ao Projeto Orientados a Objetos. In: GOES, Wilson Moares. Aprenda UML por meio de estudo de casos. São Paulo: Novatec, 2014. Cap. 2. p. 23-28. GUEDES, Gilleanes T. A.. Orientação à Objetos. In: GUEDES, Gilleanes T. A.. UML 2: Uma Abordagem Prática. São Paulo: Novatec, 2011. Cap. 2. p. 43-50. 21
Referências RICARTE, Ivan Luiz Marques. Fundamentos da programação orientada a objetos. In: RICARTE, Ivan Luiz Marques. Programação Orientada a Objetos: Uma Abordagem com Java. Campinas: Unicamp, 2001. Cap. 1. p. 3-6. Disponível em: <http://www.dca.fee.unicamp.br/cursos/poojava/aulas/poojava.pdf>. Acesso em: 03 ago. 2016. SANDERS, William. Aprendendo Padrões de Projeto em PHP: Programação Orientada A Objetos para Projetos Dinâmicos. São Paulo: Novatec, 2013. SOMERA a, Guilherme. Princípio de orientação a objetos. In: SOMERA, Guilherme. Treinamento Profissional em Java: Aprenda a programar nesta poderosa linguagem! São Paulo: Digerati Books, 2006. Cap. 2. p. 11-15. b, Guilherme. A Linguagem Java. In: SOMERA, Guilherme. Treinamento Profissional em Java: Aprenda a programar nesta poderosa linguagem! São Paulo: Digerati Books, 2006. Cap. 3. p. 19-57. 22
Referências WALNUM, Clayton. Fundamentos da Linguagem Java: Conceitos de Programação Orientada a Objetos. In: WALNUM, Clayton. JAVA em Exemplos: A maneira mais fácil de aprender a programar para a Web!. São Paulo: Makron Books, 1997. Cap. 4. p. 41-52. WIKILIVROS a. Java/Herança. 2016. Disponível em: <https://pt.wikibooks.org/wiki/java/herança>. Acesso em: 3 ago. 2016. b. Programação Orientada a Objetos/Introdução. 2016. Disponível em: <https://pt.wikibooks.org/wiki/programação_orientada_a_objetos/introdução>. Acesso em: 03 ago. 2016. 23
Referências WIKIPEDIA a. Atributo (programação). 2016. Disponível em: <https://pt.wikipedia.org/wiki/atributo_(programação)>. Acesso em: 28 jul. 2016. b. Edsger Dijkstra. 2016. Disponível em: <https://pt.wikipedia.org/wiki/edsger_dijkstra>. Acesso em: 02 ago. 2016. c. Orientação a objetos. 2016. Disponível em: <https://pt.wikipedia.org/wiki/orientação_a_objetos>. Acesso em: 3 ago. 2016. WIKIQUOTE. Talk:Edsger W. Dijkstra. 2016. Disponível em: <https://en.wikiquote.org/wiki/talk:edsger_w._dijkstra>. Acesso em: 02 ago. 2016. 24
Obrigado Prof. Dr. Alexandre L Rangel www.alexandrelrangel.blogspot.com www.facebook.com/alexandrelrangel profalrangel@gmail.com @alelrangel 25