Vamos lá, isso são conceitos de Orientação a Objetos.
 
1º. No conceito de polimorfismo, por exemplo, tenho uma classe Animal,
dela, crio uma classe chamado Cavalo e outra classe chamada Tubarão.
Na classe Animal, eu crio um método Comer, mas não implemento ela, as
quais só irei implementar nas classes Cavalo e Tubarão.
Então eu crio uma variável chamada Animal1 da classe Animal, mas ao
instanciar, instancio a classe Cavalo.
Quando eu chamar o Animal.Comer, ele estará chamando o que eu instanciei
na classe Cavalo.
No nosso caso, o que foi instanciado foi um TFloatField, mas quando você
pega um FieldByName, ele ta retornando a classe básica dele que é a
Tfield, mas os métodos que ele irá executar, é a do TFloadField.
 
2º. Ele não executa o raise, porque para se chamar o método da classe
Pai, precisa da chamada inherited, que nesse caso não foi implementado e
foi simplesmente substituído pelo o que foi implementado.
 
Entendeu?
 
Abraços
 
Eduardo
 
 
-----Mensagem original-----
De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED]
Em nome de Filipe Belchior
Enviada em: sexta-feira, 22 de abril de 2005 14:04
Para: delphi-br@yahoogrupos.com.br
Assunto: RES: [delphi-br] Re: TField... dúvida
 

bom, Eduardo, eu até pensei nisso mas...

1º. Eu disse q "não é obrigado" a implementação
por causa de um exemplo... na classe
TDataset (herdada por TTable e outros), o método
FieldByName retorna uma TField, e não uma subclasse
de TField, portanto não foi implementado o método
GetAsCurrency ou GetAsFloat.

2º. Mais fundo ainda nessa curiosidade, é q, o método
GetAsFloat não implementa nada mais q um "raise", nem
o seu Result ele preenche, portanto, quando nós usamos
a propriedade AsCurrency, estamos executando um raise!?



--- Em delphi-br@yahoogrupos.com.br, "Eduardo E. J. Menoncello"
<[EMAIL PROTECTED]> escreveu
> Filipe, se ela não for implementada, ela criará um erro.
> É por isso que os caras que fizeram isso colocaram o "raise".
>  
> Então, se o seu TField trabalhar com boolean, por exemplo, e vc
colocar
> o AsFloat, ele vai dar erro.
> Então eles simplesmente já trataram esse erro pra você, se não, a cada
> implementação, teria que fazer esse tratamento.
>  
> Espero ter esclarecido... ;)
>  
> []'s
>  
> Eduardo
>  
> -----Mensagem original-----
> De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED]
> Em nome de Filipe Belchior
> Enviada em: sexta-feira, 22 de abril de 2005 13:29
> Para: delphi-br@yahoogrupos.com.br
> Assunto: [delphi-br] Re: TField... dúvida
>  
> 
> poxa pessoal, devo confessar q estou frustrado com as primeiras
> resposta à minha "curiosidade".
> 
> Eduardo, eu sei q o método GetAsCurrency "pode ser" implementado
> por classes herdando TField, mas tbm "pode naum ser", pois, por ser
> um método virtual não obrigado a sua implementação na subclasse.
> E inclusive, o método GetAsCurrency já tem implementação na classe
> TField... e é justamente essa implementação na TField a minha
> curiosidade.
> 
> Rubem, AsFloat e AsCurrency são propriedades e não métodos, e essas
> duas propriedades chamam o método GetAsFloat. E outra, eu NÃO
> tenho problema, estou discutindo um assunto produtivamaente.
> 
> 
> Pessoal, a minha curiosidade está na implementação do método
> GetAsFloat, pois é executado um "raise", sendo q o retorno do método
> é um Double.
> 
> 
> 
> --- Em delphi-br@yahoogrupos.com.br, Filipe Belchior
> <[EMAIL PROTECTED]> escreveu
> > olá pessoal! paz!
> > 
> > Alguém poderia me explicar, em especial o método "protegido" 
> > GetAsCurrency...
> > observei o fonte em DB.pas, e a classe TField... o método
> GetAsCurrency 
> > chama
> > o método GetAsFloat q, apesar de retornar um "Double", dentro do
> método é
> > exucutado um "raise"... num entendi nada!!!!!
> > 
> > 
> > Filipe Belchior
> > Itaguaí, RJ
> > MSNM [EMAIL PROTECTED]
> > SKYPE: filipebfs
> 
>  
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]





-- 
<<<<< 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] ou [EMAIL PROTECTED]






Yahoo! Grupos, um serviço oferecido por:


PUBLICIDADE
 
<http://br.rd.yahoo.com/SIG=12ajs3iv9/M=264379.5078783.6203979.1588051/D
=brclubs/S=2137111264:HM/EXP=1114196679/A=2332652/R=0/id=noscript/SIG=11
9058f8i/*http:/br.download.yahoo.com/messenger/> 
 
  _____  

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]
<mailto:[EMAIL PROTECTED]> 
  
*         O uso que você faz do Yahoo! Grupos está sujeito aos Termos do
<http://br.yahoo.com/info/utos.html>  Serviço do Yahoo!. 


[As partes desta mensagem que não continham texto foram removidas]



-- 
<<<<< 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] ou [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