Postagens Recentes

quarta-feira, 23 de outubro de 2013

Programação orientada a objetos - 1º Parte



Olá amigos,
Quero apresentar meu primeiro artigo sobre Programação Orientada à Objetos usando Delphi.

O objetivo deste artigo é mostrar na prática como criar um programa orientado à objeto em Delphi, não apresentar conceitos sobre Orientação à Objetos.

Precisamos desenvolver um programa Orientado a Objeto para cadastrar clientes.
Para cada clientes cadastrado temos o Nome, CPF e a Data de nascimento.

- Crie um novo projeto e salve como POO_Delphi.

- Crie uma nova Unit, salve com o nome uPessoa e coloque o código abaixo:

unit uPessoa;

interface

uses
  // Foi declaro esta uses por causa do TDateTime
  SysUtils;

type TPessoa = class(TObject)
  protected
    FNome: string;
    FCpf: string;
    FDtNasc: TDateTime;
  public
    property Nome: string read FNome write FNome;
    property CPF: string read FCpf write FCpf;
    property DtNasc: TDateTime read FDtNasc write FDtNasc;
end;

implementation

{ TPessoa }

end.

- Crie um novo formulário, coloque 2 TGroupBox, três TLabel, dois TEdit, um TListView e um TMaskEdit.
- Em uses (logo depois da interface, inclua a unit uPessoa.
- Altere a propriedade Name e Caption de cada um deles conforme mostrado abaixo:

   TGroupBox - gbxCadastro - Cadastro
   TGroupBox - gbxConsulta - Consulta
   TLabel - lbNome - Nome:
    TLabel - lbCPF - CPF:
   TLabel - lbDtNasc - Dt. nasc.:
    TEdit - eNome
   TEdit - eCPF
    TButton - btnSalvar - Salvar
   TButton - btnRemover - Remover
   TMaskEdit - meDtNasc

   * Atenção *
   TListView - Name: lvConsulta
   ReadOnly: True
   RowSelect: True
   ViewStyle: vsReport
   Columns adicione 4 colunas e altere a propriedade Caption de cada uma das colunas.
   Código, Nome, CPF e Dt. nasc.
 
- Declare a procedure e a function na seção private

   procedure proGravaRegistro(const Value: TPessoa; ListView: TListView);
   function fncGetRegistro(ListView: TListView): TPessoa;

- Implemente a procedure e a function declarada

procedure TfrmMain.proGravaRegistro(const Value: TPessoa; ListView: TListView);
begin
  with ListView.Items, Add do
  begin
    Caption := IntToStr(ListView.Items.Count);
    SubItems.Add(Value.Nome);
    SubItems.Add(Value.CPF);
    SubItems.Add(DateToStr(Value.DtNasc));
  end;
end;

function TfrmMain.fncGetRegistro(ListView: TListView): TPessoa;
begin
  Result := TPessoa.Create;

  if Assigned(lvConsulta.Selected) then
  begin
    Result.Nome := ListView.Items.Item[ListView.Selected.Index].SubItems[0];
    Result.CPF := ListView.Items.Item[ListView.Selected.Index].SubItems[1];
    Result.DtNasc := StrToDate(ListView.Items.Item[ListView.Selected.Index].SubItems[2]);
  end;
end;

- No evento do OnClick do botão btnSalvar, implemente o seguinte código:

procedure TfrmMain.btnSalvarClick(Sender: TObject);
  procedure proConsiste(Value: TCustomEdit; Msg: string);
  begin
    if Trim(Value.Text) = '' then
    begin
      ShowMessage(Msg);
      Value.SetFocus;
      Abort;
    end;
  end;

var
  _rPessoa: TPessoa;
begin
  proConsiste(eNome, 'Informe o nome.');
  proConsiste(eCPF, 'Informe o CPF.');
  proConsiste(meDtNasc, 'Informe a data de nascimento.');

  try
    StrToDate(meDtNasc.Text);
  except
    ShowMessage('Data de nascimento não é uma data válida.');
    meDtNasc.SetFocus;
    Abort;
  end;

  _rPessoa := TPessoa.Create;
  try
    _rPessoa.Nome := eNome.Text;
    _rPessoa.CPF := eCPF.Text;
    _rPessoa.DtNasc := StrToDate(meDtNasc.Text);

    proGravaRegistro(_rPessoa, lvConsulta);

    ShowMessage('Cadastro realizado com sucesso!');
    eNome.Clear;
    eCPF.Clear;
    meDtNasc.Clear;
  finally
    _rPessoa.Free;
  end;
end;

- No evento OncClick do btnRemover, implemente o seguinte código:

procedure TfrmMain.btnRemoverClick(Sender: TObject);
begin
  if not Assigned(lvConsulta.Selected) then
    ShowMessage('Selecione um registro.')
  else
    begin
      lvConsulta.Selected.Delete;
      eNome.Clear;
      eCPF.Clear;
      meDtNasc.Clear;
    end;
end;

- No evento OnClick do lvConulta, implemente o seguinte código:

procedure TfrmMain.lvConsultaClick(Sender: TObject);
var
  _rPessoa: TPessoa;
begin
  _rPessoa := fncGetRegistro(lvConsulta);

  try
    if _rPessoa.Nome <> '' then
    begin
      eNome.Text := _rPessoa.Nome;
      eCPF.Text := _rPessoa.CPF;
      meDtNasc.Text := DateToStr(_rPessoa.DtNasc);
    end;
  finally
    _rPessoa.Free;
  end;
end;

- Execute o programa que acabamos de desenvolver, preencha os campos e teste as funcionalidades.

Bem pessoal, espero ter colaborado e qualquer dúvida postem aqui que eu responderei o mais rápido possível.

Em breve estarei postando a segunda parte desta série. Aguardem...

Você pode baixar o fonte do programa clicando aqui,

Atualizações - Gratis



Smiley :)
:D
:)
:[
;)
:D
:O
(6)
(A)
:'(
:|
:o)
8)
(K)
(M)

Nenhum comentário:

Postar um comentário