Mvc [resolvido]

13 respostas
Buscapeh

Olá pessoal,

Estou fazendo um projeto de software cujo sistema a ser desenvolvido é um Banco. Pois bem… escolhi a arquitetura MVC para aplicar no meu sistema. Surgiu esta duvida:

Pode-se ter mais de um controlador (classe controladora)? Tenho classes CaixaAutomatico, que contem operaçoes de saque, deposito, extrato, transferencias, outra classe Agencia, que contem os caixas automaticos, e a classe Banco que contem as agencias. O modelo contem conta corrente, dados de clientes e estão no servidor web. A visão são interfaces gráficas no caixa automático. Estas tres classes sao as controladoras e somente a classe CaixaAutomatico está no browser, enquanto as outras estão em servidores web.

13 Respostas

A

Sim, vc pode ter mais de um controlador

eric_jf

Buscapeh:
Olá pessoal,

Estou fazendo um projeto de software cujo sistema a ser desenvolvido é um Banco. Pois bem… escolhi a arquitetura MVC para aplicar no meu sistema. Surgiu esta duvida:

Pode-se ter mais de um controlador (classe controladora)? Tenho classes CaixaAutomatico, que contem operaçoes de saque, deposito, extrato, transferencias, outra classe Agencia, que contem os caixas automaticos, e a classe Banco que contem as agencias. O modelo contem conta corrente, dados de clientes e estão no servidor web. A visão são interfaces gráficas no caixa automático. Estas tres classes sao as controladoras e somente a classe CaixaAutomatico está no browser, enquanto as outras estão em servidores web.

Está confuso o que vc esta fazendo com Caixa e Agencia e Banco.
Pelo que entendi vc quer colocar a logica de negocios em Caixa, se for isso Caixa nao deve ser estar contido dentro de outras duas.

É bom vc colocar sua logica de negocios em uma classe gerenciadora (ver padrao façade).

O MVC serve para a camada de apresentação, não é bom colocar logica de negocios nele.

Giulliano

eric_jf:
O MVC serve para a camada de apresentação, não é bom colocar logica de negocios nele.

O MVC não serve apenas para apresentação… Entendo por apresentação o back end…

ainda temos o controller e o model…o que vc quis dizer com isso ???

Buscapeh

Galera, valeu pela ajuda!

Não estou colocando a classe CaixaAutomático na Lógica de Negócios. Vou citar um exemplo:

Uma operação de saque. Um cliente utilizando o caixa automático solicita um saque de R$40,00. O caixa automático (browser) envia uma requisição HTTP ao servidor da agência em que se encontra. O servidor da agência reenvia essa requisição para o servidor central, que através de conexões ao banco de dados, acessa os dados nele contidos (encontra conta corrente e verifica saldo do cliente) e envia uma resposta ao servidor da agência, que retorna ao caixa automático, que retira o dinheiro para o cliente.

é assim que o sistema funciona. Por isso a necessidade de 3 controladores: CaixaAutomático, Agencia e Banco. Se minha lógica estiver errada, me corrija por favor. Obrigado

Giulliano

Vc esta querendo integrar num único sistema três sistemas diferentes pelo q eu entendi…

Vc disse q o Caixa Eletrônico conversa com a Agência e a Agência com a Central…

No meu entender cada um desses tem um sistema a parte com seus respectivos controladores… OU vc esta apenas supondo que existem três sistemas diferentes…
Independente disso…vc pode ter um ou mais controladores…o ideal é q vc sempre consiga colocar a responsabilidade em um cara…Eu uso minhas servlets como controller pq aqui no meu trampo não usamos frameworks… só servlets e MVC puro…

Buscapeh

é isso mesmo.
Dentro deste Banco, há 3 subsistemas:

1 subsistema responsável por operações bancárias (saque, depósito, extrato, transferência);

1 subsistema responsável pelos caixas automáticos e por repassar as informações para a central;

1 subsistema responsável por acesso ao BD, manuseio das tarefas advindas dos dois outros subsistemas;

Obrigado por sanarem minhas duvidas, mas se minha logica estiver errada, me corrijam.

