Artigo Clube Delphi 81 - Uma abordagem prática no desenvolvimento de aplicações OO no Delphi

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)

O objetivo deste artigo é exemplificar o uso prático do paradigma Orientado a Objetos no desenvolvimento de uma aplicação no ambiente Delphi 7, utilizando persistência em um banco de dados relacional.

Esse artigo faz parte da revista Clube Delphi Edição 81. Clique aqui para ler todos os artigos desta edição

imagem_pdf.jpg

POO

Uma abordagem prática no desenvolvimento de aplicações OO no Delphi – Parte 1

 

Com o passar dos anos, o paradigma Orientado a Objetos tem sido extensivamente utilizado na construção de sistemas de software e tornou-se um dos padrões no desenvolvimento de aplicações. São vários os benefícios que esse paradigma traz à equipe de desenvolvimento e talvez a isso se deva o seu sucesso.

No entanto, para realmente fazer uso dos benefícios da Orientação a Objetos, como reutilização de código, manutenibilidade do sistema, entre outros, é necessário que a equipe tenha domínio de assuntos co-relacionados como padrões de projeto, da linguagem de programação utilizada, persistência e principalmente entender os conceitos da Orientação a Objetos.

Atualmente, um dos obstáculos no desenvolvimento de aplicações OO é a persistência de objetos. Os bancos de dados puramente Orientados a Objetos são de fato os mais adequados para a persistência, mas a indisponibilidade atual desses, seja devido ao custo, diversidade e principalmente amadurecimento, faz com que seja necessária uma busca por alternativas para a realização dessa tarefa.

Uma das soluções encontradas para o problema é a utilização de camadas de persistência para manipulação dos objetos utilizando bancos de dados relacionais. Essa abordagem vem sendo amplamente utilizada no mercado, principalmente para o desenvolvimento de sistemas de médio a grande porte.

Basicamente une a rapidez e o amadurecimento das bases de dados relacionais com os benefícios da Programação Orientada a Objetos (POO). A função principal de uma camada de persistência é portar transparentemente os objetos de uma aplicação para uma base de dados relacional de forma genérica.

Para isso, são utilizadas principalmente técnicas de mapeamento objeto-relacional com o intuito de mapear as classes e associações para tabelas e relacionamentos. A utilização de uma camada de persistência, embora pareça trivial inicialmente, se mostra complexa na prática, uma vez que são várias as configurações que devem ser feitas para que a camada funcione corretamente, além de outros fatores que dificultam sua utilização.

Utilizando esse mesmo raciocínio, uma outra solução a abordada neste artigo, é a própria aplicação acessar o banco de dados relacional e realizar o mapeamento objeto-relacional, persistindo seus objetos. Com isso, a aplicação é capaz de persistir e manipular os objetos em bancos de dados relacionais de forma rápida e transparente, não necessitando de uma camada de persistência desenvolvida por terceiros.

Buscando entender essa abordagem, o objetivo deste artigo é exemplificar o uso prático do paradigma Orientado a Objetos no desenvolvimento de uma aplicação no ambiente Delphi 7, utilizando persistência em um banco de dados relacional.

Para isso, são apresentados alguns padrões de desenvolvimento que buscam maximizar os benefícios da utilização do paradigma e facilitam a tarefa de persistência de objetos.

Este artigo está dividido em duas partes. Na primeira é apresentado um estudo de caso utilizado para exemplificar o desenvolvimento de software orientado a objetos utilizando os padrões de desenvolvimento, além da definição das classes, métodos e atributos do modelo. É apresentado ainda o conceito de mapeamento objeto-relacional e como utilizar esta abordagem no escopo do estudo de caso apresentado. Por fim, ainda na primeira parte é definida a estratégia de conexão com o banco de dados e das classes responsáveis pela persistência a manipulação dos objetos.

Na segunda parte será implementada a estratégia de persistência de objetos utilizada, além de exemplos e codificação de persistência e manipulação dos objetos.

 

Estudo de Caso

No escopo deste artigo é apresentado um estudo de caso para exemplificar o desenvolvimento de um software Orientado a Objetos utilizando padrões de desenvolvimento no ambiente Delphi 7. Com ele é possível verificar e exemplificar a utilização de padrões de projeto que auxiliam o desenvolvimento da aplicação, de técnicas de Programação Orientadas a Objetos e de persistência de objetos.

O estudo de caso, apresenta um fragmento de um sistema maior, representado aqui pela relação entre funcionários e departamentos de uma empresa, através das classes Departamento, Funcionario, FuncionarioMensalista e FuncionarioDiarista. A classe Funcionario é abstrata, servindo para a definição dos elementos comuns às suas subclasses através do mecanismo de herança.

Todos os funcionários devem estar lotados em um Departamento, que pode ter vários funcionários. A Figura 1 representa o diagrama de classes do estudo de caso.

 

Figura 1. Diagrama de Classes do estudo de caso

 

Através desse estudo de caso, são abordados temas como classes, objetos, métodos, atributos, persistência de objetos, herança, polimorfismo, associações e padrões de projeto, além de temas pertinentes ao ambiente de desenvolvimento, como utilização de componentes, classes e controles disponibilizados pelo Delphi.

Para a implementação do estudo de caso será utilizado o Delphi 7 como ferramenta de desenvolvimento e, para a persistência de objetos será utilizado o banco de dados relacional Firebird. É utilizada ainda a abordagem de programação em camadas, que busca, entre outras coisas, o desacoplamento de funções da aplicação, facilitando assim o desenvolvimento e garantindo maior manutenibilidade.

No escopo deste artigo é utilizada uma camada para apresentação, representada pela interface do sistema, uma camada de domínio, representada pelas classes de negócio da aplicação, uma camada de persistência, representada pelas classes DAO (Data Access Object) que são responsáveis pela persistência e manipulação dos objetos no banco de dados.

E, por fim, uma camada de banco de dados, representado pelo SGBD (Sistema Gerenciador de Banco de Dados) Firebird. A Figura 2 exibe a disposição das camadas utilizadas no estudo de caso.

 

Figura 2. Disposição das camadas do estudo de caso

 

Classes, Atributos e Métodos

Com um projeto criado no Delphi 7, o primeiro passo é implementar a definição das classes do modelo apresentado. Para isso, é criada uma unit chamada untDominio.pas. Neste artigo, todas as classes do modelo são definidas e implementadas nessa unit.

A Listagem 1 apresenta a definição da classe Departamento e sua implementação. Já na Listagem 2 é apresentada a classe abstrata Funcionario. Por fim, a Listagem 3, exibe a implementação da classe FuncionarioDiarista. A definição e implementação da classe FuncionarioMensalista não é apresentada pois é muito similar à FuncionarioDiarista.

 

Listagem 1. Definição da classe Departamento

1. type

2.   Departamento = class

3. private

4.   OID: string;

5.   fDescricao: string;

6. public

7.   function getOID(): string;

8.   procedure setOID(pOID: string);

9.   function getDescricao: string;

10.       procedure setDescricao(pDescricao: string);

11.       function Persistir: Boolean;

12.       class function Obter(pOID: string): Departamento;

13.       class function ObterTodos: TList;

14.       function Destruir: Boolean;

15.     end;

16.      

17.      implementation

18.      

19.     function Departamento.getOID: string;

20.     begin

21.       result := OID;

22.     end"

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?