Usuário com melhor resposta
Padrão arquitectónico MVP (Model-View-Presenter) ao desenvolvimento de aplicações com a libOpenMetaverse.

Pergunta
-
Olá!
Chamo-me Nadilene e sou estudante do curso Eng.ª Informática.
Comecei agora a estudar sobre o padrão arquitetónico MVP e queria saber se alguém tem informações que possam ser uteis deste tema, quanto a biblioteca libOpenMetaverse.
Ainda não percebo muito bem como juntar os dois conceitos, por isso agradecia se alguém pudesse debater comigo sobre este tema.
Obrigada a todos
- Movido William John Adam Trindade quinta-feira, 9 de fevereiro de 2012 14:07 Forum apropriado (De:C#)
Respostas
-
Bom dia Nadilene,
Você já ouviu falar do padrão MVC ?. O padrão mvc é bem mais divulgado e bem documentado.
As arquiteturas MVC e MVP são padrões que permitem que você consiga reutilizar, testar e dar manutenção do código de uma forma muito melhor do que se não tiver nenhum padrão.
O padrão MVC ou MVP são baseados na divisão do projeto em 3 partes. Interface com o usuário, Regra de negócio e Banco de dados. O padrão MVC se chama Model, View, Controller. Model é reponsável pela representação dos objetos em forma de classes. Exemplo Produto, Empresa, Cliente. São classes que tem somente (geralmente, depende do programador) somente os atributos da classe, ou seja, o que ela têm.
View é responsável por apresentar os dados da Model ao usuário. Aqui pode ser Web ou não lembre-se é um padrão e não uma obrigatoriedade.
A Controller é responsável por tratar as ações com o usuário como exemplo cadastro, filtro, redirecionar a ação com o usuário.
O Mvp que você gostaria de saber é muito parecido com o MVC porem ele é mais adaptável a multi-ambientes, ele se chama Model-View-Presenter a interação com o usuário fica separada no Presenter, nela você teria TODAS as ações com o usuário.
Exemplo na Presenter teria um método chamado Cadastrar que receberia de 2 formas ou uma model pronta com o usuário ou as variáveis Nome, Tipo, Endereço etc... Que enviaria as informações para uma camada onde trataria as regras de negocio que em fim cadastraria no Banco.
Se você precisa-se alterar a interface de web para desktop por exemplo, teoricamente você só teria que implementar a camada Presenter e todo o resto funcionaria, alem disso você conseguiria ter testes unitários da interface ou seja conseguiria testar cada botão (ação com o usuário) já que cada ação corresponde a um método.
O que eu não gosto do MVP é que para uma ação você precisaria implementá-la em várias camadas Exemplo.
Uma nova tela de Cliente deveria ser implementado na tela (exemplo no html do site), teria que criar a model para trafegar entre as camadas, a presenter, seguida da B.L. (projeto com regra de negocio), e ae na D.A.L.(Camada onde fica os comandos com o banco (select, update etc..).
Para colocar uma nova ação teria que colocar na presenter, na B.L. na D.A.L. e na tela. Eu acho muita alteração insignificante somente transportando a model de camada em camada.
O que eu estou utilizando que eu gostei se chama IoC (Inversion of Control) que você consegue utilizar os métodos da DAL e na interface com o usuário sem ter necessáriamente que a interface com o usuário tenha que incluir o projeto da D.A.L. .
Como assim ? Você utiliza interfaces para invocar os métodos das outros camadas mas sem necessariamente incluir o projeto que contem o código.
Links sobre MVC, MVP e IoC
http://en.wikipedia.org/wiki/Inversion_of_control
http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93presenter
http://weblogs.asp.net/scottgu/archive/2007/10/14/asp-net-mvc-framework.aspx
http://msdn.microsoft.com/en-us/library/ff647543.aspx
http://msdn.microsoft.com/en-us/magazine/cc188690.aspx
- Marcado como Resposta Richard Juhasz sexta-feira, 17 de fevereiro de 2012 10:37
Todas as Respostas
-
Bom dia Nadilene,
Você já ouviu falar do padrão MVC ?. O padrão mvc é bem mais divulgado e bem documentado.
As arquiteturas MVC e MVP são padrões que permitem que você consiga reutilizar, testar e dar manutenção do código de uma forma muito melhor do que se não tiver nenhum padrão.
O padrão MVC ou MVP são baseados na divisão do projeto em 3 partes. Interface com o usuário, Regra de negócio e Banco de dados. O padrão MVC se chama Model, View, Controller. Model é reponsável pela representação dos objetos em forma de classes. Exemplo Produto, Empresa, Cliente. São classes que tem somente (geralmente, depende do programador) somente os atributos da classe, ou seja, o que ela têm.
View é responsável por apresentar os dados da Model ao usuário. Aqui pode ser Web ou não lembre-se é um padrão e não uma obrigatoriedade.
A Controller é responsável por tratar as ações com o usuário como exemplo cadastro, filtro, redirecionar a ação com o usuário.
O Mvp que você gostaria de saber é muito parecido com o MVC porem ele é mais adaptável a multi-ambientes, ele se chama Model-View-Presenter a interação com o usuário fica separada no Presenter, nela você teria TODAS as ações com o usuário.
Exemplo na Presenter teria um método chamado Cadastrar que receberia de 2 formas ou uma model pronta com o usuário ou as variáveis Nome, Tipo, Endereço etc... Que enviaria as informações para uma camada onde trataria as regras de negocio que em fim cadastraria no Banco.
Se você precisa-se alterar a interface de web para desktop por exemplo, teoricamente você só teria que implementar a camada Presenter e todo o resto funcionaria, alem disso você conseguiria ter testes unitários da interface ou seja conseguiria testar cada botão (ação com o usuário) já que cada ação corresponde a um método.
O que eu não gosto do MVP é que para uma ação você precisaria implementá-la em várias camadas Exemplo.
Uma nova tela de Cliente deveria ser implementado na tela (exemplo no html do site), teria que criar a model para trafegar entre as camadas, a presenter, seguida da B.L. (projeto com regra de negocio), e ae na D.A.L.(Camada onde fica os comandos com o banco (select, update etc..).
Para colocar uma nova ação teria que colocar na presenter, na B.L. na D.A.L. e na tela. Eu acho muita alteração insignificante somente transportando a model de camada em camada.
O que eu estou utilizando que eu gostei se chama IoC (Inversion of Control) que você consegue utilizar os métodos da DAL e na interface com o usuário sem ter necessáriamente que a interface com o usuário tenha que incluir o projeto da D.A.L. .
Como assim ? Você utiliza interfaces para invocar os métodos das outros camadas mas sem necessariamente incluir o projeto que contem o código.
Links sobre MVC, MVP e IoC
http://en.wikipedia.org/wiki/Inversion_of_control
http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93presenter
http://weblogs.asp.net/scottgu/archive/2007/10/14/asp-net-mvc-framework.aspx
http://msdn.microsoft.com/en-us/library/ff647543.aspx
http://msdn.microsoft.com/en-us/magazine/cc188690.aspx
- Marcado como Resposta Richard Juhasz sexta-feira, 17 de fevereiro de 2012 10:37
-
-
Olá!
Augusto.Silva, queria agradecer por me ajudar a entender melhor este conceito. Também encontrei alguma coisa sobre a segunda parte da pergunta (em relação ao libOpenMetaverse), está aqui um dos links: http://lib.openmetaverse.org/wiki/How_to_create_a_basic_libopenmv_bot_for_osgrid%3F, o que sem dúvida já é um ponto de partida.
Fiquei mais esclarecida sobre sobre o MVC em si, e entendo que sobre este conceito haja mais fonte de matéria e por isso ser mais debatido.
Existem também exemplos práticos da biblioteca dos mundos virtuais e tutoriais: http://lib.openmetaverse.org/wiki/How_to_create_a_basic_libompenmv_bot%3F que vão servir de base para o meu trabalho. Obrigada.