DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Easy Java Magazine ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!


Classes abstratas e interfaces - Revista easy Java Magazine 13

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 i






Conforme já estudamos em artigos anteriores, vimos que herança possibilita um alto grau de reutilização de código, na medida em que isola o que é comum entre as classes, separando-o do que é específico. Em termos de implementação, a utilização de herança torna o código mais legível, pois pode ser visualizada diretamente no código – simplesmente, através do uso da palavra-chave extends. Além disso, no entanto, algumas questões podem se apresentar quando estamos projetando uma aplicação. A primeira delas diz respeito à instanciação da superclasse da hierarquia, pois em muitas situações a classe pai é muito genérica e não justifica a criação de objetos do tipo correspondente. A segunda questão refere-se à implementação de comportamentos que são comuns a classes que não pertencem à mesma hierarquia, ou seja, como tratar isso de forma a manter o grau de reutilização de código.

Neste novo artigo estudaremos as respostas para essas perguntas, que serão dadas pela utilização de classes abstratas e interfaces. Além disso, estudaremos que o comportamento polimórfico é preservado mesmo quando implementamos os conceitos de classes abstratas e interfaces.

Antes de iniciar nosso estudo, precisamos observar que, neste artigo, sempre que nos referirmos a interfaces, estaremos falando genericamente do limite que separa dois componentes de software, e não de interface gráfica do usuário (GUI).

Classes Abstratas

Com o objetivo de iniciar a nossa discussão sobre classes abstratas, 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 esse problema está no uso de 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.

Segundo a definição no site da Oracle, uma classe abstrata é uma classe declarada com o modificador abstract – podendo ou não incluir métodos abstratos. Isso nos leva à necessidade de definir método abstrato. Um método abstrato é aquele declarado com o modificador abstract e sem corpo – ou seja, sem as chaves e seguido de ponto-e-vírgula, conforme o exemplo que mostramos abaixo. Note que um método abstrato deve obrigatoriamente declarar o modificador "



ATENÇÃO! A exibição deste artigo foi interrompida.


  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Easy Java Magazine ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!






    1 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Luciano Bopp
Parabéns Carlos Araújo, ótimo este artigo, muito útil e escrito de forma didática.
[há +1 mês] - Responder

 



Publicidade
Autor
Carlos Araújo

É professor do curso de Sistemas de Informação no Centro Universitário Luterano de Santarém – Pará. Leciona Estruturas de Dados e Linguagem de Programação Orientada a Objetos usando Java, desenvolve sistemas há 20 anos e é certificado SCJP. Mantém o blog http://professorcarlos.blogspot.com.


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
0   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03