MVC - Apos varias leituras algumas duvidas

10 respostas
jaso

Bom galera,

A algum tempo eu estudo a linguagem java, mais ou menos um ano, ja fiz alguns cursos, uns 3 ou 4, para entender a linguagem sintaxe, e afins, bom acho que isso ae deu para pegar pelo menos um pouco. Bom minha duvida, e em padrao de projetos, tem algumas coisas que nao estou conseguindo encaixar bem.
Bom vamos la, pelo que li, MVC, e um padrao de como os componentes interagem, e nao que sao 3 camadas, afinal camadas e algo diferente. Entendi também que o Model nao entra em contato com a View, é o controler que vai acertar essa movimentação. Bom até ae ficou de boa, deu para entender bom, o conceito, mais acontece que na pratica estou tendo algumas duvidas seguinte : 

Tenho uma classe cliente : [img]http://www.jaso.com.br/java/clientes.jpg[/img]

Essa classe possui os atributos e metodos get e set do cliente. 

Essa classe esta dentro do modelo. Esta certo ? 

Tenho uma classe clienteDAO : [img]http://www.jaso.com.br/java/clientesDAO.jpg[/img]

Essa classe possui as instrucoes de sql, tipo recuperacao de dados, inserts etc. 

E esta também dentro do modelo. Esta certo ? 

E por ultimo dentro do view tenho a classe clienteWindow, que e o Jframe da aplicacao. 

Essa classe esta dentro do View. Esta certo ?  

Bom agora, a parte que eu ainda nao compreendi, de acordo com minhas leituras, a classe controler, teria que estar no meio disso tudo controlando, essa movimentacao, mais ae é que ta ? pelo exemplo acima, quais os codigos entrariam em controler ? Pelo que entendi, seriam eventos, capturados pela view, tipo cliques de mouse, teclado etc ? Alguem poderia me ajudar nisso ae ? 

Desde , agradeço a atenção.

10 Respostas

Guilherme_Gomes

Pense assim, uma das vantagens do modelo MVC é que você pode alterar o View (seu JFrame) sem causar impactos no resto do sistema.
Alguém tem que ser responsável por pegar as informações e trabalha-las, para que tanto o model possa armazena-las e o view possa exibi-las. O responsavel por isso é uma classe Controller.

Por exemplo: Um usuario acessa um sistema e começa a cadastrar seu pedido. Ele escolhe varios produtos para comprar. Um controller fica responsavel por guardar essas informações e trabalha-las enquanto o usuário não fecha o pedido (que daí o model irá guardar). Além disso o Controller fará verificações para ver se o cliente não está comprando dois produtos iguais, se a compra tem um valor mínimo ou máximo, ou outras coisas que o sistema precisa saber/fazer…

Espero ter ajudado. Se você souber bem ingles, deve ter uns bons artigos na net pra ver.

jaso

Cara, ajudou sim, mais na verdade essa parte eu ja entendi, pelo menos acho sacou, o que eu nao to sabendo separar sao os codigos, tipo, assim : Quando o usuario clica no botao gravar, intaum a classe View, manda para a controller as informacoes lidas, nos JText, trata essas informacoes que manda para a model, e a model grava isso, no banco, acho que isso eu entendi, so nao to entendendo como passar isso para meus codigos sei la acho que e isso !!!

B

MVC é simples. Pense no seguinte:

Você tem que fazer um sistema web e um desktop. Os dois são as interfaces pra fazer a mesma coisa. Você não vai querer escrever o sub-sistema de gravação duas vezes.

MVC é ter muitos Vs e Cs para um mesmo M.

Marcio_Nogueira

O MVC possibilita estruturar seu projeto de forma a se tornar mais flexível. Pense como sendo uma estrutura semelhante a estrutura de pacotes em um projeto Java.
No pacote Modelo (Model) você terá a lógica de negócios de sua aplicação.
No pacote Visão (View) você terá seus arquivos JSPs e interface com o usuário.
No pacote Controle (Control) você terá seus servlets e actions de controle de sua aplicação.
:wink:

jaso

Grande Galera,

Tipo analisando um modelo de codigo encontrado, eu percebo que a classe view, faz um import para a model, e a classe controler tb, faz um import da classe model, o certo nao seria : a controler importa a model e a view importa a controler, ou seja assim a view nao esta vendo a model, e somente a controler...ou na verdade a view, pode fazer um import da model, ou seja a view enxergando a model, direto...... Valeu antecipadamente a ajuda galera !!!!!

http://www.jaso.com.br/java/exemplo.zip

Apenas para fazer de forma correta, vai abaixo, de onde tirei o exemplo :

http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/arqu/mvc/mvc.htm por Rodrigo Rebouças de Almeida

Andre_Fonseca

oi jaso

dê uma olhada na apostila fj21 da caelum, no capítulo 13 tem um exemplo de como construir seu próprio framework MVC, acho que pode te ajudar a entender melhor…

abs

L

A view só conhece o model, não conhece seu controlller, tanto que o controller precisa ficar “ouvindo” os eventos da view pra fazer alguma coisa. O que você havia falado está correto: a view conhece o model; o controller conhece a view e o model; e o model não conhece ninguém.

Uma coisa que me fez cair a ficha foi a percepção de que o Model, a View e o Controller não possuem o mesmo tamanho. O Controller, num MVC bem empregado, é pequeno em relação ao demais. No Swing chega a ser apenas aquela inner class que responde a um evento, não precisa nem estar num pacote separado.

No MVC para a web, o evento é somente a submissão de um formulário contendo pares chave-valor. Os frameworks já fazem parte da atividade do controller (converter os parâmetros em objetos, e transformar o evento em uma ação), bastando somente a nós definir o que significa cada ação em termos de chamada a métodos do model e definir qual a próxima view a ser instanciada.

L

Guilherme Gomes:
Pense assim, uma das vantagens do modelo MVC é que você pode alterar o View (seu JFrame) sem causar impactos no resto do sistema.
Alguém tem que ser responsável por pegar as informações e trabalha-las, para que tanto o model possa armazena-las e o view possa exibi-las. O responsavel por isso é uma classe Controller.

Por exemplo: Um usuario acessa um sistema e começa a cadastrar seu pedido. Ele escolhe varios produtos para comprar. Um controller fica responsavel por guardar essas informações e trabalha-las enquanto o usuário não fecha o pedido (que daí o model irá guardar). Além disso o Controller fará verificações para ver se o cliente não está comprando dois produtos iguais, se a compra tem um valor mínimo ou máximo, ou outras coisas que o sistema precisa saber/fazer…

Na realidade, essa é a definição de um façade da camada de aplicação (de um possível sistema em camadas). Mas a camada da aplicação, e tudo abaixo dela, é apenas o M no pattern MVC. O controller faz apenas isso:

  • recebe eventos;
  • interpreta parâmetros de entrada;
  • invoca métodos no model de acordo com o evento;
  • chama a view apropriada de acordo com o resultado do model.

E só.

LPJava

veja se a coluna a seguir ajuda.

MVC

jaso

Galera,

Gostaria de agradecer muito a todos, a ajuda muito mesmo, estou com alguns artigos, consegui uns livros, e ja estou com a mão na massa, imprimi esses ae que voces me mandaram tb, e ja estou acertando as coisas por aqui, gostaria de agradecer a todos as respostas.... Valeu mesmo !!!!!! Consegui um material bacana tb com o Marcelo Daibert, [url]www.daibert.pro[/url] não sei se voces conhecem..... Cara muito gente boa esse ta !!!!!
Criado 26 de fevereiro de 2009
Ultima resposta 27 de fev. de 2009
Respostas 10
Participantes 7