Como trabalhar POO usando uma lista de telefones.
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
*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
Curtidas 0
Respostas
Thomaz_prg
26/07/2008
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.
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.
GOSTEI 0
Marco Salles
26/07/2008
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
Para Gravar por exemplo
para ler por exemplo:
finalmente para destruir: Auqle Objetos Telefone Criados .. Lembra ???
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 . ..
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 . ..
GOSTEI 0
Gustavo Passos
26/07/2008
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:
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:
GOSTEI 0
Marco Salles
26/07/2008
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
GOSTEI 0
Paullsoftware
26/07/2008
[quote:8e69c8f60e=´Marco Salles´]
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^??
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^??
GOSTEI 0
Marco Salles
26/07/2008
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...
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...
GOSTEI 0