Estruturando bem um programa em java

8 respostas
S

Bom dia pessoal.
Sempre li muito sobre java e fiz pequenos programinhas. Mas queria me aprofundar mais, e por isso resolvi desenvolver um sisteminha para tentar fixar ainda mais a linguagem e consolidar as boas práticas em OO.

Minha dúvida: Fiz um form básico de consultas, que consiste em um JInternalFrame (a classe é filha de JInternalFrame)com botões que todas as telas de consulta terão. Essa classe será a classe pai de todas as telas de consulta.
Pois bem, qual é a melhor forma de tratar os eventos de forma que os forms de consulta filhos possuam as ações padrões do form que estou construindo ? (implementar ActionListener ?).
Pq a minha maior dúvida é como num clique do botão abrir por exemplo, eu chamaria o método da classe Pai e depois colocaria outras modificações inerentes às novas telas(usar super funciona dentro de métodos, ou apenas dentro de construtores?)

Obrigado pessoal, e desculpem o texto grande.

:thumbup:

8 Respostas

M

Ssalgado, não sei se esta é a melhor forma de trabalhar, mas eu sempre faço da seguinte forma

Crio uma classe Form e outra com as Regras de negócios (não coloco nenhuma interação com o Form nesta classe apenas recebe e devolve valores). na classe Form eu coloco vários metodos publicos referentes às alterações que eu quero fazer e no Listener eu apenas acho estas funções.

Ok . Espero ter ajudado :thumbup:

S

e não se esqueção da camada persistência que recebe e evia valores da canada de negócio pro bando.

S

Obrigado pela resposta mark_domi.
Vou tentar fazer dessa minha classe apenas um molde para as outras, sem adicionar códigos para os eventos.

mas ai vem mais uma dúvida minha:
para separar as regras de negócio da camada view, se por exemplo eu tenho um JTable a ser preenchida, a forma certa seria passar uma referêcia da minha JTable para a camada de regras de negócio e lá preencher a tabela, ou seja, nem mesmo o preenchimento desta tabela deveria estar na camada view ?

Valeu pessoal :thumbup:

E

Acho que seria melhor você ter uma classe da view que chamaria a classe de “regra de negócio” e obteria os dados, para então preencher, na view, a tabela; negócio não sabe que JTable existe :stuck_out_tongue:

danieldestro

Um sistema que estou refatorando eu fiz assim: criei interfaces para as view, para ter total independência da implementação das telas e desacoplar ao máximo as partes.

A implementação da minha tela tem conhecimento da classe de controle da tela, assim ela pode chamar seus métodos que delegam pro negócio.

E o meu código fica mais ou menos assim:

//retorna o objeto de implementação desejado CadastroGUI gui = GUIFactory.getCadastroGUI(); gui.setController( this ); gui.start();

E na minha GUI:

//botão foi clicado controller.cadastrar( pessoa );

M

Ssalgado, se vc trabalhar com classes do tipo DTO (classes que possuem apenas propriedades e metodos Get´s e Set´s, também conhecida como VO´s) vc pode carregar o DTO e descarrefar, sem ter que passar informação nenhuma da tela, apenas Dados(String, int , date, …)

desta forma dá um pouquinho de trabalho para fazer (se bem que o Eclipse gera os Get´s e os Set´s sozinho), mas na hora de dar manutenção , vc vai ver como fica mais facil e seu código fica mais limpo, vc acaba ganhando tempo, e seu código fica organisado

pcalcado

mark_domi:
mas na hora de dar manutenção , vc vai ver como fica mais facil e seu código fica mais limpo, vc acaba ganhando tempo, e seu código fica organisado

Bem mais estruturado, com bem menos objetos…lindo como um programa em C sem ponteiros :mrgreen:

Correndo o risco de ficar mais repetitivo ainda: só use DTOs se você precisar mandar objetos de uma JVM para outra (ok, estou sendo extremista, joguem tomates).

S

Valeu passoal, vcs estão ajudando bastante.

Mas fico um pouco confuso, pq não consigo ver como fazer essa divisão, por exempo:
Digamos que eu tenha uma tela principal, que tem botões que chamariam outras telas. Quem tem que saber que janela abrir no clique de um botão , a tela principal ou uma classe com as regras ? O que a camada de apresentação pode ‘saber’ ?

Criado 11 de abril de 2005
Ultima resposta 11 de abr. de 2005
Respostas 8
Participantes 6