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

">·         Criação de pesquisas usando OO;

·         Criação de relatórios usando OO.

Qual a finalidade

·         Neste artigo serão abordados os conceitos para criação e manutenção de código-fonte orientado a objetos.

Quais situações utilizam esses recursos?

·         Em todo tipo de programa é perfeitamente possível adequar aos conceitos de programação OO.

 

Nota do DevMan

Como criar relatórios orientados a objetos? Veremos como fazer isso nesse artigo, dessa forma fecharemos com chave de ouro. Veremos como criar relatórios e como criar novas telas de acesso aos dados.

 

Finalmente concluímos nossa caminhada e terminaremos nosso sistema. Fazendo uma breve retrospectiva, posso dizer que vimos uma ponta do que é o desenvolvimento orientado a objetos. Vimos que tudo começa por entender as regras do negócio e modelá-las, posteriormente codificá-las e então aplicar testes para que tudo fique assegurado. Depois então pensamos na persistência das informações e depois na boa estrutura que a aplicação deve ter, colocando tudo em sua respectiva camada. Nesta parte final também não será diferente. Vamos continuar com o desenvolvimento OO.

Veículos procurados

Imagine que você está interessado em comprar um veículo, da Volkswagem, modelo Golf. Então você procura algumas revendas de automóveis e preenche um cadastro comprovando sua intenção. De posse desse cadastro, essa revenda, ao receber um veículo que se enquadra nas suas especificações fará um contato convidando-o a ver esse veículo. Esse é o cenário que vamos implementar, já possuímos uma classe TVeiculoProcurado e uma classe TCliente. Vamos imaginar aqui a interface com o usuário para essa situação. Digamos que teremos um formulário inicial já exibindo todos os veículos procurados e que nesse mesmo formulário haja opções para excluir ou incluir um novo veículo procurado. Com isso em mente vamos criar um Data Module específico para essa situação.

                     

Nota do DevMan

Muitos iniciantes não percebem a finalidade de um datamodule e acabam utilizando apenas um para toda sua aplicação, dificultando a localização de controles e consequentemente sua manutenção. Um datamodule existe para ser utilizado como uma ferramenta modular de dados, seu nome realmente quer dizer “modulo de dados”. Dessa forma podemos criar quantos datamodules forem necessários para organizar nossos dados. Uma sugestão é organizá-los por funções específicas dentro do sistema, como se estivesse criando “setores”.

 

Adicione um novo formulário ao projeto, salvando-o como dmVeiculosProcurados. Nele adicione um TClientDataSet e um TDataSource, chamando-os respectivamente de cdsListaVeiculos e dsListaVeiculos. Esse ClientDataSet será nosso DTO que exibirá a lista de veículos procurados que será retornada pelo seu respectivo DAO. Clique duas vezes no cdsListaVeiculos para que possamos acessar seus Fields Editor. Clique então com o botão direito e acesse New Field. Veja que estamos adicionando um novo campo ao ClientDataSet. Essa operação já é bem conhecida, portanto informe o nome do campo, tipo e tamanho conforme a Tabela 1.

 

Campo

Tipo

Tamanho

IdVeiculo

Integer

-

Modelo

String

100

Ano

Integer

-

Cor

String

50

Valor

Currency

-

Contato

String

150

IdCliente

Integer

 

Tabela 1. Campos novos no cdsListaVeiculos

 

Agora é preciso incluir na classe TVeiculoProcuradoDao o método que irá nos retornar todos os veículos com essas informações. Abra a unit Daodbx e DaoU. Em DaoU localize a interface IVeiculoProcuradoDao e adicione uma função chamada ListarTodosProcurados que retorne um TObjectList. Na Listagem 1 vemos a interface já alterada.

 

Listagem 1. IVeiculoProcuradoDao

  IVeiculoProcuradoDao = interface(IDao)

    ['{744B08CF-528F-452B-89F3-EFD103BFA2E7}']

    procedure Excluir(const obj: TVeiculoProcurado);

    function Recuperar(id: Integer): TVeiculoProcurado;

    procedure Salvar(obj: TVeiculoProcurado);

    function ListarTodosProcurados: TObjectList;

  end;

 

Agora é preciso implementar essa função na classe TVeiculoProcuradoDao. Na Listagem 2 temos já o código implementado. Veja que não há segredos. Primeiro declaramos algumas variáveis que receberão a referência a determinados objetos que criaremos. Em seguida, montamos a instrução SQL que trará os dados que precisamos. Então instanciamos a classe TVeiculoProcurado e mais a baixo atribuímos a ela os dados necessários para busca.  Fazemos igual com a classe TAcessorioDao.

 

Listagem 2. Método ListarTodosProcurados

function TVeiculoProcuradoDao.ListarTodosProcurados: TObjectList;

var

  veiculo: TVeiculoProcurado; ...

Quer ler esse conteúdo completo? Tenha acesso completo