Marcos Douglas wrote:

> João,
> Poderia descrever um exemplo do caso que vc precisa fazer isso?

Yep.

TPressObject
+-TPressQuery

TPressAttribute
+-TPressString
+-TPressInteger
+-TPressReference

TPressObjectMetadata
+-TPressQueryMetadata

TPressAttributeMetadata
+-TPressQueryAttributeMetadata

Cada classe de metadata possui informações de runtime dos objetos de 
negócio.

Um ObjectMetadata possui um ponteiro à classe, informações de 
persistência (pretendo tirar deste nível), etc. Um QueryMetadata possui 
ainda um ponteiro à classe que é comum a todos os objetos da Query. Até 
aqui tudo bem.

Um AttributeMetadata possui informações como Size (string), Min e Max 
(Integer) ou ObjectClass (um ponteiro da classe base do Reference), além 
de informações comuns a todos como Calc. Para as informações específicas 
de cada atributo poderiam ser criadas novas classes de metadata, uma 
para cada tipo de atributo, mas o problema é o QueryAttributeMetadata: 
esta classe possui o campo Category que deve ser incluído em todos os 
tipos de atributo.

Então o que fiz? Criei um único AttributeMetadata que, ao mesmo tempo 
que possui coisas como Size, Max, Min, possui ObjectClass que não tem 
nada a ver com atributos simples. Fiz isto para não criar várias vezes a 
mesma propriedade em classes diferentes.

--
João Morais



> mD
> 
> ---- Mensagem Original ----
> From: "Joao Morais" <[EMAIL PROTECTED]>
> To: delphi-br@yahoogrupos.com.br
> Sent: Ter, Dezembro 5, 2006 11:51 am
> Subject: Re: [delphi-br] Re: Usar ou           não usar DBWares? Eis a 
> questão!
> 
>> Juliano Carvalho - Folhamatic wrote:
>>
>>> Se a questão for somente propriedades fica mais fácil (ou menos dificil)
>>> resolver com interface. Ou estas propriedades são altamente complexas?
>> Neste caso elas sequer possuem implementação, nem precisam de getter ou
>> setter. São propriedades publicadas. Interface só vai deixar mais
>> complicado, então preferi montar uma classe "um por todos", sobrando
>> propriedade em alguns casos. Não resolveu com elegância, mas resolveu.
>>
>> --
>> João Morais
>>
> 
> 
> 
> 

Responder a