Artigo Clube Delphi 82 - Uma abordagem prática em aplicações OO no Delphi - Parte 2

Artigo da Revista Clube Delphi Edição 82.

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

Clique aqui para ler esse artigo em PDF.

POO

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

 

Como discutido na edição anterior, na primeira parte deste artigo, o paradigma orientado a objetos de desenvolvimento de software está cada vez mais se tornando o padrão de desenvolvimento. No entanto, os reais benefícios da orientação a objetos são efetivamente alcançados quando se possui domínio efetivo de conceitos da orientação a objetos e da linguagem de programação utilizada, além de assuntos co-relacionados, como padrões de projeto e persistência.

Desta forma, na primeira parte deste artigo foi apresentado um estudo de caso utilizado para exemplificar o desenvolvimento de software orientado a objetos, além da definição de todas as classes, métodos e atributos do modelo. Foi apresentado ainda o conceito de mapeamento objeto-relacional e como utilizar esta abordagem no escopo do estudo de caso apresentado. Por fim foi definida a estratégia de conexão com o banco de dados, além de ter sido apresentada a definição das classes responsáveis pela manipulação e persistência dos objetos (Classes DAO).

Nesta segunda parte é apresentada a implementação da estratégia de persistência de objetos utilizada, além de exemplos e codificação de persistência e manipulação dos objetos no banco de dados relacional.

 

Classes de Persistência

Ao final da primeira parte deste artigo foi definida a estratégia de persistência e manipulação dos objetos. Foi possível apresentar o padrão de projeto DAO (Data Access Object), que busca estreitar os benefícios da orientação a objetos com a maturidade do banco de dados relacional.

A seguir serão tratadas as implementações dos métodos de persistência das classes FuncionarioDiaristaDAO e FuncionarioDAO, cobrindo assim um exemplo completo envolvendo um funcionário diarista, tratando inclusive a associação desse com um departamento, conforme definido no modelo de domínio.

Para a definição dos demais métodos das classes DAO, cujos códigos são semelhantes aos demonstrados, basta realizar poucas modificações, principalmente nas expressões em SQL codificadas.

Na Listagem 1 está definido o Persistir da classe FuncionarioDiaristaDAO. Esse método é responsável por persistir as informações obtidas de um objeto da classe de domínio FuncionarioDiarista e armazená-las no banco de dados.

 

Listagem 1. Definição do Persistir da classe FuncionarioDiaristaDAO

1.function FuncionarioDiaristaDAO.Persistir(

2.  pFuncDia: FuncionarioDiarista): Boolean;

3.var

4.  vDataModule: TdtmdlDados;

5.begin

6.  result := False;

7.  vDataModule := TdtmdlDados.Create(nil);

8.  vDataModule.clntdtstPrincipal.Close;

9.if pFuncDia.getOID = '' then

10.begin

11.  pFuncDia.setOID(self.GerarOID);

12.  vDataModule.sqldtstPrincipal.CommandText :=

13.'select OID, Nome, Tipo, Departamento, NumDias,'+

' ValorDia from FUNCIONARIO where OID is null';

14.  vDataModule.clntdtstPrincipal.Open;

15.  vDataModule.clntdtstPrincipal.Insert;

16.  vDataModule.clntdtstPrincipal.FieldByName(

'OID').AsString := pFuncDia.getOID;

17.end

18.else

19.begin

20.  vDataModule.sqldtstPrincipal.CommandText :=

21.' select OID, Nome, Tipo, Departamento, '+

'NumDias, ValorDia from FUNCIONARIO where OID = ''' +

pFuncDia.getOID + '''';

22.  vDataModule.clntdtstPrincipal.Open;

23.  vDataModule.clntdtstPrincipal.Edit;

24.end;

25.vDataModule.clntdtstPrincipal.FieldByName(

'NOME').AsString := pFuncDia.getNome;

26.vDataModule.clntdtstPrincipal.FieldByName(

'TIPO').AsString := 'D';

27.vDataModule.clntdtstPrincipal.FieldByName(

'DEPARTAMENTO').AsString :=

pFuncDia.getDepartamento.getOID;

" [...] continue lendo...

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados