[Cascavel-pm] Como dividir uma classe em .pm's mais específicos?
Rod Za
rodzadra em yahoo.com
Segunda Abril 4 13:42:16 PDT 2005
Daniel
Eu sou meio novo no Perl e acho realmente que minha aplicacao deixa muito a desejar:) Mas o q eu
pretendia fazer eh mais ou menos o que voce me passou.
Se eu entendi bem, se eu criar esses packages usando:
> use base qw(Exporter);
significa que os packages s?o "filhos" de Exporter, n?o eh?
Desse modo onde eu devo criar a funcao "new" ? em cada um dos packages ou no package principal?
muito obrigado,
Rodrigo.
ps. eu anexei o c?digo da classe (espero que n?o se assustem muito:)
--- Daniel Ruoso <daniel em ruoso.com> wrote:
> Em Seg, 2005-04-04 ?s 16:46, Rod Za escreveu:
> > Eu criei uma classe com vrios metodos em um nico arquivo .pm e este est funcionando
> > perfeitamente s que ficou muito grande o arquivo e a manutenćo est um pouco confusa por
> > este motivo.
> > Eu gostaria de saber como posso fazer para separar alguns mtodos (por especialidade) em outros
> > arquivos .pm e que estes faćam parte da classe principal.
> > Ex: classe_principal.pm
> > metodos_db_da_classe_principal.pm
> > metodos_para_lidar_com_outras_coisas_especificas.pm
>
> Hmmmm... isso me cheira a falta de heran?a, defini??o de m?dulos
> acess?rios e outras coisas assim...
>
> ? claro que vendo o c?digo seria poss?vel entender melhor, mas me parece
> que voc? est? colocando coisa demais na mesma classe, n?o?
>
> Se ela acessa o banco de dados, a classe provavelmente representa uma
> tabela no banco de dados, certo? se for isso, os m?todos de acesso devem
> provavelmente estar em uma superclasse de todas as classes de entidade
> (esse ? o nome que se d? para classes que representam dados
> persistidos).
>
> quanto aos m?todos para lidar com outras coisas espec?ficas, me parece
> que s?o regras de neg?cio, ent?o, em geral, voc? deveria estar colocando
> isso em classes separadas mesmo.
>
> Mas, se voc? nao quiser rever a estrutura da sua aplica??o como um todo
> voc? pode usar o exporter.
>
> Tipo assim...
>
> classe espec?fica 1:
>
> package Classe_para_lidar_com_db;
>
> use base qw(Exporter);
> @EXPORT = qw(metodo1 metodo2);
>
> [...]
>
> classe especifica 2:
>
> package Classe_especifica;
>
> use base qw(Exporter);
> @EXPORT = qw(metodo3 metodo4);
>
> [...]
>
> classe principal:
>
> package Classe_principal;
>
> use Classe_para_lidar_com_db;
> use Classe_especifica;
>
> sub bla {
> # aqui eu posso chamar os metodos
> metodo1();
>
> my $self = shift;
> # mesmo se for usando a sintaxe OO
> $self->metodo2();
>
> # ou a outra sintaxe OO
> metodo3 Classe_principal();
> }
>
>
> Mas eu realmente recomendo que voc? revise a arquitetura do seu
> aplicativo...
>
>
> daniel
>
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
-------------- Próxima Parte ----------
Um anexo não texto foi limpo...
Nome : SGQI.pm
Tipo : application/x-perl
Tam : 37912 bytes
Descr.: SGQI.pm
Url : http://mail.pm.org/pipermail/cascavel-pm/attachments/20050404/82f16909/SGQI-0001.bin
Mais detalhes sobre a lista de discussão Cascavel-pm