Type TPessoa = Class(TObject) Private FCodigo : Integer; FNome : String; LstEndereco : TList; Protected ... Public Constructor Create; Property Codigo : Integer Read FCodigo; Property Nome : String Read FNome Write FNome; Property Enderecos : TList Read LstEndereco Write LstEndereco;
Function ListaPessoas: TList; Virtual; Abstract; End; Type TPessoaFisica = Class(TPessoa) Private FSexo : TSexo; FNascimento : TDateTime; FIdentidade : String; FCPF : String; Protected ... Public Constructor Create; Property Sexo : TSexo Read FSexo Write FSexo; Property Nascimento : TDateTime Read FNascimento Write FNascimento; Property Identidade : String Read FIdentidade Write FIdentidade; Property CPF : String Read FCPF Write FCPF; Function ListaPessoas: TList; Override; End; Type TPessoaJuridica = Class(TPessoa) Private FRazaoSocial : String; FCNPJ : String; Protected ... Public Constructor Create; Property RazaoSocial : String Read FRazaoSocial Write FRazaoSocial; Property CNPJ : String Read FCNPJ Write FCNPJ; Function ListaPessoas: TList; Override; End; A função ListaPessoas terá obrigatoriamente que ser implementada nas classes filhas por se tratar de um método abstrato. Qualquer dúvida, poste aí que a gente tenta responder com mais detalhes. Sds, Romario Francisco Trindade escreveu: > Deixa eu ver se estamos falando da mesma coisa... > Pelo o que eu entendi, o codigo ficaria assim > type TPai = class(TObject) > private > Filhos : TObjectList; > public > property Filhos : TObjectList read GetFilhos; > .... > end; > type TFilho = class(TObject) > public > Pai : TPai; > .... > end; > É isso? O problema que eu vejo é fazer um typecast na TObjectList para > pegar os filhos, o que pode gerar erros. > Sds. > Francisco > > > On 11/10/05, Romario (Listas) <[EMAIL PROTECTED]> wrote: > >>Na orientação a objetos, o filho conhece tudo do pai (com exceção do que >>estiver especificado como Private), mas o pai não sabe nada a respeito >>do filho. >> >>O que pode e deve ser feito nesse caso é: >> >>+-------+ >>| PAI | >>+-------+ >>/ \ >>/ \ >>/ \ >>/ \ >>/ \ >>/ \ >>/ \ >>+---------+ +---------+ >>| Filho 1 |-----| Filho 2 | >>+---------+ usa +---------+ >> >>No Delphi pode existir a referência cruzada desde que ambos não estejam >>na cláusula Uses da Interface. >> >>Sds, >> >>Romario >> >> >> >>Francisco Trindade escreveu: >> >>>Pessoal, >>>estou com uma duvida em como implementar uma relacao 1 para N em >>>orientacao a objetos. >>>A duvida que tenho é se eu posso ter bidirecionalidade nessa relação, ou >>>seja, as duas classes conhecendo uma a outra, uma vez que isso causaria >> >>uma >> >>>referencia circular no Delphi, e nao pode ser compilado. >>>[]´s >>> >>>-- >>>-- >>>Francisco _______________________________________________________ Yahoo! Acesso Grátis: Internet rápida e grátis. Instale o discador agora! http://br.acesso.yahoo.com/ -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> <*> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages <*> Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html