Camadas e MVC

Ola a todos surgiu uma dúvida extremamente importante para o desevimento profissional

Conceito

CAMADAS - Dizem como se agrupar os compoentes,(objetos, classes etc).
MVC - Diz como interagem as camadas.

Em java nos separamos as Camadas da seguinte forma

Apresentação
Negocio
Persistencia

Certo?

Agora englobando o conceito MVC,como classificariamos essas camada em MODELO , VISAO , CONTROLE .

Tenho a seguinte susgestao

Visao - apresentacao

Controle – Nao sei ??

Modelo – Negocio , persistencia

mais acho que esta errado?

Alguem saberia me explicar isso?

Mais um pergunta, quando fala programacao em tres camadas estamos nos referindo a ,Apresentacao,Negocio,persistencia ou a Modelo,Controle,Visao

Obrigado

O controle é o meio de campo entra a apresentação e o negócio. Ele faz por exemplo, validação de dados, identifica e estimula o objeto responsável por tratar as entradas. Depois, obtém a resposta e a devolve para a visão.

De certa forma, as classes de model do Swing (TableModel, ComboBoxModel) estão mais relacionados à função de controle, do que de modelo em si.

A unica semelhanca entre divisao em tres camadas e MVC é que ambos contem tres componentes. Só. De resto uma coisa é uma coisa, outra coisa é outra coisa.

Nao esta errado nao, é por aí mesmo. O controle é uma fina camada entre o modelo e a visao. No caso do struts e JSF por exemplo, o controller sao o ActionServlet e o FacesServlet respectivamente (alguns desenvolvedores consideram tambem como parte do controller os actions e os managed beans, outros nao. Confesso que isso nunca me tirou muito o sono). As paginas jsp, jsf, etc… sao o View e o resto é o Model.

Um dos problema da confusao esta na enorme diferenca de MVC para web e MVC desktop, que é o original, com os observers e etc… Eles sao bem diferentes, tanto que eu acho que sequer deveriam ter o mesmo nome.

Ja a separacao apresentacao - negocio - persistencia, é feita procurando isolar as regras de negocio das regras de apresentacao e das regras de acesso a banco. MVC é uma das formas de isolar a apresentacao das regras de negocio, assim como DAO é uma das formas de separar acesso a banco das regras de negocio.

Perguntar se MVC e divisao em camadas sao a mesma coisa é como perguntar se DAO e divisao em camadas sao a mesma coisa.

YvGa , obrigado por respoder, intao programcao em 3 camadas seria

TELA
NEGOCIO
PERSISTENCIA

MVC É APENAS PARA SEPARA TELA DO NEGOCIO , É ISSO?

IMAGINAMOS O SEGUINTE UM CADASTRO DE Pessoa

1 - camada

PessoaForm ( TELA , Visao)


2 - camada

PessoaControle ( ? , Controle )
Pessoa (NEGOCIO, Modelo)


3 - camada

PessoaDAO(PERSISTENCIA , Modelo)

se eu fosse dividir em 3 camadas seria isso?
e outro coisa a classe persistencia é um modelo?

Camadas é um termo fraco e depende bastante de contexto.

Quando ouço 3 camadas, posso tanto pensar na separação proposta pelo erickfm8, como tambem pensar em camadas físicas como por exemplo Browser, Servidor de aplicação e BD.

O velho problema da difenrença entre Tier e Layer, em que grande parte dos livros foi traduzido apenas como “Camada”, ignorando a possibilidade de ser camada física ou lógica.

[]s

Sim, é por ai mesmo. Mas tente desassociar os conceitos MVC de divisao em camadas. Sim em MVC a camada de persistencia faz parte do model.

Pois é, tem mais esse problema pra gerar confusao. 3 camadas tambem podem ser cliente, servidor e servidor de BD, por exemplo. Aí a confusao ta feita de vez.

Sim, Mais o post desse Topico é para fazer o relacionamento em desenvolvimeto Desktop , priferencialmente usando swing, aguem mais para dar opnião?

obrigado a todos.

[quote=erickfm8]Sim, Mais o post desse Topico é para fazer o relacionamento em desenvolvimeto Desktop , priferencialmente usando swing, aguem mais para dar opnião?

