Classe abstrata - Métodos obrigatórios (?)  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
andrestrindade
JavaTeenager
[Avatar]

Membro desde: 01/09/2008 14:06:23
Mensagens: 150
Offline

Pessoal, tenho uma dúvida bem simples.
Não costumo utilizar classes abstratas, contudo tenho uma classe em meu sistema que faz operações de CRUD, e é o que preciso.
Porém, o meu CRUD não terá exclusão, gostaria de utilizar todos métodos da classe abstrata que tem operações de CRUD sem implementar o método de exclusão.

Pergunta:
Há como eu fazer isso, sem criar o método de exclusão e deixa-lo "em branco" - ou mesmo transformar minha classe em abstrata e criar outra classe que utiliza esta extends a classe que criei?


Obrigado.

Quanto mais aprendo, percebo a vasta gama de conhecimentos que ainda não possuo.
InsaneChess
JavaTeenager
[Avatar]

Membro desde: 22/04/2010 23:02:42
Mensagens: 194
Localização: São Paulo, SP
Offline

Implemente a classe abstrata de CRUD.
Porém na implementação deixe o método de exclusão em branco e de preferencia com um comentário curto e objetivo sobre o por quê não foi implementado exclusão nele.

MSN: diogo_chess@hotmail.com
Vamos estudar Java!!!
[MSN]
andrestrindade
JavaTeenager
[Avatar]

Membro desde: 01/09/2008 14:06:23
Mensagens: 150
Offline

Olá, a pergunta foi se há utilizar a classe abstrata sem fazer isso - não é desejável deixar o "lixo" na classe, o método em branco!

Obrigado

Quanto mais aprendo, percebo a vasta gama de conhecimentos que ainda não possuo.
nel
JWizard
[Avatar]

Membro desde: 01/10/2009 13:51:10
Mensagens: 2364
Offline

O basico de um CRUD é, "Buscar, Editar, Criar e Remover". Se não precisa do remover e tem sua classe abstrata, vejo duas alternativas:

- Não coloca nenhum tipo de implementação no excluir da classe filha

- Declara o método excluir sem que ela seja abstrato (não recomendo)

"Se houver a terceira guerra mundial eu não sei como será mas a quarta será com paus e pedras" Albert Einsten.
x@ndy
Virtual Machine Man
[Avatar]

Membro desde: 07/01/2011 12:39:32
Mensagens: 554
Localização: Porto Alegre
Offline

andrestrindade wrote:Olá, a pergunta foi se há utilizar a classe abstrata sem fazer isso - não é desejável deixar o "lixo" na classe, o método em branco!

Obrigado

Não tem como. Você é obrigado a fazer isso!

Outra coisa isso não é deixar lixo! Recomendo que você leia o livro Use a Cabeça - Padrões de Projeto!

Nesses casos você pode fazer como os colegas falaram e deixar o método em branco ou levantar uma exeção (UnsupportedOperationException) o que eu recomendo.

Você vai se deparar em muitos casos com isso. Se você, por exemplo, implementar o padrão State, fazer esse tipo de operação é obrigatório. Então não pense que você está fazendo algo errado.

Software e Tecnologia:http://tekhton.blogspot.com
"Um software desprovido de contexto na base do seu design é, na melhor das hipóteses, um mecanismo que realiza coisas úteis sem explicar suas ações"
[MSN]
jroberto.nsc
JavaChild
[Avatar]

Membro desde: 26/11/2009 12:28:34
Mensagens: 140
Localização: Goiânia
Offline

Estenda da Classe Abstrata é sobrescreva os métodos que deseja.


[ José Roberto Alves do Nascimento ]
Oracle Certified Professional Java SE 6 Programmer
[Email] [WWW] [Yahoo!] [MSN]
InsaneChess
JavaTeenager
[Avatar]

Membro desde: 22/04/2010 23:02:42
Mensagens: 194
Localização: São Paulo, SP
Offline

Outra coisa que esqueci de dizer...além de deixar a implementação do remover em branco, use uma Interface no lugar dessa classe abstrata. É melhor

MSN: diogo_chess@hotmail.com
Vamos estudar Java!!!
[MSN]
peerless
GUJ Master
[Avatar]

Membro desde: 22/01/2007 14:52:26
Mensagens: 1391
Localização: Porto Alegre / RS
Offline

Interfaces estao aih para isso.


Porém, na hora de instanciar, tu faz:


Esta é uma das formas elegantes de resolver questoes como essa.

follow me
pitacos

"The most problems that teams face are about communication, and all the others are too." - Dan North





[MSN]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team