Herança no tiOPF

27 views
Skip to first unread message

edregis

unread,
Jun 18, 2009, 5:31:12 PM6/18/09
to tiOPF.br
Olá Pessoal!

Como uso o conceito de herança com um objeto herdado do TtiObject?

Exemplo:

Tenho as minhas classes TPessoa e TPessoaList, herdadas de TtiObject e
TtiObjectList.
TPessoa só tem as propriedades OID e NomePessoa.

Aí quero implementar a classe TAluno, herdada de TPessoa.
Essa classe TAluno, além das propriedades OID e NomePessoa (que já
existem em TPessoa), deve ter a propriedade OID_Pai, que seria digamos
o "pai" do aluno, e que é do mesmo tipo que TPessoa.
Como implementar isso? Como ficariam os meus visitors?
Eu andei fazendo uns testes aqui, e não encontrei solução que não seja
criar a classe TAluno herdada de TtiObject sem aproveitamento nenhum
da TPessoa.

As tabelas no banco seriam assim:
Pessoa:
OID varchar(36) not null primary key;
NomePessoa varchar(100) not null;

Aluno:
OID varchar(36) not null primary key;
OID_PAI varchar(36) not null primary key; (apontando para o OID da
tabela Pessoa)

Obs: isso é só um exemplo bobo... na verdade quero usar o mesmo
conceito para outra coisa...

Seguem as classes;

TPessoaList = class(TtiObjectList)
private
protected
function GetItems(i: integer): TPessoa; reintroduce;
procedure SetItems(i: integer; const Value: TPessoa); reintroduce;
public
property Items[i: integer]: TPessoa read GetItems write SetItems;
procedure Add( pObject: TPessoa; pDefDispOrdr: boolean = true );
reintroduce;
procedure Clear; override;
procedure Read; override;
procedure Save; override;
end;

TPessoa = class(TtiObject)
private
FPessoaNome: string;
protected
...
public
...
published
property PessoaNome: string read FPessoaNome write
FPessoaNome;
end;

TAluno = class(TPessoa)
private
FPai: TPessoa;
protected
...
public
...
published
property Pai: TPessoa read FPai write FPai;
end;

Eu quero instanciar o TAluno, e conseguir acessar a propriedade pai
assim:
varNomeDoPai := Aluno.Pai.PessoaNome;
A minha dúvida é como implementar os Visitors da classe TAluno.
Será que precisarei implementar a classe TAluno do zero, sem herdar
nada de TPessoa?

Grato,

Edelson.

Joao Henrique Levada

unread,
Jun 19, 2009, 8:04:55 AM6/19/09
to tiOPF.br
Olha, acho que deves usar a herança sim. Porém não sei como
funcionaria a implementação da classe, não tenho experiência com
tiOPF.

Se souber um pouco de inglês, pode se inscrever em: news.tiopf.com

Lá, certamente vai obter boa ajuda.

Abraços e boa sorte.

edregis

unread,
Jun 19, 2009, 11:20:00 AM6/19/09
to tiOPF.br
Eu até vi o Demo 12, que mostra como trabalhar com herança. Porém lá
não tem essa situação, de ter uma propriedade que é do mesmo tipo que
o objeto.
Eu quero poder pegar o nome do aluno e o nome do pai do aluno assim:
varNomeAluno := Aluno.NomePessoa;
varNomePaiAluno := Aluno.Pai.NomePessoa;
E isso eles não mostram nos exemplos.
Eu dei uma vasculhada também no forum internacional... tem alguns
posts que tratam de herança, mas também nenhum com esta situação.
Olha, to quase desistindo o tiOPF... é complicado pra caramba... tem
que se fazer muiiiiita coisa pra chegar a um resultado simples.

Edelson.
Reply all
Reply to author
Forward
0 new messages