Como trabalhar POO usando uma lista de telefones.
26/07/2008
0
*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
Posts
27/07/2008
Thomaz_prg
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.
28/07/2008
Marco Salles
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 . ..
08/08/2008
Gustavo Passos
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:
11/08/2008
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
11/08/2008
Paullsoftware
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^??
11/08/2008
Marco Salles
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...
Clique aqui para fazer login e interagir na Comunidade :)