eric_jf

Giulliano:
eric_jf:
O MVC serve para a camada de apresentação, não é bom colocar logica de negocios nele.

O MVC não serve apenas para apresentação… Entendo por apresentação o back end…

ainda temos o controller e o model…o que vc quis dizer com isso ???

Eu me refiro a divisao em 3 camadas: Apresentação + Negocio + Persistencia

O MVC fica na camada de Apresentação, que é M (Bean), V(jsp) e C(Action)
Na camada de Negocios vc implementa o Padrão Façade, que funciona como um gerenciador.
E a camada de persistencia DAO+BD.

PS.: Model não é logica de negocio, embora participe dela.

Giulliano

eric_jf:
Giulliano:
eric_jf:
O MVC serve para a camada de apresentação, não é bom colocar logica de negocios nele.

O MVC não serve apenas para apresentação… Entendo por apresentação o back end…

ainda temos o controller e o model…o que vc quis dizer com isso ???

Eu me refiro a divisao em 3 camadas: Apresentação + Negocio + Persistencia

O MVC fica na camada de Apresentação, que é M (Bean), V(jsp) e C(Action)
Na camada de Negocios vc implementa o Padrão Façade, que funciona como um gerenciador.
E a camada de persistencia DAO+BD.

PS.: Model não é logica de negocio, embora participe dela.

Eu ainda não me formei arquiteto mas acredito que o Modelo MVC contemple todas as característica do sistema onde

M = DAO + NEGÓCIOS + BEAN
V = JSP (Normalmente)
C = Algum Controller que ele deseje implementar.

Aí se vc vai adicionar Façade…isso não quer dizer que o Modelo só represente Beans…esta havendo alguma confusão nessa sua explicação…

Giulliano

Buscapeh:
é isso mesmo.
Dentro deste Banco, há 3 subsistemas:

1 subsistema responsável por operações bancárias (saque, depósito, extrato, transferência);

1 subsistema responsável pelos caixas automáticos e por repassar as informações para a central;

1 subsistema responsável por acesso ao BD, manuseio das tarefas advindas dos dois outros subsistemas;

Obrigado por sanarem minhas duvidas, mas se minha logica estiver errada, me corrijam.

Cara eu acho que um sistema bancário é algo grande e se vc conseguir modularizar isso, melhor ainda…Então referente ao seu modelo de sistemas acho que um caixa eletrônico deva ser um sistema separado e um outro sistema representaria o banco em si independente da agência. quando for consultar peça ao sistema do banco para checar o BDS passando a conta e agência…

É só um debate não estou dizendo que vc deve fazer isso…apenas para trocar idéias mesmo

ddduran

eric_jf, eu posso ter entendido mal, mas acho que você está fazendo alguma confusão entre os patterns

MVC é um pattern arquitetural, que diz sobre como seus componentes vão interagir e se comportar, dentro dele você pode ter vários outros partterns. Inclusive ele pode ser usado em conjunto do modelo de 3 camadas, abaixo um link já bem batido aqui do GUJ para você entender melhor, já que não vale a pena se estender em um assunto já tão discutido no forum

http://www.fragmental.com.br/wiki/index.php/MVC_e_Camadas

Buscapeh, acho que está bem interessante seu modelo, classes com suas tarefas bem definidas, etc
Você pode usar varios controladores, mas é interessante centralizar requisições em comum em um único ponto.
de uma olhada em Command And Controller (se você não for usar nenhum framework). Olha esse link

http://www.tatanka.com.br/palestras/cj2005-Web+MVC+IoC+Reflection/

eric_jf

Eu pensava assim antes.
Uma coisa é MVC e outra coisa é divisao em 3 camadas.
MVC é um padrão para visualisação de dados: tem uma explicação boa aqui: http://pt.wikipedia.org/wiki/Mvc

Detalhe em: É comum haver confusão pensando que Model é um outro nome para a camada de domínio. Lógica de domínio adiciona sentido à dados crus (por exemplo, calcular se hoje é aniversário do usuário, ou calcular o total de impostos e fretes sobre um determinado carrinho de compras).

