[Cascavel-pm] métodos de acesso mais sofisticados (era: acessórios de alteração mais sofisticados)
Alceu R. de Freitas Jr.
glasswalk3r em yahoo.com.br
Terça Janeiro 8 04:43:32 PST 2008
--- Luis Motta Campos <luismottacampos em yahoo.co.uk>
escreveu:
> O que exatamente você quer fazer que o
> Class::Accessor não te oferece
> pronto, Alceu?
Talvez ele ofereça... mas eu ainda não descobri como.
> Eu ainda não entendi o que os teus métodos de acesso
> tem de especiais.
> Pode ser distração minha, também...
Ou meus emails andam confusos demais... De qualquer
forma, vamos para um exemplo que é mais fácil.
Quando eu criei módulos para acessar recurso pacotes
DTS, eu encapsulei o objeto fornecido via COM através
do módulo Win32::OLE. Até então eu só utilizava
métodos de leitura (get_) para ler os atributos.
Agora resolvi ir mais longe e oferecer métodos para
alterar esses atributos. Mas aí tenho um problema de
sincronização, eu tenho que alterar ambos os objetos
(o da classe DTS e o objeto obtido via COM).
O objeto via COM é referenciado por um atributo
"oculto" chamado _sibling. Eu só conseguiria alterar
um atributo e sincronizar o valor entre os dois
objetos se esse atributo _sibling estiver disponível.
Se eu fosse escrever isso na mão, eu teria um trabalho
chato para fazer.
Eu imagino algo assim:
sub set_attribute {
my $self = shift;
my $attrib = shift;
my $value = shift;
die "não consigo configurar nada sem _sibling"
unless (defined($self->{_sibling}));
#restante do código viria aqui
}
[]'s
Alceu Rodrigues de Freitas Junior
--------------------------------------
glasswalk3r em yahoo.com.br
http://www.imortais.cjb.net
-----------------------------------------------------------------------
A well-used door needs no oil on its hinges.
A swift-flowing stream does not grow stagnant.
Neither sound nor thoughts can travel through a vacuum.
Software rots if not used.
These are great mysteries -- The Tao Of Programming, 5.1
Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento!
http://br.mail.yahoo.com/
Mais detalhes sobre a lista de discussão Cascavel-pm