POO e Visibilidade

Delphi

26/01/2007

Bom dia pessoal, estou com o seguitne problema.

Tenho uma classe pai, chamada TPersistencia. Esta Classe tem os seguintes atributos protegidos:
Protected
DsPrinc:TDataSource;
QryExecuta:TSqlQuery;
QryPesquisa:TSqlQuery;
vCondAuxiliar:String;

eu tenho como como public o método consultar que recebe um objeto pesquisa, extrai dele as condições do objeto e joga na variável vCondAuxiliar(Protegida)
function Consultar(Pesquisa:TPesquisa):TObject;

O problema é que, quando eu chamo este método a partir de uma classe filha de TPersistencia, ele executa normalmente, porém, quando ele vai atribuir as condições do objeto TPesquisa na váriável vCondAuxiliar, ele gera um AcessViolation. Se eu colocar esta variável como public funciona,
mas eu estaria perdendo encapsulamento.

Alguém sabe o que pode estar aconstecendo.

Grato.

Ricardo Coelho.


Bholiveira

Bholiveira

Curtidas 0

Respostas

Aroldo Zanela

Aroldo Zanela

26/01/2007

Colega,

Atributos são privados e métodos são públicos. Isto permite o encapsulamento dos objetos. Portanto, crie um Get e Set (públicos) para ler/escrever nessa ´variável´.


GOSTEI 0
Bholiveira

Bholiveira

26/01/2007

Valeu pela dica, a atribuição à variável parou de dar erro, o erro ocorre agora, quando eu fecho o CdsPrinc, logo após de executar o método consultar.

Este ClientDataSet também está privado e com um método getCdsPrinc.

Ele está sendo criado no create da classe pai (TPersistencia) que é chamado no create do filho.


Ricardo Coelho.


GOSTEI 0
POSTAR