eric_jf

ddduran:
eric_jf, eu posso ter entendido mal, mas acho que você está fazendo alguma confusão entre os patterns

MVC é um pattern arquitetural, que diz sobre como seus componentes vão interagir e se comportar, dentro dele você pode ter vários outros partterns. Inclusive ele pode ser usado em conjunto do modelo de 3 camadas, abaixo um link já bem batido aqui do GUJ para você entender melhor, já que não vale a pena se estender em um assunto já tão discutido no forum

http://www.fragmental.com.br/wiki/index.php/MVC_e_Camadas

Buscapeh, acho que está bem interessante seu modelo, classes com suas tarefas bem definidas, etc
Você pode usar varios controladores, mas é interessante centralizar requisições em comum em um único ponto.
de uma olhada em Command And Controller (se você não for usar nenhum framework). Olha esse link

http://www.tatanka.com.br/palestras/cj2005-Web+MVC+IoC+Reflection/

Acho que eu não consegui me expressar direito. Tentei dar um exemplo com os 2 padrões juntos, acho q isso criou o mal entendimento.
Eu queria dizer justamente que MVC e Divisão em 3 Camadas são 2 padrões diferentes.
E que o MVC fica na camada de apresentação de uma Divisão em 3 camadas.

wagnerfrancisco

eric_jf:
ddduran:
eric_jf, eu posso ter entendido mal, mas acho que você está fazendo alguma confusão entre os patterns

MVC é um pattern arquitetural, que diz sobre como seus componentes vão interagir e se comportar, dentro dele você pode ter vários outros partterns. Inclusive ele pode ser usado em conjunto do modelo de 3 camadas, abaixo um link já bem batido aqui do GUJ para você entender melhor, já que não vale a pena se estender em um assunto já tão discutido no forum

http://www.fragmental.com.br/wiki/index.php/MVC_e_Camadas

Buscapeh, acho que está bem interessante seu modelo, classes com suas tarefas bem definidas, etc
Você pode usar varios controladores, mas é interessante centralizar requisições em comum em um único ponto.
de uma olhada em Command And Controller (se você não for usar nenhum framework). Olha esse link

http://www.tatanka.com.br/palestras/cj2005-Web+MVC+IoC+Reflection/

Acho que eu não consegui me expressar direito. Tentei dar um exemplo com os 2 padrões juntos, acho q isso criou o mal entendimento.
Eu queria dizer justamente que MVC e Divisão em 3 Camadas são 2 padrões diferentes.
E que o MVC fica na camada de apresentação de uma Divisão em 3 camadas.

eric_jf, uma vez eu vi alguns slides na internet que diziam justamente o que você explicou. MVC é uma coisa, modelo em 3 camadas é outra. Tanto que eu acredito que possa haver um modelo em 2 camadas que utilize o MVC, certo?

Mas eu ainda tenho algumas dúvidas. O MVC é pra utilizar SÓ na camada de apresentação? Achei esse trecho na Wikipedia (link indicado acima), e o que é sugerido parece ser diferente:

[color=blue][i]
A partir do momento em que dividimos os nossos componentes em Camadas podemos aplicar o MVC nestas. Geralmente isto é feito definindo a Camada de Negócios como o Model, a Apresentação como a View. O componente Controller exige um pouco mais de controle.

Na maioria dos casos pode-se definir o Controller dentro da Camada de Apresentação. Esta Camada ficaria responsável então por mostrar o estado do Model ao usuário e receber as requisições deste.
[/i][/color]

Será equívoco do texto ou falha de interpretação de minha parte?

Eu ainda tenho dúvidas em relação a Camada de Negócios e o componente Model da Camada de Apresentação. Não consegui diferenciar a função destes dois.

Se for como é dito na wikipedia eu compreendi bem, mas aí eu teria que aplicar o “componente” Model sobre a camada de negócios…

Se puder esclarecer isso pra mim, será de grande valia!

Grato pela atenção,

Wagner.

Criado 22 de janeiro de 2008
Ultima resposta 24 de jan. de 2008
Respostas 13
Participantes 6