none
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

    quinta-feira, 9 de fevereiro de 2012 14:04

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

    domingo, 12 de fevereiro de 2012 17:05

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

    domingo, 12 de fevereiro de 2012 17:05
  • Obrigada por ajudar!
    quinta-feira, 8 de março de 2012 17:18
  • 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.

    quinta-feira, 29 de março de 2012 15:52