[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&#263;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&#263;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