[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