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]