Este artigo tem por finalidade destacar a importância de se organizar uma aplicação em camadas lógicas, como conseguir isso separando a interface visual de sua lógica ao fazer uso do padrão MVVM.
ArtigosDelphiPadrão MVVM (Model View ViewModel) no Delphi
De
que se trata o artigo
Este artigo tem por
finalidade destacar a importância de se organizar uma aplicação em camadas
lógicas, como conseguir isso separando a interface visual de sua lógica ao fazer
uso do padrão MVVM e como ele pode ser aplicado em Delphi através do Framework
DSharp. São abordados conceitos como DataBinding, separação de camadas e as
vantagens que essa separação traz.
Em
que situação o tema é útil
Este tema é utilizado
para se organizar o código fonte de uma aplicação, separando as funcionalidades
existentes em camadas lógicas. Um exemplo do que deve ser separado é a camada
visual e a camada de negócios, que uma vez independentes uma da outro, permitem
a aplicação de outra boa prática, o uso de testes automatizados.
MVVM no Delphi
Desde o
Delphi 2010 vários recursos internos foram acrescidos à linguagem Delphi.
Muitos deles localizados na parte de RTTI, ou introspecção de informações. Com
isso a linguagem foi ficando poderosa o suficiente para facilitar o
desenvolvimento de Frameworks que hoje auxiliam na aplicação das mais diversas
boas práticas da orientação a objetos. A divisão de responsabilidades é uma
dessas. Porque a camada de interface precisa estar tão ligada à camada de
negócios? O ideal é que ela somente apresente os dados. Conseguir isso não era
fácil, contudo temos agora o DSharp, um Framework que implementa o padrão de separação
visual MVVM. O ponto chave desse padrão é a utilização do recurso chamado DataBinding,
ou ligação de dados, para propiciar essa separação. É exatamente isso que o
DSharp traz e que vamos explorar neste artigo, construindo exemplos e
discutindo a teoria.
A separação da interface de usuário (UI) do
restante das regras de negócio não é um assunto novo. Mesmo assim essa
separação não é aplicada no dia a dia pela grande maioria dos desenvolvedores.
Muitos pensam que para alcançar esse objetivo seria necessário alterar toda sua
programação, abandonar o estilo RAD (Rapid Application Development) do Delphi e
se voltar totalmente para a Orientação a Objetos.
É muito comum encontrar projetos onde os
códigos para exibição de dados, sentenças SQL e validação de negócio estão
centralizados nos formulários, esse é o famoso código espaguete ou macarrônico.
Fazer um projeto dessa maneira é muito rápido e em tese, não é errado, pois o
que importa é resolver o problema de um cliente. Mas além de pensar simplesmente
nisso seria bom pensar também na vida desse projeto.
Existe uma fase no ciclo de vida de um projeto
intitulada manutenção. Nela são implementadas melhorias, correções e até mesmo
novos recursos. Essa fase pode fazer com que um projeto seja menos competitivo
que outro ou até mesmo mais custoso. Neste caso, pode-se dizer ser menos
competitivo porque dependendo de como foi escrito, alterar uma rotina pode
levar dias, semanas. E consequentemente isso gera custo, o que torna cara a
manutenção. O código macarrônico causa essa situação.
As camadas do projeto são amarradas entre si,
gerando uma dependência desnecessária, impossibilitando a reutilização de
rotinas, regras de negócio. Sem falar a aplicação de rotinas consagradas para
atestar qualidade, como testes unitários.
Arquitetura
Em um sistema com boa arquitetura encontramos
algumas divisões lógicas que visam facilitar a manutenção e adição de novos
recursos. Essas camadas podem ser vistas na Figura 1.
Figura 1. Camadas lógicas de um software
Para entender a funcionalidade de cada camada,
vamos aplicar um exemplo comum, uma situação conhecida por todos, um formulário
de cadastro. Esse formulário representa a camada de apresentação do sistema,
isto porque é nela que os dados são apresentados ao usuário.
Em um sistema Cliente/Servidor, a sua camada de
domínio, de base dados e até mesmo serviços podem ser representadas pelos Data
Modules existentes e seus componentes de acesso ao banco de dados.
Por último, temos a camada global que pode ser
representada pelo seu conjunto de funções e procedimentos públicos.
Continuando com o paralelo a um sistema comum,
desenvolvido de forma macarrônica, nos formulários nós fazemos acesso direto
aos Data Modules, aos ClientDataSets, geramos SQL, tudo sem preocupação alguma,
ou seja, nós misturamos o que seriam nossas camadas sendo que o correto é
separar as camadas.
Quando essas camadas se misturam é dito que
existe um acoplamento entre elas. No momento que você insere código SQL em
evento OnClick de um botão o acoplamento foi realizado. Seu formulário, que é
sua camada de apresentação, está fazendo acesso direto aos recursos do que
seria sua camada de dados. Isso impede a reutilização da lógica contida no
formulário. Tudo isso dificulta a manutenção do seu sistema porque você terá
SQL espalhado por todo código e não apenas centralizado em uma área.
Outra prática que é muito comum é de se criar
os eventos e dentro deles escrever um código tão longo que para entender o que
está sendo feito é quase como ler um livro. Consequentemente a rotina ali
dentro poderia ser quebrada em classes ou funções.
Quando uma rotina faz mais do que foi projetada
a fazer é dito que existe uma baixa coesão nela. A baixa coesão é outro
problema para a boa manutenção do seu Software. Então, como podemos separar as
camadas sem evitando a baixa coesão e alto acoplamento?
Quem já está no mercado há algum tempo com
certeza já ouviu sobre os padrões MVC (Model-View-Controller) ou MVP
(Model-View-Presenter). Esses padrões de projeto, que são soluções atestadas
por vários desenvolvedores, sugerem uma solução à separação da UI. Esses são
padrões bem genéricos, que podem ser implementados por qualquer linguagem
orientada a objetos, visto que não utilizam recursos específicos.
O MVC para separar a camada de apresentação cria três partes distintas,
o Model, a View e o Controller. Podemos
defini-los da seguinte forma: Model – É a representação da informação que a
aplicação utiliza; View – É a representação gráfica do Model. Por exemplo, um
formulário expondo as informações de um cliente. Uma View está sempre ligada a
um model e sabe como exibi-lo ao usuário. Além disso, também pode ser composta
por várias Views; Controller – É responsável em mapear as ações do usuário em
ações do sistema, por exemplo, se um botão ou item de menu é clicado é ele que
deve definir como a aplicação responderá. O MVP é por sua vez, uma
extensão do MVC, tratando a View
apenas como uma camada simples que
implementa uma Interface
contendo todas as propriedades e métodos necessários para o funcionamento da
aplicação. Dessa maneira, se precisarmos incluir uma nova camada de
apresentação, basta implementar a Interface
em questão e a mesma funcionará da mesma maneira. Enquanto no MVC a View tem acesso ao Model e ao Controller, tornando assim a relação fortemente acoplada, no MVP
a View “conhece” apenas o Presenter, possibilitando que o Presenter faça o “meio de campo”
entre as demais camadas.
Oferta válida para todos os planos durante o mês de dezembro
+3 MESES
Grátis
Veja os resultado dos nossos alunos
Conquistas reais de quem está aplicando o método
<Perguntas frequentes>
Carreira
Por onde devo iniciar os estudos?
Recomendamos começar pelo Plano de Estudo Carreira Programador Front-End. Essa área da programação é mais visual e intuitiva, tornando-a ideal para iniciantes. No Front-End, você aprenderá a criar a parte visual dos sites, como layout, cores e interatividade. Depois de dominar o Front-End, você pode avançar para Programador Back-End, onde aprenderá a lidar com a lógica e o funcionamento interno dos sites, e, finalmente, para Programador Mobile, focando no desenvolvimento de aplicativos para smartphones. Nossa metodologia é estruturada de forma progressiva para garantir que você desenvolva confiança e experiência ao criar projetos reais, como sites estáticos e dinâmicos.
Em quanto tempo vou me tornar um programador?
O tempo necessário para se tornar um programador varia de acordo com a dedicação de cada estudante. Com nossa metodologia, que inclui um Plano de Estudo detalhado e suporte contínuo, você pode se tornar um programador de 6 meses a um ano, dependendo do seu ritmo e esforço. Nossa abordagem prática e orientada a projetos ajudará a acelerar seu aprendizado.
Eu preciso de um diploma de faculdade para começar a atuar como programador?
Não. Ser programador é uma excelente oportunidade para quem não possui diploma de faculdade. Muitas empresas contratam baseadas nas habilidades técnicas e experiência prática, não necessariamente em diplomas. Após conquistar uma vaga, você pode optar por complementar sua formação com um diploma.
Por que a programação se tornou a profissão mais promissora da atualidade?
A necessidade de programadores cresceu exponencialmente, especialmente após a pandemia de Covid-19, que forçou muitas empresas a se adaptarem ao digital. Com o crescimento das empresas de tecnologia, a demanda por programadores aumentou. Atualmente, há mais de 200 mil vagas abertas no Brasil devido à falta de profissionais qualificados.
Metodologia
Quais são os principais diferenciais da DevMedia?
Didática e Metodologia
Com mais de 20 anos de experiência, nossa metodologia foca em menos aulas e mais prática. Desenvolvemos dezenas de projetos e exercícios para ajudar você a se tornar um programador completo. Nossos projetos são desafiadores e autênticos, não apenas exercícios repetitivos.
Projetos reais e exercícios
Você desenvolverá diversos projetos práticos em cada carreira (Front-End, Back-End e Mobile), recebendo mentoria e suporte contínuo. A prática é essencial, e oferecemos milhares de exercícios para ajudar você a fixar o conteúdo e melhorar sua posição no ranking.
Suporte ao aluno
Nossa plataforma oferece suporte dedicado com professores experientes, respondendo suas dúvidas em menos de uma hora. Isso garante que você receba a ajuda necessária durante toda a sua jornada de aprendizado.
Gamificação
A DevMedia utiliza gamificação para tornar o aprendizado mais envolvente e motivador. Você acumula pontos e moedas por acertos, que podem ser trocados por produtos e customizações no seu card pessoal. Além disso, o sistema de ranking mensal incentiva a competição amigável e a melhoria contínua.
O que eu irei aprender estudando pela DevMedia?
Ao estudar conosco, você se tornará um programador Full Stack, dominando Front-End, Back-End e Mobile. Utilizamos a linguagem JavaScript, a mais utilizada no mercado, preparando você para criar sistemas webs e aplicativos celulares. Nossa abordagem prática inclui exercícios para fixar o conhecimento e desenvolvimento de projetos reais que te preparam, para o mercado de trabalho.
Quais as vantagens de aprender programação através da linguagem JavaScript?
Ela é Multiplataforma, ela vai te permitir programar para web e para celulares utilizando praticamente a mesma sintaxe.
Elá é Full Stack. Ela te permite criar aplicações Front-end, Back-end e Mobile. Isso acelera muito sua carreira e aumenta suas possibilidades de pegar trabalhos autônomos e conquistar uma vaga no mercado.
Ela é fácil de aprender. Como ela não exige conhecimento inicial em “Orientação a Objetos” ela se torna mais simples com uma curva de aprendizado suave e vai te permitir começar a programar mais rápido do que outras linguagens
A plataforma oferece certificados?
Sim, oferecemos dois tipos de certificados: o certificado de conclusão, que você adquire ao consumir o conteúdo, e o certificado de autoridade, que você obtém ao acertar exercícios. Ambos possuem carga horária, que pode ser utilizada para fins acadêmicos, como atividades complementares na faculdade, e também para comprovações em processos seletivos ou no seu currículo.
A plataforma tem suporte ao aluno, como funciona?
Sim, temos uma equipe de programadores pronta para ajudar com todas as suas dúvidas! Durante o horário comercial, o tempo médio de resposta é de até 10 minutos. E não se preocupe, também oferecemos suporte à noite e nos finais de semana, com um prazo de resposta um pouco maior.
A DevMedia me forma como programador Full Stack?
Sim! Oferecemos uma formação completa, do zero até Full Stack. Nosso foco é na prática, então você vai encontrar muitos exercícios e projetos reais ao longo do curso. Garantimos que você sairá com a autonomia necessária para desenvolver seus próprios projetos com confiança!
Tem horário para as aulas?
Não, não temos horários fixos para as aulas. Todo o nosso conteúdo está disponível para você acessar a qualquer momento, permitindo que você estude conforme sua própria disponibilidade e ritmo. Dessa forma, você pode integrar o aprendizado à sua rotina de maneira mais flexível e eficaz.
Por que a DevMedia não usa videoaulas em sua didática?
Nosso foco principal é formar programadores de verdade. Sabemos que o dia a dia de um programador envolve muita leitura, interpretação e escrita de código. Por isso, nosso conteúdo é desenvolvido para ambientar você nesse processo desde o início, proporcionando mais autonomia e acelerando seu aprendizado.
Na vídeo-aula é o professor que está lendo, interpretando e escrevndo o código para você, isso limita o seu progresso. Ao ler e interagir diretamente com o conteúdo, você exercita sua capacidade de leitura e concentração, além de poder avançar no seu próprio ritmo. Dessa forma, você se torna um programador mais independente e preparado para os desafios reais do mercado.
Preciso de um computador específico para estudar na DevMedia?
Não é necessário nada específico. Qualquer computador com processador atual e memória de 8 GB é suficiente.
Eu consigo estudar pelo celular?
Sim, a DevMedia possui um aplicativo que te permite seguir com seus estudos de qualquer lugar.
A DevMedia tem aplicativo?
Sim, nosso aplicativo está disponível na Play Store e na Apple Store, permitindo que você estude de forma prática e conveniente em qualquer lugar.
Preciso estar na faculdade para acompanhar os estudos na DevMedia?
Não, a faculdade não é necessária. Você não precisa de nenhum conhecimento prévio para iniciar os estudos na nossa plataforma.
Assinatura e Pagamentos
Quais são os planos de assinatura disponíveis?
Oferecemos o plano anual, o valor total é lançado no cartão de crédito, parcelado em 12 vezes, e você precisa dispor do valor total no limite do seu cartão. Você também pode optar por pagar no PIX
Adquirindo o plano, terei acesso a todo o conteúdo?
Sim, ao assinar nossa plataforma, você desbloqueia acesso total a todo o nosso conteúdo, sem precisar comprar nada separadamente.
A plataforma tem planos vitalícios?
Não, nossos planos são anuais, garantindo que você tenha acesso contínuo às atualizações mais recentes e aos novos conteúdos. A tecnologia evolui rapidamente, e um plano vitalício oferece um conteúdo estático que se tornará ultrapassado em pouco tempo. Com nossos planos anuais, você está sempre à frente, aprendendo as novidades e tendências mais atuais no mundo da programação.
A DevMedia tem fidelidade?
Sim, nosso plano tem uma fidelidade de 12 meses, o que garante o tempo ideal para você explorar nosso conteúdo e desenvolver a autonomia necessária para trabalhar com programação.
Como funciona o cancelamento?
Nós garantimos seu direito de cancelamento com reembolso total dentro dos primeiros 7 dias.
Para que você aproveite ao máximo seu investimento, oferecemos suporte personalizado para orientá-lo na utilização da plataforma. Também temos a opção de transferência de titularidade do plano, permitindo que outra pessoa aproveite o restante do seu período de assinatura.
Cadastro
Como excluir meus dados da plataforma?
Para excluir seus dados da plataforma, acesse o link : https://www.devmedia.com.br/fale-conosco/ e abra um protocolo de 'Exclusão de dados'. Nossa equipe processará a solicitação e removerá todas as informações do seu cadastro.
Compartilhe esse conteúdo com um amigo!
Faça login para ganhar recompensas.
Ou
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.