Orientação a Obj

Delphi

04/06/2012

Boa noite pessoal, estou com a seguinte situação: tenho um objeto chamado

TEmpresaBO e dentro dele tenhu uma propriedade

[TBusinessObject]
[TJoinColumn(emppademp,Codigo)]
[TColumn(emppademp, ftWideString, 3, False, Empresa Padrão, ,False)]
property EmpresaPadrao : TEmpresaBO read GetEmpresaPadrao write SetEmpresaPadrao;


o Construtor do objeto deveria ser assim:


constructor TEmpresaBO.Create;
begin
  Self.FEstado := TEstadoBO.Create;
  Self.FCep := TCepBO.Create;
  Self.FBairro := TBairroBO.Create;
  Self.FEmpresaPadrao := TEmpresaBO.Create
end;


Dessa forma temos o stackoverflow, qual seria a melhor maneira de tratar isso ?

Leandro

Leandro

Curtidas 0

Respostas

Marco Salles

Marco Salles

04/06/2012

qual o objetivo desta propriedade ??

property EmpresaPadrao : TEmpresaBO read GetEmpresaPadrao write SetEmpresaPadrao

ela é a propria instancia .. è o proprio Objeto

se nçao desse StackOverflow imagine a situação

var
obj:TEmpresaBO;
begin
obj:=TEmpresaBO.crate;
ai teriamos
Obj = obj.EmpresaPadrao ????
GOSTEI 0
Leandro

Leandro

04/06/2012

a propriedade é do mesmo tipo do objeto sim...

é que no cadastro de empresa tenho uma empresa padrao de onde pode ser compartilhado os dados...

o property é do mesmo tipo da empresa isso nao quer dizer que é o objeto em si..

posso resolver a situação criando uma tabela de relacionamento...

EmpresaAtiva : TEmpresaBO
EmpresaPadrao : TEmpresaBO

mais nao queria ter que agir dessa forma... por que é algo comum no seu objeto voce ter uma propriedade dele mesmo...
GOSTEI 0
William

William

04/06/2012

Uma alternativa seria subrescrever o constructor, passando um parâmetro do tipo TEmpresaBO, ou seja, uma instância do próprio objeto, será que seria viável?
GOSTEI 0
Leandro

Leandro

04/06/2012

Olá pessoal a forma que achei mais interessante foi criar um outro objeto TEmpresaPadraoBO, sem a propriedade de empresa.
acredito que seja uma das formas mais corretas.

abraço a todos.
GOSTEI 0
Marco Salles

Marco Salles

04/06/2012

Vc tentou fazer omo o colega sugeriu ????

Uma alternativa seria subrescrever o constructor, passando um parâmetro do tipo TEmpresaBO, ou seja, uma instância do próprio objeto, será que seria viável?
GOSTEI 0
Leandro

Leandro

04/06/2012

Não tentei, por que pelo que intendi ia ficar preso a mesma questão, pois esse objeto passado por parametro teria a propriedade empresa, logo teria o mesmo problema.
GOSTEI 0
Marco Salles

Marco Salles

04/06/2012

Acho que não , pq ocontructor seria diferente
GOSTEI 0
Leandro

Leandro

04/06/2012

É mais esse objeto diferente ia possuir uma outra propriedade Empresa chegando a um loop teste ai
que vais entender.
GOSTEI 0
Marco Salles

Marco Salles

04/06/2012

É mais esse objeto diferente ia possuir uma outra propriedade Empresa chegando a um loop teste ai
que vais entender.


Mas ai que entra o singleton para permitir somente uma isntancia , para não ficar no Loop
GOSTEI 0
William

William

04/06/2012

Colega analisando novamente seu constructor, realmente minha idéia de sobreescrever o constructor não serve.

Uma segunda alternativa seria mudar de lugar essa atribuição da propriedade.
GOSTEI 0
Leandro

Leandro

04/06/2012

Ate pensei em criar uma tabela pra relacao... mais da forma que fiz funcionou...

valeu.
GOSTEI 0
Marco Salles

Marco Salles

04/06/2012

Ate pensei em criar uma tabela pra relacao... mais da forma que fiz funcionou...

valeu.


de fato , tentei utilizar com o overload do constructor e o Singleton mas tb não consegui . Apesar de não entender
a real necessidade , seria bom se vc colocasse a sua solução completa para servir de referencia a futuras dúvidas
similares
[]sds
GOSTEI 0
POSTAR