MVC vs MVP

MimiPT

Membro
Oi pessoal! Sou estudante de Engenharia Informática e no âmbito de uma disciplina de Metodologias de Programação III, estou a realizar uma pesquisa acerca do Modelo Arquitectónico MVP. Já descobri que tanto MVC como MVP são idênticos, apenas diferem no Controller e no Presenter. O MVP veio dar resposta às insuficiências do MVC, quando aplicada a componente baseada em interfaces gráficas do usuário. Com os sistemas GUI, eles próprios controlam o input do usuário, com movimentos e cliques de rato, em vez de utilizar um controlador central. É isto, ou estou enganada? Gostaria que dessem a vossa opinião acerca destes dois modelos e, se possível que me aconselhassem alguns links que achem relevantes para o estudo deste tema! Obrigado! :-)
 
O MVC é muito usado em aplicações web. Do MVP nunca tinha ouvido falar. Encontras muita informação na Internet, mas para ter uma primeira ideia, já filtrada e validada por outras pessoas, sites como o Stack Overflow podem ser um bom local de partida para pesquisas. Por exemplo, aqui:

http://stackoverflow.com/questions/2056/what-are-mvp-and-mvc-and-what-is-the-difference

Já agora, se quiseres explorar alternativas fora desses modelos há este artigo interessante sobre o padrão hexagonal, ou ports-adapters:

http://alistair.cockburn.us/Hexagonal+architecture
 
Pelo que percebi do artigo no Wikipedia, no Presenter programas toda a logica de apresentação e não uma parte como pode acontecer no MVC. Por exemplo precisas de apresentar uma lista de pessoas nascidos em 1990 e que tenham carta de condução. Em muitas arquitecturas esta lista é obtida no modelo de dominio (o Model) ou seja tens na classe Pessoa um metodo estatico do genero readAllPersonsWithLicenseCardBirthInYear(Integer year). No Controller invocas esse metodo para obter a lista e apresentar na View.

O problema com esta arquitectura é que rapidamente enches o modelo de dominio com logica usada exclusivamente na apresentação e consequentemente o modelo torna-se muito confuso e extenso. No MVP o tal metodo estatico fica no Controlador (no Presenter) em vez de estar na classe Pessoa (que é dominio ou Model). Assim tens uma separação clara do que é logica de dominio e logica de apresentação. Claro que haverá casos que alguma logica será necessária no dominio e na apresentação (como por exemplo obter todas as pessoas: um "readAll") pelo que pode ficar no dominio.
 
Obrigado nfk e karmak pela ajuda! :) já agora, poderiam disponibilizar-me alguns links ou trechos de código de algum exemplo académico, ou não, de fácil compreensão, pois ainda não estou muito familiarizada com a linguagem C#. De preferência, da parte do Presenter, pois é a parte do modelo arquitectónico em que estou mais focada. Obrigado.
 
Última edição:
MVC e MVP são padrões de desenho usados na programação orientada por objectos, que é um paradigma e não uma linguagem de programação. O que é que isto tem haver com o facto de não estares familiarizada com C#?
 
Penso que não me expliquei bem, peço desculpa! Eu sei que MVP e MVC não são liguagens de programação. O que eu gostaria é de trechos de código que se adequem ao MVP, para eu tentar entender qual o papel do Model da View e do Presenter/Controller no programa em si! Obrigado.
 
Back
Topo