Como parte dos meus estudos para a Certificação Flex 3, estou a rever alguns pontos em que me sinto menos à vontade dentro do maravilhoso mundo do Flex, hoje vou começar por um ponto que ainda hoje reserva bastantes dificuldades de compreensão. Falo do MVC – Model, View, Controller.
O MVC é um padrão quer de desenho quer de arquitectura usando na construção de software. O uso deste padrão é muito vasto, e entende-se como o tratamento separado da lógica de programação e a interface grafica do proprio software que resulta numa enorme versatilidade da aplicação que torna muito mais facil modificar o aspecto visual da aplicação ou o código sem criar dependencias/afectação entre eles lidando facilmente com a comunicação entre utilizador, interface gráfica e o código da nossa aplicação.
Entendendo as siglas;
- Model – Representa a informação / dados da aplicação e as “regras/definições” para manipular / trabalhar com esses mesmos dados da aplicação. No flex, geralmente class pessoais ou classes de serviços para lidar com um backend.
- View – Representa os elementos gráficos da nossa aplicação, como inputText, datagrid, textArea, no flex engloba states, viewstacks, em resumo, todos os componentes gráficos.
- Controller – Representa o tipo de controlo/detalhes que envolvem a comunicação com o Model (Dados e definições) e o View (Interfaces gráficas) estes detalhes resultam da lógica de comunicação entre o Model e o View e normalmente representam também a interacção com o utilizador.
Este padrão MVC foi adaptado por centenas de frameworks, e o flex não escapou à adaptação sendo que o principal objectivo de uso deste MVC no flex é a simplicidade e re-utilização do código criando componentes bem definidos que permitem a obtenção de uma enorme versatilidade de todos os eles, bem como uma facil cominicação entre os mesmo componentes, sem falar numa optimização do desempenho da nossa aplicação.
Ao criarmos um aplicação sem nos preocupar-mos com este padrão teremos uma agradavel supresa no final de a termos terminado. O próprio Flex / Framework já está baseada nesta arquitectura e possui mesmo os seu proprio padrão MVC definido, como os componentes que definem a interface do utilizador, os modelos de apresentação de dados e os componentes responsaveis pelo controlo de dados como interacções com linguagens back-end.
Tentar entender este processo no ambito do flex pode ser muito complicado, mas vamos colocar um caso lógico que explica muitas das operações do flex:
Onde estruturamos devidamente os elementos e acções deste modelo:
Model:
- Usando action script, definindo como estrutura de class.
- Geralmente são usadas varias classes para simplificação de objectivos de cada uma que englobam:
- — Classes de dados nativas
- — Serviços de comunicação com back-end
- — No AIR, classes para lidar com chamadas como o SQLite
View :
- Todas as views são componentes fráficos do flex
- Tem como principal objectivo lidar com o layout da aplicação e disparar eventos para o controller
- Não acedem a dados directamente, apenas usam dados de eventos, dataProviders ou propriedades publicas / databinds
- São geralmente componentes escritos em MXML
Controller :
- Pode existir mais que um, embora apenas seja necessário em aplicações muito complexas.
- É usado como ponte entre o View e o Model visto que estes 2 não podem comunicar entre si directamente. Algumas propriedades / funções :
- — Definir dataproviders
- — Chamadas para o Model
- — Lidar com eventos do View
- — Alternar entre views
- Não são necessáriamente Action Script, no flex os arquivos MXML podem ser elementos “Controladores”
O Padrão MVC não se trata de um programa, formula ou função, trata-se sim de uma forma de organização de código permitindo esta “triologia” de funcionamento; criando uma class controlador que recebe/lida com dados de um conjunto de classes (model) e que faz a devida actualização da nossa interface grafica/componentes (view).
Claro que esta explicação pode ser mal entendida e perdoem-me os experts no padrão MVC, mas basicamente é isto que é feito claro que com alguns pontos e detalhes como vimos em cima.
Este tipo de implementações têm varias variantes, podendo nós, devidamente estruturado, criar um padrão MVC para estruturar a nossa aplicação, embora a adobe disponibilize o Cairngorm que simplifica muito a aprendizagem pincipalmente com exemplos de muitos sites, a sua instalação é muito simples e o seu uso e aprendizagem também. Uma grande referencia em cairngorm é o blog o davidtucker, vejam:
http://www.davidtucker.net/category/cairngorm/
Façam download dos videos e exemplos e facilmente verão do que falo.
Bem, na estrutura do exame Flex 3 este é um dos pontos: “List and describe de differences between model, view and controller in a Flex application”, que nos pede para explicar as diferenças apontadas em cima.
Bem, por agora é tudo… fiquem com alguns pontos de referencia do meu estudo sobre MVC.
http://cristobal.baray.com/indiana/projects/mvc.html (recomendo vivamente)
Abraço e pelo menos espero ter esclarecido alguém, e já agora, alguém com uma opinião ??





7 Comentários
Como sempre, mandando ver muito bem na explicação!
O blog do David Tucker está sem dúvida muito bom e os videos estão de facil compreensao! Deixo aqui também referencia a este blog http://clockobj.co.uk/tag/cairngorm/ , ajudou-me bastante também na compreensão do MVC para Flex, neste caso específico o Cairngorm…aconselho tb a ver o video da 360 Flex San Jose sobre Cairngorm que esta muito bom também!
Cumprimentos.
Oupa Chuckytuh!! Valeu pelas dicas, muito uteis com certeza!!
Abraço.
Ola mario, andei lendo sobre mvp tambem, gostaria de ssaber sua opinião sobre o assunto.
Se possivel faça 1 post sobre este tema.
Hi,
Goog Explanation.
Colud u guide me for certification
Hi naresh!
There are some posts that i’ve made for Flex Certification, just look:
http://msdevstudio.com/blog/category/certificacao-flex/
Hope it helps and thanks 4 the comment.
Pessoal, achei um exemplo legal de model para arquiteturas MVC
http://renanzambrin.wordpress.com/2010/07/08/air-flex-3-data-storage-mvc/