ClipaTec Informática

Receba novidades por e-mail. Digite seu e-mail abaixo e clique no botão "Cadastrar"

Delivered by FeedBurner

12 de julho de 2016

Cadastro Delphi POO + MVC + DAO - O que é MVC?

delphi mvc

Ma-ôeee, só de buenas?
Este é o segundo artigo da nossa série "Cadastro Delphi POO + MVC + DAO". No artigo anterior, criamos o nosso banco de dados. Nesse artigo veremos um pouco de teoria sobre o padrão MVC para compreendermos sua ideologia.
Legal, o que seria MVC? É de comer? Seria um prato típico criado para programadores? kkkkk
Nada disso meus caros, MVC (do inglês Model-View-Controller) é um "design pattern" óóhhh, que chiqueeee, isto é, um padrão de projeto.
Existem muitos padrões de projetos no mundo do desenvolvimento, e o MVC é um dos mais conhecidos. Os padrões de projetos rasamente explicando, são regras de programação, definidas mediante muito estudo, que identificam problemas no mundo do desenvolvimento e oferecem maneiras de solucionar tais problemas.
Por exemplo, em um determinado sistema, existe uma classe onde, deve-se existir apenas um objeto desta classe instanciado. Estamos diante de um problema. Para solucionar isso, surge então o padrão Singleton. Este padrão, quando aplicado no projeto, permite que apenas uma instância de uma determinada classe seja criada. Muito usado na implementação do login no sistema.
No caso do MVC, a principal ideia é a separação da lógica ou regra de negócio da interface do usuário.
Como você já deve ter percebido, o padrão MVC possui três camadas: modelo (model), visão (view) e controlador (controller) como você observa na imagem no topo do artigo.
Vamos falar sobre cada uma delas posteriormente, mas, basicamente, a "view" é a camada de interação do usuário, a "model" é responsável pela manipulação dos dados e a "controller" faz a ponte de comunicação entre a "view" e "model", direcionando e gerenciando as requisições que o usuário faz por meio da "View" e o retorno que a "Model" devolve.
Essa separação das tarefas em camadas, facilita as futuras manutenções no código e as implementações de novos recursos.
Algo interessante, é que as camadas "view" e "controller" dependem da "model", porem, a "model" não depende de nenhuma delas, e isso é ótimo para testes com a "model", pois podem ser feitos independentemente, ou seja, qualquer alteração realizada por meio da "View" não afeta a manipulação de dados, que por sua vez poderão ser reorganizados sem alterar a view, pois, isso se dá por meio da controller que controla o fluxo da aplicação.
O MVC em teoria é simples, mas na prática é um tanto confuso na mente dos programadores. Se estudarmos implementações do MVC, principalmente no Delphi, veremos uma gama de formas diferentes de implementação. Isso acontece porque o MVC sofre diversas variações, que cada programador adapta conforme sua necessidade, raramente vamos encontrar algum projeto seguindo a risca o que define o padrão MVC.
Não seremos diferente kkk. Vamos apresentar a vocês, o padrão MVC com algumas alterações, e agregaremos a camada DAO. Antes de comentar essas alterações, vamos ver o que cada camada faz:

View

É a camada de interação com o usuário, responsável por mostrar/exibir os resultados das operações na tela.
Ela renderiza o conteúdo da model e envia para a controller as ações do usuário.

Controller

É a camada que controla o fluxo de dados, definindo quem executará determinada tarefa.
Ela recebe as requisições do usuário, enquadrando na regra de negócio e direciona para a model, depois, captura o resultado e retorna para a view, ou seja, ela define o comportamento da aplicação. 

Model

É a camada que contém as classes que armazenam os dados.
Ela trabalha com a manipulação de dados. Ela lê e escreve os dados como também a validação dos mesmos.
A model permite que o controlador acesse funcionalidades da aplicação encapsuladas por ela e pode ainda ser divida em “regras do negócio” e “persistência dos dados”.

Quais as vantagens do MVC?

No modelo MVC, as views e models são gerenciadas de maneira simples e fácil de manter. Isso permite que alterações e implementações de novas funcionalidades sejam feitas de maneira simples, podemos alterar a view por exemplo, sem que o sistema todo seja alterado.
Mas não para por ai, ganhamos com o MVC também no reaproveitamento de código, facilidade de manutenção, integração de equipes e/ou divisão de tarefas, camada de persistência independente, implementação de segurança, facilidade na alteração da interface da aplicação, aplicação escalável dentre outras.

