hmm.. é que o método Persistir da classe TPersistente seria utilizado
em outra classe por exemplo FuncionarioDAO que em vez de retonar um
objeto "Departamento" iria retornar o objeto Funcionario. E agora? hehehe
valeu.

--- Em delphi-br@yahoogrupos.com.br, Joao Morais <[EMAIL PROTECTED]> escreveu
>
> Ricardo Malikoski wrote:
> 
> Resposta no meio do texto.
> 
> 
> >     Pessoal passei a utilizar o Delphi.Net (versão 2006) e tive um
problemas com classes. Fiz o seguinte:
> > 
> >    Criei uma classe assim: (deixei ela enxuta assim apenas pra
tentar isolar o erro)
> > 
> > 
> > type
> >   TPersistente = class(TObject)
> >   private
> >   public
> >     function Persistir() : boolean; virtual; abstract;
> >   end;
> > 
> > em outra unit:
> > 
> > obs: o tipo "Departamento" é uma classe em outra unit
> > 
> > type
> >   DepartamentoDAO = class (TPersistente)
> >   private
> >   public
> >      function Persistir(pDepto : Departamento) : boolean; 
reintroduce; overload;
> 
> Você não está implementando o método virtual Persistir, ao invés disto 
> você criou outro método com o mesmo nome. Remova o reintroduce, troque 
> overload por override. Como métodos override devem ter o mesmo formato 
> que o método virtual, então você escolhe entre remover o parâmetro 
> pDepto ou adicionar este parâmetro na classe abstrata.
> 
> 
> >   end;
> > 
> > implementation
> > 
> > 
> > { DepartamentoDAO }
> > 
> > function DepartamentoDAO.Persistir(pDepto: Departamento): Boolean;
> > begin
> > 
> > end;
> > 
> > 
> >     Em uma outra unit quando eu crio o DepartamentoDAO dá um erro
de compilação:
> > 
> > function Departamento.Persistir: Boolean;
> > var
> >   objPersistente : DepartamentoDAO;
> > begin
> >   objPersistente := DepartamentoDAO.Create; -->> aqui acontece o
erro: [Pascal Error] ClassDepartamento.pas(56): E2402 
> >                                                                  
                                        Constructing    instance of
abstract class 'DepartamentoDAO'
> 
> Até o Delphi não-sei-que-versão, isto era apenas um warning. É o 
> problema que eu citei acima, você tem que implementar o método abstrato 
> Persistir.
> 
> 
> >   result         := objPersistente.Persistir(self);
> >   objPersistente.Free;
> > end;
> > 
> > 
> > O que fazer ? já tentei várias coisas e nada...
> > 
> 
> 
> --
> Joao Morais
>


Responder a