obrigado a todos.[/quote]

Então não tem nada de camadas propriamente, apenas uma separação lógica entre os componentes sendo o controler e a visão pertencente ao swing. Voce entra com o “model” e a configuração geral.

Mais eu nao poderia ter o seguinte

PessoaForm (TELA , VISAO)

PessoaControle (NEGOCIO , Controle)
Pessoa(Negocio,Modelo)

PessoaDAO(persistencia , Modelo)

[quote=erickfm8]Ola a todos surgiu uma dúvida extremamente importante para o desevimento profissional

Conceito

CAMADAS - Dizem como se agrupar os compoentes,(objetos, classes etc).
MVC - Diz como interagem as camadas.

[/quote]

Este é o problema de usar uma nomenclatura falha, não univoca.
Lendo o que vc escreveu vc tem razão. Mas sabendo o que vc quiz dizer, vc está enganado. :lol:

O termo “camada” é na realidade um agrupamento de componentes, é o que em java seria um pacote e não se relaciona ao conceito de pilha.
Só que o mesmo termo é usado para significar “separação de componentes pelo lugar lógico que ocupam numa hierarquia de pilha”

Bom, então MVC sim é uma forma de como as camadas interagem se pensarmos em “camada” com a primeira difinição (conjunto de classes/componentes) mas não se pensarmos da segunda forma.

O termo camada é realmente ruim, porque é ambiguo.
“separação de componentes pelo lugar lógico que ocupam numa hierarquia de pilha” é chamado andar e conjunto de componentes não tem nome é “conjunto de componentes” mesmo. Informalmente podemos chamar de pacote, classes, API ,ssubpacote…

Então, MVC é uma forma como os componentes de integram um único andar, interagem.
Normalmente os andares de apresentação e cliente.

“Tela” não é um andar. “Apresentação” e “Cliente” é que são.
“Tela” é uma parte do andar “Cliente”.

Antigamente faziam-se aplicações de 3 andares (interface grafica, processamento, persistencia)
Hoje é normal ter 5 (cliente, apresentação, negocio, integração e persistencia) , sobretudo em sistemas web.

Ha ainda a aquitetura em 3 camadas , que na realidade significa :Arquitetura com 3 nodos. (nodo = 3 máquinas : servidor de bando de dados, servidor de aplicação , máquinas clientes)

O termo “camada” é ruim mesmo e deve ser evitado a bem da boa comunicação.

Bom pessoal é isso ai , esse assundo de ´Camadas e MVC é muito complexo mais ALGUMAS COISAS E JA POSSO AFIRMA

CAMADAS SAO CONCEITOS BEM DIFERENTES DE MVC

-CAMADAS DIZ COMO AGRUPAR OS COMPONENTES

-MVC DIZ COMO ELES INTERAGEM .

Um forma de ilustrar isso pode ser assim

Exemplo… um exemplo de uma aplicação de 3 camadas e aonde o MVC se encaixa

Apresentacao ( View , controle )
Negocio (model)
Dados

Basicamente é isso pessoa, e so com muitas lidas e tals que iremos fixar esse conceito…

Pois vai um link que foi o melhor que eu axei na net até agora (OBS: o melhor desse link são os comentarios que explica direitinho o conceito)…

http://alexmrg.wordpress.com/2006/12/28/what-the-fuck-is-mvc/

Obrigado.

[quote=erickfm8]Sim, Mais o post desse Topico é para fazer o relacionamento em desenvolvimeto Desktop , priferencialmente usando swing, aguem mais para dar opnião?

obrigado a todos.[/quote]

Tem este tópico que abrange bem o assunto de MVC para Desktop, Swing e até um pouco de Web.
http://www.guj.com.br/posts/list/0/129277.java
Vou colocar o seu tópico lá também para que as pessoas que buscam MVC também achem o seu. :smiley:
Um abraço, espero ter colaborado! :wink:

Faz um tempo escrevi um post exatamente sobre isso. Espero que ajude:

http://cleversonsacramento.com/2011/10/17/mvc-ou-arquitetura-em-camadas/