Pelo que eu entendi, sua classe sacramento é apenas para servir de base as 
classes especializadas certo??

Então é melhor que seja abstrata para não ser acidentalmente instanciada!!

O método save que exemplifiquei é para que cada classe só saiba salvar os seus 
próprios dados!! Usando um framework de persistência a coisa fica mais fácil 
mas se você for implementar "na mão" teria algo mais ou menos assim


Function TBatisto.Save() : Integer
Var intId : Integer;
Begin
  intId := inherited Save();  // aqui vai chamar o Save de TSacramento
  procedimentos para salvar
End


Function TSacramento.Save() : Integer
Begin
  Procedimentos de salvar os dados
  result := id do registro novo ou alterado
End;

Ricardo Souza <[EMAIL PROTECTED]> escreveu: Olá Valfrid, tudo bem? Agora vc 
complicou o meu entendimento... :-(
Estou voando  na sua explicação. Se vc puder elucidar com um exemplo,
ficarei grato.


Em 13/08/07, Valfrid-Ly Silva Couto  escreveu:
>
>   Ricardo,
>
> Só complementando, já que aparentemente nas suas classes você não teria um
> sacramento "não tipado" o seu objeto "sacramento" deveria ser abstrato para
> não ser instanciado, implementando os métodos "genéricos" e forçando a
> implementação dos métodos nas classes descendentes.
>
> Se você não utilizar um framework de persistência, um exemplo seria o
> método "save" que teria que obrigatoriamente ser implementado em cada classe
> filha para gravar os dados na tabela correta, chamando o método da classe
> pai (sacramento) para que esse gravasse os dados "genéricos" na própria
> tabela!
>
> Joao Morais 

> escreveu:
> ricardo_sx wrote:
> > Alguém teria um sisteminha exemplo para demonstrar como, na prática, é
> > aplicado a herança no delphi entre classes e no Banco de Dados? Pois
> > estou com dificuldades nesse entendimento.
> > Fiz um sistema onde a classe genérica se chama Sacramento e as
> > especializadas se chamam batismo, eucaristia, matrimonio, crisma.
> > No banco de dados eu fiz assim: criei as tabelas sacramento, batismo,
> > matrimonio, crisma e eucaristia. O que era comum a todos eu gravava em
> > sacramento e o que era específico gravava na tabela específica. ou
> > seja: ao registrar um batismo, alguns dados, como nome e endereço
> > cadastrava em sacramento e padrinho, madrinha, data de batismo gravava
> > na tabela batismo. a relação que faço entre a tabela genérica com a
> > especializada é o código de registro que são iguais.
> > Por favor, se alguém puder me orientar a respeito, agradeceria e muito.
> > No momento, preciso, somente, entender esse esquema de forma simples e
> > clara para ficar fixado na mente.
>
> A regra é a seguinte: cada classe deve possuir uma tabela que irá
> guardar os membros desta classe. Neste exemplo:
>
> TContato
> Nome: string;
> Endereco: string;
>
> TPessoa = class(TContato)
> Apelido: string;
>
> TEmpresa = class(TContato)
> NroFiliais: Integer;
>
> você tem três tabelas. A tabela contato tem campos para nome e endereço.
> A tabela pessoa tem apenas o campo apelido. A tabela Empresa tem apenas
> o campo NroFiliais.
>
> Quando você cria uma instância de pessoa, você:
>
> VPessoa.Nome := 'O nome';
> VPessoa.Endereco := 'O endereco, nro';
> VPessoa.Apelido := 'O apelido';
>
> e quando grava, o campo nome e endereço vai para uma tabela, o campo
> apelido vai para outra.
>
> Todas as tabelas tem, além destes campos, o campo Id. Para este caso, o
> campo Id na tabela contato e pessoa tem o mesmo valor, e é desta forma
> que as informações estão ligadas.
>
> Esta é a forma politicamente correta de se escrever um OPF.
>
> Hth.
>
> --
> Joao Morais
>
> --
> <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
>
> Links do Yahoo! Grupos
>
> Flickr agora em português. Você clica, todo mundo vê. Saiba mais.
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>


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



-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

Links do Yahoo! Grupos

 






       Flickr agora em português. Você clica, todo mundo vê. Saiba mais.

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

Responder a