Interface e implementação da interface  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
paulofernandesjr
JavaEvangelist
[Avatar]
Membro desde: 04/10/2007 12:36:58
Mensagens: 474
Localização: São Paulo - Capital
Offline

Bom dia

Gostaria de saber qual a vantagem de se criar uma classe abstrata ou uma interface e depois implementá-la?

Quais são meus ganhos em realizar dessa forma? Onde "devo" usar essa forma?

Espero que tenha ficado claro minha dúvida

Obrigado

Paulo Fernandes
Desenvolvedor Java

Aprenda CSS
Twitter
[Email] [WWW] [MSN]
gustavorozolin
JavaBaby
[Avatar]

Membro desde: 11/03/2008 15:26:34
Mensagens: 96
Offline

paulofernandesjr wrote:Bom dia

Gostaria de saber qual a vantagem de se criar uma classe abstrata ou uma interface e depois implementá-la?

Quais são meus ganhos em realizar dessa forma? Onde "devo" usar essa forma?

Espero que tenha ficado claro minha dúvida

Obrigado


É o seguinte quando vc tem um ou varios metodos q toda vez que vc criar uma subclasse ele tera q ser sobrescrito eh interessante usar classes abstratas ou quando sua classe naum puder ser instanciada, apenas herdada.

ex:

Espero ter ajudado
[MSN]
sergiotaborda
GUJ Expert
[Avatar]

Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline

paulofernandesjr wrote:Bom dia

Gostaria de saber qual a vantagem de se criar uma classe abstrata ou uma interface e depois implementá-la?

Quais são meus ganhos em realizar dessa forma? Onde "devo" usar essa forma?



É dificil responder a essa pergunta porque os ganhos não são tecnologicos, são de modelagem.

Um conceito é colocado como uma interface se ele representa uma atividade ou um conjunto de ações. Por exemplo, Clonable representa que objeto pode ser clonado, Serializable representa que pode ser serializado. Nenhuma destas interfaces tem métodos. Outras como Collection ou List tem métodos que atuam sobre um conjunto de objetos. Vc usa uma interface quando quer desacoplar o contrato (a definição dos métodos) da implementação. Vc declara apenas o que o objeto poderá fazer e não o como. O como cabe apenas à implementação especifica.

Interfaces podem ser acopladas a outros objetos, portanto vc poderia criar um Pedido , por exemplo, que implemente Collection<Item> , poderia tecnologicamente fazer isto embora não faça muito sentido na modelagem. Repare que ao implementar collection , a classe Pedido ainda pode herdar de alguma outra classe que representa a sua hierarquia direta. Interfaces forma hierarquias indiretas ou diretas conforme se usem.

Classes abstratas servem exacamente para a mesma coisa que interface a diferença é que elas causam hierarquia direta (É-UM) pois a classe derivada não tem como herdar de outrem.

Ou seja, vc usa classes abstratas sempre que vc quer formar que os filhos sejam daquele tipo, e interfaces quando vc quer permitir que sejam de outros tipos.

Classes abstratas são tecnologicamente usadas para implementar uma série de padrões como Template Method, por exemplo. Contudo isso advém do entendimento e da modelagem do padrão. Neste caso a classe abstrata é uma ferramenta para facilitar o trabalho mas não é necessária se olharmos o modelo.

outro tipo de classe abstrata são as classes abstratas que implementam uma interface com objetivo de simplificar as implementações da interface. Por exemplo AbstractList e AbstractCollection são exemplos. Isto é feito para simplificar o trabalho do programador para implementar as interfaces e não para alterar o modelo ou a modelagem. contudo, ao usar uma classe abstrata estamos forçando que quem a herdar terá sua hierarquia direta definida automaticamente cujo topo é a interface implementada pela classe abstrata.

Ambos são usado num caso de 1-para-muitos em que vc tem um contrato e muitas implementações possíveis.

Criando sua própria API de Validação



Blog do MiddleHeaven
[WWW]
paulofernandesjr
JavaEvangelist
[Avatar]
Membro desde: 04/10/2007 12:36:58
Mensagens: 474
Localização: São Paulo - Capital
Offline

Entendi, muito obrigado pela ajuda

Paulo Fernandes
Desenvolvedor Java

Aprenda CSS
Twitter
[Email] [WWW] [MSN]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20578
Localização: Curitiba/PR
Offline

Dá uma lida:
http://www.guj.com.br/posts/list/55387.java#290673

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team