Como trabalhar POO usando uma lista de telefones.

26/07/2008

0

Olá pessoal, tenho um form com um CheckListBox nele tenho que:

*Adicionar
*Editar
*Remover


Estou fazendo o modulo avançado(Developer)
Abaixo estão as minhas Class

interface 

uses Contnrs; 

type 

  TTipoEndereco = (teComercial, teResidencial); 
  TTipoTelefone = (telComercial, telResidencial, telRecado); 

  TEndereco = class 
  private 
    FBairro: string; 
    FUF: string; 
    FCEP: string; 
    FNumero: string; 
    FCidade: string; 
    FRua: string; 
    FTipo: TTipoEndereco; 
    procedure SetBairro(const Value: string); 
    procedure SetCEP(const Value: string); 
    procedure SetCidade(const Value: string); 
    procedure SetNumero(const Value: string); 
    procedure SetRua(const Value: string); 
    procedure SetUF(const Value: string); 
    procedure SetTipo(const Value: TTipoEndereco); 
  public 
    property Rua: string read FRua write SetRua; 
    property Numero: string read FNumero write SetNumero; 
    property Bairro: string read FBairro write SetBairro; 
    property Cidade: string read FCidade write SetCidade; 
    property UF: string read FUF write SetUF; 
    property CEP: string read FCEP write SetCEP; 
    property Tipo: TTipoEndereco read FTipo write SetTipo; 
  end; 

  TTelefone = class 
  private 
    FNumero: string; 
    FTipo: TTipoTelefone; 
    procedure SetNumero(const Value: string); 
    procedure SetTipo(const Value: TTipoTelefone); 
  published 
    property Numero: string read FNumero write SetNumero; 
    property Tipo: TTipoTelefone read FTipo write SetTipo; 
  end; 

  TPessoa = class 
  private 
    FNome: string; 
    procedure SetNome(const Value: string); 
  public 
    property Nome: string read FNome write SetNome; 
  end; 

  TCliente = class(TPessoa) 
  private 
    FDataNascimento: TDateTime; 
    FCPF: string; 
    FEnderecoComercial: TEndereco; 
    FEnderecoResidencial: TEndereco; 
    FTelefones: TObjectList; 
    procedure SetCPF(const Value: string); 
    procedure SetDataNascimento(const Value: TDateTime); 
    procedure SetEnderecoComercial(const Value: TEndereco); 
    procedure SetEnderecoResidencial(const Value: TEndereco); 
    procedure SetTelefones(const Value: TObjectList); 
    procedure Inicializar; 
  public 
    constructor Create; overload; 
    constructor Create(CPF: string; DataNascimento: TDateTime); overload; 
    constructor Create(DataNascimento: TDateTime; Nome: string); overload; 
    constructor Create(Nome: string); overload; 

    constructor Criar; 

    property CPF: string read FCPF write SetCPF; 
    property DataNascimento: TDateTime read FDataNascimento write SetDataNascimento; 
    property EnderecoComercial: TEndereco read FEnderecoComercial write SetEnderecoComercial; 
    property EnderecoResidencial: TEndereco read FEnderecoResidencial write SetEnderecoResidencial; 
    property Telefones: TObjectList read FTelefones write SetTelefones; 
  end; 


implementation 

{ TPessoa } 

procedure TPessoa.SetNome(const Value: string); 
begin 
  FNome := Value; 
end; 

{ TCliente } 

constructor TCliente.Create; 
begin 
  inherited; 
  Inicializar; 
end; 

constructor TCliente.Create(DataNascimento: TDateTime; Nome: string); 
begin 
  inherited Create; 
  Inicializar; 
  Self.DataNascimento := DataNascimento; 
  Self.Nome := Nome; 
//  FDataNascimento := DataNascimento; 
//  FNome := Nome; 
end; 

constructor TCliente.Create(CPF: string; DataNascimento: TDateTime); 
begin 
  inherited Create; 
  Inicializar; 
  Self.CPF := CPF; 
  Self.DataNascimento := DataNascimento; 
end; 

constructor TCliente.Create(Nome: string); 
begin 
  inherited Create; 
  Inicializar; 
  Self.Nome := Nome; 
end; 

constructor TCliente.Criar; 
begin 

end; 

procedure TCliente.SetCPF(const Value: string); 
begin 
  FCPF := Value; 
end; 

procedure TCliente.SetDataNascimento(const Value: TDateTime); 
begin 
  FDataNascimento := Value; 
end; 

procedure TCliente.SetEnderecoComercial(const Value: TEndereco); 
begin 
  FEnderecoComercial := Value; 
end; 

procedure TCliente.SetEnderecoResidencial(const Value: TEndereco); 
begin 
  FEnderecoResidencial := Value; 
end; 

procedure TCliente.SetTelefones(const Value: TObjectList); 
begin 
  FTelefones := Value; 
end; 

{ TEndereco } 

procedure TEndereco.SetBairro(const Value: string); 
begin 
  FBairro := Value; 
end; 

procedure TEndereco.SetCEP(const Value: string); 
begin 
  FCEP := Value; 
end; 

procedure TEndereco.SetCidade(const Value: string); 
begin 
  FCidade := Value; 
end; 

procedure TEndereco.SetNumero(const Value: string); 
begin 
  FNumero := Value; 
end; 

procedure TEndereco.SetRua(const Value: string); 
begin 
  FRua := Value; 
end; 

procedure TEndereco.SetTipo(const Value: TTipoEndereco); 
begin 
  FTipo := Value; 
end; 

