MVC - bem básico

Opa!

Até um tempo atrás eu achava que sabia MVC, porém andei lendo muito material sobre o assunto e acabei misturando as coisas, na net nem tudo é válido…

Vou escrever de forma resumida o que eu penso e vocês postam sim ou não na sequência, caso não explique o motivo.

-MVC-

Modelos-> bussiness objects, Usuario possui atributo, tais como email, idade, nome, telefone e metodos como exemplos inscrever, mandar e mail, editar/obter atributos, calcular renda anual, etc. Pode obter dados do banco, atraves de query (Select x from y where z=abobrinha).

Views-> UI, podem ser formados por n tecnologias diferentes, como exemplo: XML, XUL, janelinhas, HTML entre outros. Interagem com o usuario.

Controladores-> a ponte, liga “M” e “V” (ou “V” e “M”). Basicamente valida os dados de uma view e os encaminha para o modelo correto. De maneira semelhante , mudando apenas a relação teriamos o controlador verificando qual a view apropriada para dada tarefa que foi cumprida por um modelo.

Ok?

Em tempo:

Modelos são extremamente genericos, dai surgem os DAO, caso != sql use o mesmo modelo com (exemplo) XML ou hibernate. Views estão de certa forma intimamente ligadas a um modelo, tendo em vista que são representantes do modelo(são a interface), não sabem nada sobre um modelo.Controladores conhecem ambas as partes, captam pedidos de uma view e tambem enviam resultados de um modelo.

Sem querer ser chato, mas sem muito Java nas respostas plz. Foi por isso que eu coloquei no OFF.

Aproveitem bem o retinho do fim de semana =). Brigadão !!!
FUI.

Pessoal só responde se isso tá correto, se não estiver vou olhar uns exemplos mvc pra linguas OO. Valeu e postem muito !

Olá,

Está no caminho certo, mas DAO não tem nada a ver com MVC. não confunda modelo com persistência. na verdade, sequer cite persistência quando falar num modelo.

O Controlador, por definição, recebe resposta do usuário e reage a elas despachando a solicitação para quem for resposável por tratá-la. Uma View deve Observar o Modelo e retratar suas mudanças automaticamente.

Opa!
Olha quem respondeu … =)

Bom PCalcado, citei os DAO só pra mostrar que os models devem ser ultra-mega portáveis. Um modelo que utiliza sql NÃO será tão util se a persistencia for feita com um txt ou XML ou sei lá. Sei que não tem nada a ver modelo com persistência.

É uma pratica ruim colocar um objeto.save() , onde este save é uma enxurrada de SQL?

Tava lendo um pessoal falando de command pattern, estrutural pacas e tal. Como é que eu vou escrever um controlador sem ser na base do caso X faça X caso Y faça Y?

Andei lendo uns artigos sobre MVC e logo de cara percebi que o modelão do Java é diferente do PHP , que é diferente do MVC de lingua OO pra criação de aplicação desktop e por ai vai. Onde eu arrumo um texto bacana sobre MVC sem atrelar muito a linguas? Pra falar a verdade onde eu arrumo um site onde existam artigos em que os autores não cometam “pecados” ?

Eu sou um completo pateta com Java , salvo pelo fato de que a prova de certificação é uma baba e eu tirei a de programmer, sei uma coisinha ou outra de servlets e ejb , nada que me renda uma certificação. Onde eu arrumo material bom, simples e de graça sobre MVC Java? Tipo queria umas coisas modernas e promissoras, do tipo: tal framework tá bem de mercado, mas é asneira aprender por causa disso, o outro ali tá indo bem e vai ser bem visto no mercado. Em suma: quero aprender MVC pra internet com Java de forma correta, tecnologias certas e tal.

Valeu a todos pela ajuda.

Olá,

Desde que você abstraia o modo de persistir, não improta o que o método save() faz.

Isso quer dizer: quem deve fazer a “enxurrada de SQL” deve estar isolado na camada de persistência. Seu objeto (ou algum outro objeto que cudie de persistir os objetos de negócio) deve saber como chamar esse carinha do SQL. De cara, a vantagem que isso te dá é manutenção simplificada, você sabe ond eestariam acotnecendo erros de SQL e sabe que só rpecis amexer em um lugar. Por tabela você ganha portabilidade de SGBD, meio de persistência, mapeamento…

O Command tem seus usos, por exemplo ele é ótimo apra implementar undo/redo.

O que não deve ser feito é criar Commands do tipo: AdicionarUsuarioNoSistema, que fazem o processo. Dificilmente alguém vai rpecisar de Command de verdade, mas infelizmente os frameworks MVC padrão estão baseados nele.

Alguns legais com e sem Java:

http://c2.com/cgi/wiki?ModelViewController

http://c2.com/cgi/wiki?MvcIsNotObjectOriented

http://www.benjaminbooth.com/tableorbooth/2005/04/m_c_v.html

http://java.sun.com/blueprints/patterns/MVC-detailed.html

Procure aqui e no GUJ discussões sobre fameworks web, tem mais coisa lá do que eu pdoeria te dizer aqui :wink:

Pô, então o ideal é mesmo fazer uma camada a mais de persistência.

Ok, sem problemas, isso é bem obvio mesmo.

O exemplo do objeto.save() iria conter um parametro para especificar o modo de persistência ,ou usar um documento config pra estabelecer como acontece a persistência ,ou ter metodos distintos para cada persistencia, ou usar um command (caso arg = obj XML tal coisa, caso arg = objBanco outra coisa), ou o que?

Vo te falar que até hoje eu só usei bd mesmo, sou iniciante na coisa.

Bom valeu pelas dicas, é bom poder contar com um pessoal bom de bola e disposto.

Um site que tem a comunidade bem legal tbm é o sitepoint.com.

FUI.

EDITADO:usuario.save(){
usuario utiliza um objeto para a persistencia, este objeto tem um metodo incluir (um sql basico).
ficando assim: usuario->objetoPersistencia->save(); esse persistencia deriva de uma interface.
}
Tá ok ?

tem um pdf sobre MCV no site da disciplina q estou cursando na faculdade… Deve ajudar… :grin:

http://www.inf.puc-rio.br/~melissa/informatica/bd3/bd3-modulo3c_mvc.pdf