Tentativa de aplicar o MVC. Usando Netbeans e MySQL

8 respostas
L

Amigos, essa é minha primeira participação no forum e espero não cometer muitas gafes.
Bom, este projeto bem simples é uma tentativa de aplicar o modelo MVC. Programei usando a IDE
NetBeans e usei o MySQL como SGBD.

Este diagrama foi feito no Jude:

E aqui estão os códigos:

[b]pacote visao -> http://rafb.net/p/H00jI232.html <- Classe Tela1

pacote controle -> http://rafb.net/p/ki673v83.html <- Classe ControleAluno

pacote modelo -> http://rafb.net/p/VqJgBw35.html <- Classe Aluno
pacote modelo -> http://rafb.net/p/IGJIf826.html <- Classe Tabela
pacote modelo -> http://rafb.net/p/Ei6IUx79.html <- Classe Banco[/b]

Gostaria muito da opinião, principalmente as críticas pois certamente cometi varios erros. Espero aprender com seus comentários.
Desde já agradeço e contem comigo por aqui.

Abraço!

8 Respostas

skalinichenko

Eu concordo com tudo o que vi!
Antes de conhecer o framework Hibernate, fazia a persistência dos dados no banco, igual você fez mesmo.
Experimenta… http://www.hibernate.org/
Aplicar melhorias, já é uma tarefa de parar, olhar e aplicar alguns Design Pattens (pesquisa no Google sobre GoF, que você vai ver quantas ténicas legais, podem ser aplicadas).
No ínicio do meu aprendizado e no momento que vi falar a primeira vez de MVC, tentei pegar o conceito e montar exemplos bem simples.
Depois corri atrás de alguns frameworks e Design Patterns, para dar uma “melhoria” na aplicação.
Flw, parabéns!

hvivox

Seja bem vindo ao guj parceiro! então vc esqueceu de especificar a sua duvida! mas… vou comentar o que pude ver nos diagramas
seguinte! na teoria o dizem que o mvc funciona assim v <-------> c <-------> m, mas na realidade não é bem assim! para que o mvc funcione desse forma é necessario utilizar varios frameworks e padrões de projetos esse é o caso perfeito. O que muita gente esquece de comentar é que o modelo tem uma ligação com a visão.

quando vc começar a implementar vai saber do que estou falando! qualquer duvida estamos ai!

B

O que é importante saber ao estudar com MVC é que o Model nunca muda, independente do número de tecnologias que for fazer as Views e o Controller. Aliás ele nem sabe que os outros dois existem. Seja desktop ou web, todos chamam a mesma classe, que devolve os mesmos tipos de objetos sempre.

Daí que as regras de negócio geralmente ficam do lado do Model, como as validações do lado do servidor.

View e Controller só existem por que o Model não sabe falar com o usuário, View faz o trabalho de mostrar os dados, Controller o trabalho de capturar eventos/requsições e decidir o que fazer com eles.

L

Obrigado pelos comentários.

Deu um animo aqui Skalini! Eu estou estudando com o livro do Edson Gonçalves e no programa do curso que faço (a um mês) está incluído hibernate.
Já leio sobre o assunto, mais pra frente vou entender tudo o que leio. Obrigado pelas dicas aí. :slight_smile:

Amigo hvivox, pelo que entendi o modelo é flexível na implementação. Sendo o caso ótimo, visão<—>controle<—>modelo, algo muito mais conceitual
do que prático. Muito bem então… Vou pesquisar com base nisso desde já. Valeu!

Então, Bruno, controle deveria instanciar visao e não o contrário?! Eu fiz na captura do evento click do “botao_gravar” uma instanciação do
ControleAluno já passando os dados e em cascata já chamei o metodo gravar em controle que tem um retorno String para um label na visao.

Olha:

texto_mensagem.setText((new ControleAluno(texto_nome.getText(),texto_idade.getText()).gravar()));

Interpretando seus comentários tive a idéia de passar o método main para o pacote controle, e usar as capturas dos eventos apenas como túnel para
passar o tratamento do evento para pacote controle.

A idéia:

visao.Tela.capturaEvento(evento){

controle.ControleAluno.trataEvento(evento);

}

Ou nem é isso ainda? O nível de “desconhecimento” de visao para controle ainda é maior?

Bom só esclarencendo que eu não implementei o uso da consulta, apesar do método estar pronto na classe Tabela e o autor nos comentários
do código está Danielle Lopes, porque eu estava do Laptop da minha namorada.

Abração!

P

Luis Sevla:
Obrigado pelos comentários.

Deu um animo aqui Skalini! Eu estou estudando com o livro do Edson Gonçalves e no programa do curso que faço (a um mês) está incluído hibernate.
Já leio sobre o assunto, mais pra frente vou entender tudo o que leio. Obrigado pelas dicas aí. :slight_smile:

Amigo hvivox, pelo que entendi o modelo é flexível na implementação. Sendo o caso ótimo, visão<—>controle<—>modelo, algo muito mais conceitual
do que prático. Muito bem então… Vou pesquisar com base nisso desde já. Valeu!

Então, Bruno, controle deveria instanciar visao e não o contrário?! Eu fiz na captura do evento click do “botao_gravar” uma instanciação do
ControleAluno já passando os dados e em cascata já chamei o metodo gravar em controle que tem um retorno String para um label na visao.

Olha:

texto_mensagem.setText((new ControleAluno(texto_nome.getText(),texto_idade.getText()).gravar()));

Interpretando seus comentários tive a idéia de passar o método main para o pacote controle, e usar as capturas dos eventos apenas como túnel para
passar o tratamento do evento para pacote controle.

A idéia:

visao.Tela.capturaEvento(evento){

controle.ControleAluno.trataEvento(evento);

}

Ou nem é isso ainda? O nível de “desconhecimento” de visao para controle ainda é maior?

Bom só esclarencendo que eu não implementei o uso da consulta, apesar do método estar pronto na classe Tabela e o autor nos comentários
do código está Danielle Lopes, porque eu estava do Laptop da minha namorada.

Abração!

Pois é, fiquei com a mesma dúvida… se a view não instanciar os controllers como serão feitas as chamadas de métodos do controller? Caso elas tenham que ser feitas pela view…

Os event listeners dos elementos da view… ficam no controller ou na própria view??

M

Outro dia desses quase se atracaram por causa de MVC aqui no fórum. Por isso prefiro nem me arriscar em palpitar sobre o assunto. Sugiro uma boa leitura sobre o assunto e uma pesquisa aqui pelo fórum.

D

Luis Sevla

estava pesquisando algo sobre MVC e vi alguns arquivos que voce tinha disponibilizado.
Como já faz um tempo eles não estão mais disponiveis.
teria como você disponibilizar aqueles arquivos novamente? ou outros semelhantes

valeu

L

Caros,
Com um pouco de estudo, tranqüilamente vocês poderão implementar o mvc.
Usando alguns padrões de projetos, um pouco de reflection e alguns framework como Spring e EclipseLink chegarão a uma estrutura MVC realmente funcional.

Criado 8 de abril de 2009
Ultima resposta 31 de ago. de 2010
Respostas 8
Participantes 8