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

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
 (0)  (0)

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

. imagem_pdf.jpg

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;

28.         vDataModule.clntdtstPrincipal.FieldByName(

      'NUMDIAS').AsInteger := pFuncDia.getNumDias;

29.         vDataModule.clntdtstPrincipal.FieldByName(

      'VALORDIA').AsCurrency := pFuncDia.getValorDia;

30.         vDataModule.clntdtstPrincipal.Post;

31.         if vDataModule.clntdtstPrincipal.ApplyUpdates(

      -1) = 0 then

32.         begin

33.           result := True;

34.         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?