[Cascavel-pm] O código mais bizonho que eu já fiz na minha vida (v. 2.0)
Luis Campos de Carvalho
lechamps em terra.com.br
Quarta Junho 16 13:58:48 CDT 2004
Flavio S. Glock wrote:
> Eu tenho um problema bem parecido com esse, na hierarquia de objetos
> do Set::Infinite -> ... (vários módulos) ... -> DateTime::Event::ICal,
> e estou procurando uma forma "elegante" de alterar objetos que estão
> no meio desta hierarquia.
>
> Colocando de outra forma, se eu tenho uma hierarquia de classes:
>
> Classe::A
> Classe::B isa Classe::A
> Classe::C isa Classe::B
>
> Eu queria uma maneira de poder alterar a Classe::B, de forma que a
> Classe::C pudesse herdar estas alterações ...
Depois de tomar uma dose tripla de "Boblex na Veia", eu posso estar
vendo tudo meio torto... mas, penso que este deve ser o comportamento
padrão de Classes que extendem Classes: elas "herdam" de suas
Classes-Pai comportamentos e propriedades definidas por esta...
Não bastaria, portanto, se aproveitar das possibilidades (já nativas
de Perl) de /method overriding/?
Ou, colocado de outra forma:
Quando Classe::C precisa executar um método herdado de Classe::B, o
"dispatcher" da Perl entra em ação, e automaticamente escolhe qual
método utilizar, passando o controle (e parâmetros, e tudo o mais) para
este método.
Se em algum momento do programa você alterar a definição de um método
(ou mesmo criar um novo) em Classe::B, Classe::C (de acordo com o
terceiro dogma de OOP - herança) automaticamente tem acesso aos novos
métodos (não existem "cópias locais" de métodos para um determinado
escopo ou instância). O "perl dispatcher" vai fazer a Coisa Certa.
Claro, eu posso estar completamente enganado, ou perdendo algum
detalhe fundamental... :-)
[]'z!
--
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Luis Campos de Carvalho is BSc in Comp Science,
PerlMonk [SiteDocClan], Cascavel-pm Moderator,
Unix Sys Admin && Certified Oracle DBA
http://br.geocities.com/monsieur_champs/
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Mais detalhes sobre a lista de discussão Cascavel-pm