Neste artigo veremos inicialmente um pouco sobre a base e conceitos da arquitetura da RTTI e, em seguida, aplicaremos alguns exemplos práticos, demonstrando como é simples obter todo o poder e versatilidade da RTTI no Delphi.
ArtigosDelphiAplicando a RTTI para serializar informações
Artigo do tipo Exemplos Práticos
Aplicando a RTTI para serializar informações A reflexão computacional
(ou somente reflexão) é um tema muito antigo e consiste na capacidade de um
sistema observar e interagir sobre o seu próprio comportamento. Através do
conceito de reflexão, é possível obter informações sobre a estrutura e estado
de um objeto de forma flexível, possibilitando o seu tratamento genérico.
É possível através de
reflexão alterar o valor de um atributo ou até mesmo invocar um método de um
determinado objeto sem que seja feita uma menção direta a sua instancia, como é
feito tradicionalmente.
Em linguagens que não
utilizam o paradigma reflexivo, no momento da compilação e geração do código de
baixo nível (geralmente Assembly), as informações sobre a estrutura dos dados e
objetos se perdem, porém, em uma linguagem com suporte a reflexão, essas
informações são armazenadas e mantidas em tabelas de Metadados, fazendo com que
seja possível obter informações sobre esta estrutura posteriormente, em tempo
de execução.
A grande maioria das
linguagens já possui suporte a reflexão e já fazem uso desta internamente,
porém, o uso deste conceito por desenvolvedores é algo um pouco mais recente.
Outro exemplo a ser citado
é a criação do Test Patterns xUnit, o padrão de projetos base para a criação do
framework JUnit (BOX 1).
Em que situação o tema é útil Quando é
necessário criar rotinas de serialização de dados, mapeamento de dados de forma
dinâmica e criação de frameworks genéricos, de forma a reduzir a duplicidade de
código e facilitar a manutenção do mesmo.
BOX 1 - JUnit
O JUnit foi criado por
Kent Beck e Erich Gamma, baseados no SUnit que é um framework de automação de
testes unitários para Small Talk, criado por Kent Beck. O JUnit, assim como o
SUnit, é utilizado para criação de testes unitários automatizados em Java que
posteriormente serviu de base para a criação do DUnit, sua versão para Delphi.
O padrão xUnit utiliza o conceito de reflexão computacional para generalizar,
publicar e executar os métodos de testes unitários criados pelo desenvolvedor.
Run-Time Type
Information
No Delphi, é possível tirar proveito do conceito de Reflexão
Computacional através da Run-Time Type Information, ou como é mais conhecida,
RTTI.
É através da RTTI que o próprio Delphi consegue em tempo de execução
extrair e manipular informações de classes, objetos, componentes e etc. Um
exemplo claro de uso da RTTI é a forma como o próprio IDE do Delphi lista as
propriedades e eventos de um determinado componente no Object Inspector, que
inclusive, foi o principal motivo que fez com que o Delphi passasse a ter
suporte a reflexão computacional ainda em sua primeira versão. O mecanismo que
torna possível a conversão dos dados armazenados em um arquivo .dfm em objetos,
é a RTTI. Além destes, podemos citar ainda a forma como o framework DataSnap
publica suas classes remotas e trafega informações entre o servidor e os
clientes.
As versões mais recentes
do DataSnap trafegam dados no formato texto em notação JSON. Apesar da
possibilidade de camuflar esse tráfego em uma comunicação Delphi 2 Delphi (BOX 2), internamente, ocorre uma série
de tratamentos utilizando a RTTI, o que viabiliza a comunicação entre as
camadas envolvidas no processo. Ainda abordando o multicamadas, quando se está
trabalhando com um servidor REST e clientes em outras linguagens, como
JavaScript por exemplo, essa questão se torna evidente, devido ao fato do
encapsulamento dos dados trafegados não serem camuflados.
BOX 2 – Delphi 2 Delphi
A forma mais popular de se
trabalhar com o DataSnap é através de uma comunicação Delphi para Delphi, onde,
no lado cliente, é utilizado o componente TSQLConnection do dbExpress para se
criar uma comunicação com um servidor DataSnap. Por meio dessa conexão criada
pelo componente TSQLConnection, é possível dentre outras coisas criar chamadas
na aplicação cliente, que utilizam do Proxy para realizar as chamadas nos
métodos remotos do servidor DataSnap. Para isso, basta utilizar-se da opção
Generate DataSnap Client Classes no menu de contexto do componente TSQLConnection,
quando este estiver com uma conexão DataSnap estabelecida.
Até a versão 2009 do Delphi, os recursos disponíveis da RTTI
para o desenvolvedor eram extremamente limitados e de uso complexo. Porém, com
o lançamento da versão 2010, a RTTI passou por significativas melhorias e seu
uso passou a ser consideravelmente mais simples, fazendo com que o conceito
viesse a se tornar gradativamente mais popular entre os desenvolvedores, ainda
que a passos curtos.
Apesar dessa reformulação e da ainda pequena popularização da
RTTI, o assunto continua extremamente teórico e com poucas aplicações
práticas.
Inicialmente veremos um pouco sobre a base e conceitos da
arquitetura da RTTI e, em seguida, aplicaremos alguns exemplos práticos,
demonstrando como é simples obter todo o poder e versatilidade da RTTI no
Delphi.
Principais estruturas
utilizadas
O funcionamento da nova RTTI do Delphi está totalmente vinculada
ao uso da unit RTTI.pas. Nessa unit estão localizados os tipos e principais
métodos utilizados para tirar proveito de seus recursos. Dentre esses tipos,
vale o destaque para as seguintes estruturas:
·
TRttiContext - É o elemento chave do
funcionamento da RTTI. O TRttiContext é utilizando para acessar as informações
dos tipos públicos de uma aplicação e seus pacotes associados.
·
TRttiType - É a classe base para todos os tipos
que podem ser acessados pela RTTI. Através dela é possível expor métodos e
atributos de um determinado tipo, capturado pelo TRttiContext.
·
TValue - Consiste em uma estrutura de
armazenamento de dados genérica, largamente utilizada nas rotinas da RTTI.
Geralmente as instâncias de objetos, ou o conteúdo de variáveis e estruturas em
RTTI são armazenados em estruturas do tipo TValue.
A partir dessas estruturas e outras auxiliares é possível tirar
proveito de todo potencial da RTTI, como veremos a seguir.
O fluxo básico de funcionamento da RTTI no Delphi é o seguinte:
Primeiramente é criado um contexto RTTI através do objeto TRttiContext, a
seguir, são recuperadas informações sobre uma determinada estrutura, (seja uma
classe ou um record) e estas são armazenadas em uma estrutura do tipo
TRttiType. Essa extração de informações é feita também através de TRttiContext.
A partir do da classe TRttiType é possível obter informações sobre campos
(TRttiField), propriedades (TRttiProperty), métodos (TRttiMethod) e etc. No
caso de campos e propriedades, é possível extrair informações sobre o tipo de
dado que é armazenado, o valor que está armazenado neste campo em uma
determinada instancia, o nome do campo, se ele possui algum Custom Attribute, a
visibilidade deste campo dentro do encapsulamento ( ...
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.