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

 



Responder a