procedure TCliente.Inicializar; 
begin 
  FEnderecoComercial := TEndereco.Create; 
  FEnderecoResidencial := TEndereco.Create; 
  FTelefones := TObjectList.Create; 
end; 

procedure TEndereco.SetUF(const Value: string); 
begin 
 FUF := Value; 
end; 

{ TTelefone } 

procedure TTelefone.SetNumero(const Value: string); 
begin 
  FNumero := Value; 
end; 

procedure TTelefone.SetTipo(const Value: TTipoTelefone); 
begin 
  FTipo := Value; 
end; 

end.



Gustavo Passos

Gustavo Passos

Responder

Posts

27/07/2008

Thomaz_prg

Você quer saber sobre a persistência???
Se for, seria necessário a criação de uma Classe DAO, ou então, pode verificar alguns componentes já existentes como por exemplo o InstantObjects.


Responder

28/07/2008

Marco Salles

Rapaz to vendo uma melhor forma de me expressar com voce , mas ta dificil ... É sempre bom ver , estudar aprender POO

Bem vou tentar....Mas preste atenção

O que voce esta se esbarrando é que a Propriedade
FTelefones: TObjectList; é uma lista de Objetos e não mais uma classe
como foi para FEnderecoComercial: TEndereco e
FEnderecoResidencial: TEndereco;

Assim para acessar , voce fazia simplesmente
cliente.EnderecoComercial.rua.
Porém o memso voce não consegue para umcliente.Telefones

O que voce tem que enetender , que o que tem nesta propriedade saõ obejtos telefones ... Para Acessa-los voce tem que fazer uma conversão
de Tipo


var
Cliente:TCliente;


Para Gravar por exemplo
var
Objetotelefone:TTlefone;
begin
ObjetoTelefone:=TTelefone.create
ObjetoTelefone.Numero:=´1111111111111´;
ObjetoTelefone.Tipo:=telResidencial;
//veja que o objeto Telefone foi criado instanciado .. e podemos se 
//desejarmos Atribui-lo a propriedade FTelefones
umcliente.Telefones.Add(ObjetoTelefone);


para ler por exemplo:
var
descricao:String;
i:integer;
for i:=0 to Cliente.Telefones.Count - 1 do
  begin
     //formatando saida
     descricao:=descricao+#13;
     Descricao:=Descricao+´Numero do Telefone : é ´+TTelefone(Cliente.Telefones[i]).Numero+13;
     case TTelefone(Cliente.Telefones[i]).Tipo of
       telComercial: Descricao:=Descricao+´     O Telefone Numero ´+inttostr(i)+´ é do Tipo Comercial´+13;
       telResidencial: Descricao:=Descricao+´   O Telefone Numero ´+inttostr(i)+´ é do Tipo Residencial´+13;
       telRecado: Descricao:=Descricao+´      O Telefone Numero ´+inttostr(i)+´ é do Tipo Recado´+13;
      end;
  end;
showmessage(descricao);
end;


finalmente para destruir: Auqle Objetos Telefone Criados .. Lembra ???
for i:=0 To Cliente.Telefones.Count-1 do
  TTelefone(Cliente.Telefones[i]).Free;

umCliente.Free;


ent]ao é desta forma que vpce acessa , lê , exclui , edita ...Lembre-se que voce esta usando TObjectList para armazenar os Objetos numa Lista

Na sua Abstração que voce fez par Modelar as Classes , voce Agregou na Classe ´Tod´ TClinte a Classe ´Parte´ TTelefones .. Lembrando que um Cliente Pode ter Vários Telefones . ..


Responder

08/08/2008

Gustavo Passos

Obrigado por sua ajuda e desculpe por não responder logo. Realmente vc explicou da forma correta.

O que acontece é que toda a pessoa que inicia, tem duvidas, não sabe se expressar e pensa até em desistir. O que não é o meu caso... :lol:


Responder

11/08/2008

Marco Salles

Obrigado por sua ajuda e desculpe por não responder logo. Realmente vc explicou da forma correta. O que acontece é que toda a pessoa que inicia, tem duvidas, não sabe se expressar e pensa até em desistir. O que não é o meu caso...


Rapaz , é vero... Demorou um pouquinho né.. Eu Bem que pensei :

´Nun entendeu nada´ . ´Deve ter Desistido´ .

Mas ja vi que este não é o seu caso :P :P :P


Responder

11/08/2008

Paullsoftware

[quote:8e69c8f60e=´Marco Salles´]
Obrigado por sua ajuda e desculpe por não responder logo. Realmente vc explicou da forma correta. O que acontece é que toda a pessoa que inicia, tem duvidas, não sabe se expressar e pensa até em desistir. O que não é o meu caso...


Rapaz , é vero... Demorou um pouquinho né.. Eu Bem que pensei :

´Nun entendeu nada´ . ´Deve ter Desistido´ .

Mas ja vi que este não é o seu caso :P :P :P[/quote:8e69c8f60e]Marcos, um material bom sobre POO??? conhece algum^??


Responder

11/08/2008

Marco Salles

Paulo , tem os Artigos da Revista , Tem boms exmplos no Site DevMedia

Mas o que mais me agradou foi o Livro :

´Programação Orientada a Objetos´ usando delphi de
Isaias Camilo Borati
Editora Visual

O Livro é simplismente Magnifico .

Quero Destacar que o conceito é Básico , não Comenta por exemplo das
Classes DÃO , persistência enfims.... Mas lendo-o (é de extrema facilidade a sua leitura) os outros conceitos mais avançados serão mais facilmente Digeridos...


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar