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 view 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)
Este comentário foi removido pelo autor.
ResponderExcluirValeu, gostei... Tô na expectativa.
ResponderExcluirQue bom, o próximo artigo contém vídeo-aula, mas já está com o pessoal da edição, logo publicaremos. Abraço.
Excluirkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk to morrendo de rir dessa conversa. to estudando agora esse conceito e de cara ja entendi tudo como funciona. continua assim mano . flw vlw \o diz pra model que o usuario quer registrar meu comentario no sistema =)
ResponderExcluirQue bom que você conseguiu entender amigo. Um grande abraço, sucessos em seus estudos. Precisando estamos aqui.
ExcluirParabéns pela publicação! Aguardando as próximas...
ResponderExcluirEm breve amigo. Grato.
ExcluirNo diálogo da controller com a view, onde lê-se "a controller me passou uns dados aqui", seria "a view me passou uns dados aqui", certo?
ResponderExcluirObrigado amigo pela observação, a correção foi feita. Por mais que passa por revisões, as vezes sempre escapa algum errinho KK, um forte abraço, volte sempre.
ExcluirParabéns pelo artigo.. e principalmente pela forma irreverente e simplificado de expor seu entedimento sobre MVC. Essa analogia em forma de dialogo ficou top para exemplificar o modelo de programação que para muuuuuitos ainda é um paradigma.
ResponderExcluirBom trabalho !
Grato amigo. Estamos ai sempre procurando uma maneira fácil de explicar coisas mais difíceis. Um forte abraço, volte sempre.
ExcluirQuando sai outra parte ?
ResponderExcluirEm breve amigo. Estamos trabalhando nas próximas partes. Abraço.
ExcluirEstou esperando a próxima parte... Parabéns pelos artigos.
ResponderExcluirSomos gratos. Em breve sai o próximo. Abraço.
ExcluirMuito bom o artigo, e a conversa informal ficou top demais. Parabéns.
ResponderExcluirCremos que o informal as vezes facilita mais o entendimento. Abraço e sucessos pra vc sempre.
ExcluirCara, tu só pode ser do Nordeste! Pq tu fala as mesmas "mugangas" que falamos aqui e o texto fica instrutivo e divertido ao mesmo tempo. Parabéns pelo excelente trabalho! Tô aprendendo enquanto me divirto! Abraço !
ResponderExcluirQue bom, esse é objetivo, facilitar o entendimento. Um grande abraço e sucessos pra vc.
Excluir