Classes abstratas e interfaces em Java
Trata de conceitos e a implementação de classes abstratas e interfaces. Apresenta recursos avançados que permitem criar programas mais flexíveis e extensíveis.
De que se trata o artigo: Trata de conceitos e a implementação de classes abstratas e interfaces. Apresenta recursos avançados que permitem criar programas mais flexíveis e extensíveis, os quais possibilitam a aplicação do lema “programar pensando na interface e não na implementação”.
Em que situação o tema é útil: É útil quando o desenvolvedor busca aumento de produtividade e escrever classes que separam interface de implementação, ou em outras palavras, desacoplam “o que” deve ser implementado do “como” imple-mentar. Estes são temas que atendem a necessidade de se criar módulos com baixo acoplamento.
Neste artigo serão apresentadas as classes abstratas e as interfaces. Estes temas serão expostos através de problemas que justificam a aplicação dos conceitos e por meio de exemplos – incluídos os modelos de classes – que serão implementados integralmente. As regras e características dessas duas importantes ideias da orientação a objetos serão cuidadosamente detalhadas para prover o desenvolvedor da base de conhecimento necessária para implementá-las.
Veremos que, principalmente as interfaces, permitem explorar com mais eficiência o polimorfismo, pois, como afirma Kathy Sierra, somente com as interfaces é possível atingir maior flexibilidade e extensibilidade no desenvolvimento de aplicações. Observe que mais uma vez nesta série de artigos, voltamos a falar deste conceito essencial, pois o polimorfismo é uma das três características mais importantes da orientação a objetos, juntamente com a abstração e a herança.
Classes Abstratas
Com o objetivo de iniciar a nossa discussão sobre classes abstra-tas, vamos analisar a hierarquia representada através de um diagrama de classes UML (Unified Modeling Language) da Figura 1.
Baseado em nosso conhecimento de geometria é possível afirmar que, em uma aplicação, podemos instanciar Circulo, Paralelogramo, Quadrado, Retangulo e Trapezio. Pois, dessas classes, conhecemos claramente suas características, que são definidas pelos atributos, e o seu comportamento, que é dado pelos métodos. Por outro lado, qual é a forma de uma Figura? E de um Quadrilatero? Sabemos como calcular sua área ou seu perímetro? Ou seja, uma Figura ou um Quadrilatero possuem definições muito vagas, levando-nos a concluir que não faz sentido instanciar objetos desses tipos. Mas sabemos que – pelo que vimos nos artigos anteriores – da maneira que estudamos as implementações de classes, é possível criar objetos do tipo Figura ou Quadrilatero.
Assim, nosso desafio agora é impedir que uma classe assim, com definições bastante genéricas, seja instanciada. E a resposta para este problema está no uso das classes abstratas.
Classes abstratas são aquelas que não podem ser instanciadas, mas podem ser estendidas. Na verdade, a única finalidade de uma classe abstrata, é ser superclasse de uma hierarquia. Apenas através da especialização elas podem ser utilizadas. "
[...] continue lendo...Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Vídeo