Artigo Clube Delphi Magazine 98 - Sistema DataCar em OO

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)

Veremos como aplicar todos os conceitos de Orientação a Objetos ensinada ao longo dessa série de artigos. A aplicabilidade será produzida em forma de cadastros simples e intermediários.

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

Mini-Curso - Boas Práticas - Expert

Sistema DataCar em OO

Aprenda a criar um sistema completo utilizando as metodologias de Orientação a Objetos – Parte 3

 

Neste artigo veremos

·                         Criação dos principais cadastros do sistema;

·                         Aplicabilidade na prática dos conceitos de OO;

·                Criação de cadastros utilizando a metodologia MVC.

Qual a finalidade

·                Veremos como aplicar na prática todos os conceitos da Orientação a Objetos para montagem de cadastros básicos;

Quais situações utilizam esses recursos?

·                Aplicável a todo sistema de gerenciamento de venda de carros.

 

Resumo do DevMan

         Veremos como aplicar todos os conceitos de Orientação a Objetos ensinada ao longo dessa série de artigos. A aplicabilidade será produzida em forma de cadastros simples e intermediários.

 

Após termos construído nosso modelo de classes que representa nosso negócio e termos implementado uma forma de persistir nossas informações e ter testado tudo isso, chegou a hora de desenvolvermos a interação do usuário com o núcleo do sistema.

A idéia aqui é implementar os formulários necessários utilizando as boas práticas da orientação a objetos, contudo sem perder o suporte RAD que o Delphi nos oferece. Isso quer dizer que vamos mesclar, ou até porque não dizer, adaptar o padrão MVC ao RAD do Delphi.

 

Menu principal

Vamos começar pelo menu principal. Abra o projeto DataCar 2008 no Delphi e no projeto adicione um novo formulário, para isso clique com o botão direito do mouse sobre o nome do projeto. No menu que surgir escolha Add New>Form. Salve o projeto e dê o nome de PrincU.dpr para a unit e PrincF.pas para o formulário.

Adicione agora um TMainMenu e um TActionList.  No TActionList adicione uma nova action, dando-lhe o nome de acCadCidade, altere seu caption para  Cidades e na propriedade category digite Cadastros.

Agora no TMainMenu adicione um novo item chamado Cadastros. Nesse item Cadastros vamos relacionar os cadastros básicos do sistema, como cidades, cores, acessórios, marcas etc. Por enquanto vamos criar o subitem Cidades e ligaremos nele a action acCadCidade. Adicione também um TToolBar e um TImagelist. Nesse TToolBar posteriormente vamos adicionar um atalho para as rotinas mais corriqueiras do sistema. O seu formulário principal provavelmente deve estar parecendo com o da Figura 1.

 

Figura 1. Menu principal do sistema

 

Criando a rotina de cadastro de cidades

Vamos iniciar criando um formulário base de cadastro. Isso agiliza e padroniza nosso desenvolvimento. Observe que para isso vamos utilizar herança. Crie um novo formulário e salve-o como cadBaseU.pas e mude a propriedade name para cadBaseF.

Desabilite os botões de maximizar e minimizar e mude a borda para single. Adicione um TToolBar e um TImageList.  Altere as propriedades Height e Width do TImage para 24. Ligue a propriedade Images do TToolBar ao TImageList. Clique com botão direito do mouse sobre o TToolBar e adicione 4 ToolButtons, ajustando sua propriedade Name para tbAdicionar, tbEditar, tbExcluir, tbFechar respectivamente. Ajuste a propriedade caption de cada um deles de acordo com sua função e adicione ao ImageList imagens que representam essas operações. Depois disso adicione um TDBGrid ao formulário. Na Figura 2 podemos ver como pode ficar nosso formulário de cadastro base.

 

Figura 2. Cadastro base

 

Como já mencionado no início deste artigo vamos utilizar o padrão MVC para ligar nossos formulários ao nosso modelo de classes. Não vou detalhar aqui toda a teoria do padrão MVC visto que isso já foi muito bem feito em edições anteriores por outros autores e até por mim mesmo. Contudo quero apenas lembrar que o padrão MVC introduz três partes distintas:

·     Model – É a representação da informação que a aplicação utiliza;

·     View – É a representação gráfica do Model. Por exemplo, um formulário expondo as informações da cidade. Uma View está sempre ligada a um model e sabe como exibi-lo ao usuário e para um determinado Model podem existir várias views. Além disso, também pode ser composta por várias Views;

·     Controller – É responsável em mapear as ações do usuário em ações do sistema, por exemplo, se um botão ou item de menu é clicado é ele que deve definir como a aplicação responderá.

Na definição conceitual também se define a utilização de um DTO (Data Transfer Object), que é responsável por transferir os dados da view para o model ou vice-versa. Hoje vamos fazer uso desse DTO de tal forma que a View não tenha ligação direta com nossas classes que representam o negócio.

 

Implementando o DTO

Nossos objetos DTO serão nada mais do que ClientDatasets que representam os objetos de negócio, nossas entidades. Dessa forma não perdemos os recursos valiosos que o Delphi oferece para construção de interfaces gráficas.

Vamos adicionar um novo DataModule ao projeto e chamá-lo de dmCadastros. Nele vamos adicionar um TClientDataset, então alteramos seu nome para cdsCidade e nele criamos campos que representam a estrutura da nossa classe cidade. Na Figura 3 vemos como ficou nosso DataModule, já com um TDataSource ligado ao cdsCidade.

 

 

Figura 3. dmCadastros

 

Aplicando o MVC

Como já foi mencionado, o MVC introduz três partes, o Model a View e o Controller e como também já foi mencionado, vamos fazer uma adaptação do MVC às nossas necessidades e por isso vamos implementar duas interfaces que irão representar o Controller e a View. Adicione uma nova unit ao projeto, chamando-a de MVCInterfaces.pas e nela adicione o código da Listagem 1.

 

Listagem 1. Interfaces do MVC

unit MVCInterfaces;

 

interface

 

type

  IView = interface

    ['{A1F411E9-294D-444D-9D5B-1D6AC9988819}']

    procedure Initialize;

  end;

 

  IController = interface

    ['{E4BD8853-F6C8-4BD4-B19D-D70B156BD712}']

    procedure Initialize;

  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?