Guia Delphi

Introdução à POO – Partes 5 e 6

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (1)  (0)

Aprenda de uma forma simples a programar de forma correta

[subtitulo]

Introdução à POO - Parte 5

[/subtitulo]

Atenção: esse artigo tem um vídeo complementar. Clique e assista!

[links]Introdução à POO - Partes 1 e 2
Introdução à Poo - Partes 3 e 4[/links][rotulo-curso/]

[lead]Do que trata o artigo

Este artigo aborda a orientação a objetos com o Delphi, usando uma metodologia simples, didática, de fácil aprendizado. Veremos na teoria, e também na prática, todos os conceitos, fundamentos e recursos oferecidos pelo Delphi para promover a POO.

Para que serve

A POO pode e deve ser aplicada de forma inteligente, ela serve para construir sistemas mais robustos, mais confiáveis, de fácil manutenção, que permitam maior reaproveitamento de código.

Em que situação o tema é útil

A POO é útil em qualquer sistema, seja ele Web, Desktop, Mobile, não importa o tipo de aplicação. Os conceitos aqui apresentados, em um exemplo simples, podem ser utilizados em aplicações reais, como é apresentado em um estudo de caso no final desta série.

Resumo do DevMan

Pacotes são importantes para organizar a forma como nossos componentes são distribuídos. Neste artigo, veremos como criar pacotes e como trabalhar com as sessões contains, requires e dependências. Vamos também examinar como usar UML com Delphi, para modelar nosso pequeno framework. Veremos como criar mais uma classe no framework: TBike, que por tabela já poderá ser usada por TPessoas, graças a abstração. E finalmente, vamos examinar um exemplo que usa interfaces. [/lead]

No artigo da edição anterior, vimos como dar um grande passo além das classes. Vimos como usar componentes. Praticamente tudo o que fazemos hoje no Delphi é usando, ligando e configurando componentes. Vimos a importância de TPersistent, o uso de RTTI (Runtime Type Information) e serialização de objetos, e como as classes “core” da hierarquia da VCL do Delphi estão organizadas, como TObject, TPersistent, TComponent, TControl, TGraphicControl e TWinControl. Além disso, vimos como criar pacotes, que ajudam a organizar componentes e units e também ajudam na modularização, seja em design time ou runtime. O mais interessante foi quando usamos abstração e polimorfismo através de componentes, quando uma propriedade Transporte no componente Pessoa abstraiu os vários tipos complexos de meio de transporte (reforçando, isso é programar para interfaces, ou mais exatamente neste caso, uma classe abstrata).

Este será o penúltimo artigo da série sobre orientação a objetos com o Delphi. Vamos estudar mais sobre pacotes (packages) e as importantes sessões contains e requires. Além disso, vamos criar um novo pacote exclusivo para abrigar as classes de meio de transporte e separar da classe que opera os transportes (pessoa). Veremos também o suporte à modelagem UML no Delphi. Vamos ainda estender nosso framework criando mais um meio de transporte e assim comprovar que ele é expansível e plugável, reforçando todos os princípios que já vimos até aqui. E finalmente, vamos estudar um pouco de interfaces.

[subtitulo]Criando um novo pacote para meios de transporte[/subtitulo]

No Delphi 2010, clique em File>New>Package. Para facilitar, salve o novo pacote no mesmo diretório de nossa aplicação criada até aqui. Usando o Project Manager, no editor do pacote, dê um clique de direita no item contains e adicione todas as units relativas aos meios de transporte, ou seja, uMeioTransporte.pas, uAviao.pas e uCarro.pas. Ainda no Project Manager, dê um clique de direita sobre o grupo de projetos e adicione o pacote pkPessoa. Remova deste último pacote as units que contêm as classes relativas à meios de transporte, deixando somente a unit que define a classe (componente) TPessoa. Clique de direita no grupo e dê um Build em ambos os pacotes, confirmando as dependências.

Como agora a nossa classe (componente) TPessoa referencia um TMeioTransporte que está em outra unit em outro pacote, precisamos trabalhar na seção Requires. Dê um clique de direita sobre este item no pacote pkPessoa, escolha Add Reference, clique em browse e localize o pkTransporte.dcp, que deve estar por padrão na pasta C:\Users\Public\Documents\RAD Studio\7.0\Dcp (no caso do Windows Vista e Delphi 2010). Isto também pode ser feito dando-se agora um clique de direita no nome do pacote e escolhendo Dependencies. No grupo, dê um clique de direita e escolha Build All para compilar novamente ambos os pacotes. Instale o pacote de Transportes. Seu grupo de programas e pacotes devem agora estar semelhantes ao mostrado na Figura 1.

Pacotes pkPessoa e
pkTransporte

Figura 1. Pacotes pkPessoa e pkTransporte

Como você deve ter notado, a seção contains de um pacote indica quais units estão dentro do pacote e serão compiladas no BPL. A seção requires indica que outros pacotes são necessários para que seja feito com sucesso o projeto de compilação. Requires indica dependência e é muito importante que você tome cuidado com isso. Se você construir um grande framework com várias classes distribuídas em vários pacotes, uma mudança em uma única classe pode fazer com que todo o framework seja recompilado. Além disso, se um pacote depende de outro, isso também afeta o deploy. Em nosso exemplo, você não vai conseguir usar o pacote pkPessoa sem distribuir e instalar o pkTransporte, pois em nossa modelagem, toda pessoa deve ser capaz de operar um meio de transporte. Porém, o inverso não é verdadeiro, podemos distribuir meios de transporte sem pessoas, porque não há uma relação de dependência nesse sentido. É nesse ponto que vemos a vantagem de usar classes abstratas e interfaces para diminuir impacto na mudança de interfaces. Poderíamos dar um passo além, como faz a VCL (com DataSources e DataSets), colocando as classes abstratas em um pacote separado e as implementações em outro. Em nosso exemplo, para fins didáticos, não usamos essa abordagem. A esta altura, você já deve estar familiarizado com pacotes e fica aí uma bela sugestão de exercício.

"

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?