Caro João, obrigado pelas dicas! vou fazer e ver se funciona. Qualquer coisa
retorno, lembrando que bons filmes têm trilogia e, possivelmente, o meu terá
a parte 3 rsrsrsrs.



Em 28/05/07, Joao Morais <[EMAIL PROTECTED]> escreveu:
>
>    Ricardo Souza wrote:
> > Romário, antes de mais nada, agradeço a atenção dispensada para o meu
> > problema. Quanto a ele, os atributos anteriormente informados estão
> > corretos, pois a classe sacramento engloba 4 classes especialistas, a
> saber:
> > batismo, crisma, eucaristia e matrimônio e os atributos que constam nela
> > estão corretos.
> >
> > E, sobre o problema de executar o que está na function consultar
> localizada
> > em sacramento, basta eu colocar o termo virtual e fazer o código
> normalmente
> > e, depois, em batismo faço nova declaração da mesma function consultar
> e, no
> > corpo dela, incluo inherited para que faça o que antecessor tem + o
> código
> > do herdeiro?
> > Ex.:
> > ----------------------------------------------------------
> > classe sacramento:
> > function consultar (var texto:string;id:byte):byte; virtual;
> > ...
> > function TUCSacramento.consultar (var texto:string;id:byte):byte;
> > begin
> > {código a ser executado}
> > end;
> > ----------------------------------------------------------
> > classe batismo
> > type TUCBatismo = class (TUCSacramento)
> > ...
> > function consultar (var texto:string;id:byte):byte;
> > ....
> > function TUCBatismo.consultar (var texto:string;id:byte):byte;
> > begin
> > inherited;
> > {código do consultar batismo a ser executado}
> > end;
> > ----------------------------------------------------------
> >
> > É isso mesmo que eu entendi?
>
> Falta alguns detalhes:
>
> Na classe abstrata, inclua o termo virtual depois de cada método que
> você queira especializar. Mas apenas na classe, na implementação você
> não precisa recolocar o virtual.
>
> Na classe especializada, inclua o termo override para os métodos que
> você quer modificar comportamento. Aqui também, apenas na linha que
> declara o método. Na implementação não precisa do override.
>
> Dentro do método que possui um override você usa o inherited para chamar
> o que foi declarado na classe anterior.
>
> Por enquanto é isso, o restante fica para uma futura "parte 3" pra não
> complicar além do necessário.
>
> --
> Joao Morais
>
> > Em 27/05/07, Romario (Listas) <[EMAIL PROTECTED]<rbr_vix_es%40yahoo.com.br>>
> escreveu:
> >> Ricardo,
> >>
> >> Ao meu ver, você está colocando quatro objetos em uma classe só.
> >>
> >> 1) Paróquia
> >>
> >> 2) Sacramento
> >>
> >> 3) Curso
> >>
> >> 4) Celebrante
> >>
> >> Identifique as propriedades de cada uma dessas classes e depois monte a
> >> classe TUCSacramento.
> >>
> >> Ex.:
> >>
> >> Type
> >>
> >> TUCSacramento = Class(TObject)
> >>
> >> Private
> >>
> >> Codigo : Integer;
> >> Paroquia : TUCParoquia;
> >> Celebrante : TUCCelebrante;
> >> Curso : TUCCurso;
> >> TipoSacramento : String;
> >> Observacao : String;
> >>
> >> Protected
> >>
> >> Public
> >>
> >> End;
> >>
> >> Quanto ao seu problema, defina o método como "VIRTUAL" para aproveitar
> >> as facilidades oferecidas pelo polimorfismo e modificar o comportamento
> >> do acessor.
> >>
> >> Ex.:
> >>
> >> Function Cadastrar : Boolean; Virtual;
> >>
> >> Function Consultar(Var Texto: String; ID: Byte): Byte; Virtual;
> >>
> >> Sds,
> >>
> >> Romario
> >>
> >> ricardo_sx escreveu:
> >>> Há um tempo atrás questionei sobre o termo "Inherited", onde me
> >>> informaram que ele significa "faça aquele código contido no herdado"
> >>> + o código posterior ao termo. Blz.
> >>>
> >>> Eu, agora estou com a seguinte dificuldade: tenho duas classes: uma
> >>> genérica e outra especializada, seguem:
> >>>
> >>> type TUCSacramento = class {classe genérica}
> >>> private
> >>> codigo_Sacramento:string;
> >>> codigo_Paroquiano:string;
> >>> tipo_Sacramento:string;
> >>> celebrante:string;
> >>> data_Inscricao:TDateTime;
> >>> inicio_Curso:TDateTime;
> >>> termino_Curso:TDateTime;
> >>> obs:string;
> >>> public
> >>> function cadastrar:boolean;
> >>> function consultar(var texto:string;id:byte):byte;
> >>> function alterar:boolean; virtual;
> >>> function excluir(codigo:string):boolean;
> >>> end;
> >>>
> >>> function TUCSacramento.consultar(var texto:string;id:byte):byte;
> >>> begin
> >>> texto:='qualquer coisa';
> >>> result:=1;
> >>> end;
> >>>
> >>> e a classe especializada:
> >>>
> >>> type TUCBatismo = class(TUCSacramento)
> >>> private
> >>> padrinho:string;
> >>> madrinha:string;
> >>> diocese_Batismo:string;
> >>> paroquia_Batismo:string;
> >>> data_Batismo:TDateTime;
> >>> livro_Batismo:string;
> >>> folha_Batismo:string;
> >>> numero_Batismo:string;
> >>> public
> >>> function cadastrar:boolean;
> >>> function consultar(var texto:string;id:byte):byte;
> >>> function alterar:boolean; override;
> >>> function excluir(codigo:string):boolean; override;
> >>> end;
> >>>
> >>> function TUCBatismo.consultar(var texto:string;id:byte):byte;
> >>> begin
> >>> inherited;
> >>> result:=2;
> >>> end;
> >>>
> >>> Meu problema é o seguinte: Eu tenho um código pra ser realizado na
> >>> classe Sacramento e um outro na classe batismo. Sendo que na classe
> >>> batismo eu preciso que, antes de executar seu respectivo código,
> >>> realize o código descrito na classe Sacramento. Então pensei nesse
> >>> tal de "inherited", porém não estou conseguindo fazê-lo funcionar.
> >>> Será que alguém poderia me ajudar?
> >>
> >>
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
>
>  
>


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

Responder a