Quais as desvantagens do MVC?

Apesar das vantagens superar as desvantagens, é interessante pontuá-las.
O MVC requer uma quantidade maior de tempo para analisar e modelar o sistema, requer integrantes do projeto especializados, não é aconselhável para aplicações pequenas, visto que o tempo de desenvolvimento é maior e por outras razões.

Ufa, chega né. Mas calma ai, deixa a gente falar só um tiquinho da DAO.
A DAO é a camada que persistência de dados. No MVC, isso é feito através da Model, como você acabou de ler acima. Porém, com a agregação da DAO no MVC, então a divisão ficou assim: na model, teremos apenas as classes do sistema com seus métodos de leitura, escrita e validações, a controller permanece do mesmo jeito, recebendo as requisições da view e direcionando, porém, não para a Model, e sim para a DAO agora, que é a camada que vai trabalhar com a persistência dos dados e dar uma resposta para a controller que por sua vez retorna para a view.
Com isso, o código fica mais dividido ainda, vou um pouco além e digo, mais organizado ainda. Então, não teremos aquelas "units" de 700 linhas rsrsrsrs. O código ficará bem divido e com isso ganhamos na manutenção e implementação.
Agora chega né, por favor, já deu, não aguento mais falar de MVC. Agora o que vem nos próximos artigos é a prática.
Se você não entendeu muito bem, abaixo temos uma ilustração, e se mesmo assim não entender, comenta aí. 

MVC - Diálogo

View: Eai controller, na suavidade? O chato do usuário está pedindo para cadastrar um novo cliente no sistema novamente. Já é o terceiro só hoje. Então, pega ai os dados e passa pra mala da model, porque como você sabe, não vou muito com a cara dela, a gente não se entende. Estarei aguardando sua resposta se deu certo ou não pra eu informar para o usuário. Falou?

Controller: Opa nega, eu tô de boa. E tu? Ta jóia, a model nem te vê kkkk, ela só conversa comigo mesmo. Já vou passar esses dados pra ela, e já te dou um retorno. Segura aí, rapidão. 
Controller: Hey model, my sister. Acorda ai, a controller me passou uns dados aqui de um cliente que ele quer cadastrar, e ele está esperando o retorno. Pega ai.

Model: Aff, outra vez? Tá ok, vou validar aqui, se tiver alguma coisa faltando nem vou tentar inserir, já te manda uma resposta pra acertar antes.
(...depois de uns milésimos...)
Model: Olha, validei, deu tudo certo, já gravei no banco, deu tudo certo. Falou bicho, vou dormir novamente.

Controller: Opa, beleza pura. 
Controller: Alô view, ta na escuta? Olha, a model disse que deu tudo certo, os dados do cliente passou nas validações e o mesmo já está gravado no banco. Abração.

View: Muito obrigado amigão. Vou falar aqui para o usuário que "O cliente foi cadastrado com sucesso". Estarei aqui de prontidão, só de olho no usuário. Qualquer coisa, volto a te chamar. Obrigado.

Muito bem galera, e assim chegamos ao fim deste artigo com essa ilustração esplêndida. Não ficou aquelas coisas, mas o importante é o que importa. Ok? 
O que estão achando dessa nova abordagem que adotamos nos artigos? Eu acho que ficou legal. Formalismo da sono ao ler hehehe
Até o próximo pessoal. Te espero lá. Tchau!!!!

Este artigo faz parte da série: Cadastro Delphi POO + MVC + DAO;

(Por ClipaTec Informática)

3 comentários:

  1. Este comentário foi removido pelo autor.

    ResponderExcluir
  2. Respostas
    1. Que bom, o próximo artigo contém vídeo-aula, mas já está com o pessoal da edição, logo publicaremos. Abraço.

      Excluir

Visite nossa página de Política de comentarios antes de comentar para ter certeza de que seu comentário não será excluído! Lembre-se, assim que aprovarmos o teu comentário ele será publicado, por isso, não deixe de sempre visitar nosso blog e conferir nossa resposta ao seu comentário, abraço!