[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