Clipper On Line • Ver Tópico - Abusar de herança

Abusar de herança

Aqui é o lugar para bater papo e trocar idéias sobre os mais variados assuntos

Moderador: Moderadores

 

Abusar de herança

Mensagempor JoséQuintas » 18 Set 2013 13:23

Parece exagero.

Situação que ocorreu exatamente neste momento:
- Classe frmClass - cuida de telas
- Classe frmCadastroClass - cuida da navegação de cadastros e herda a frmClass
- Classe AUXILIARClass - pra facilitar cadastros genéricos, herda a frmCadastroClass
- Classe AuxMODFISClass - cadastro de Modelos de Documentos Fiscais, que herda a AUXILIARClass

Em várias telas tenho lá pra mostrar descrição de tabelas, como por exemplo de Modelos de Documentos Fiscais, ICMS CST, PIS CST, Cofins CST, todas num arquivo multitabela.

Encontra( "MODFIS" + jplfisc->lfModFis, "jptabel", "numlan" )
@ Row(), 32 SAY jptabel->axDescri
Encontra( "ICMCST" + jplfisc->lfIcmCst, "jptabel", "numlan" )
@ Row(), 32 SAY jptabel->axDescri
Encontra( "PISCST" + jplfisc->lfPisCst, "jptabel", "numlan" )
@ Row(), 32 SAY jptabel->axDescri
Encontra( "COFCST" + jplfisc->lfCofCst, "jptabel", "numlan" )
@ Row(), 32 SAY jptabel->axDescri


Pra reduzir isso, vou criar o método Descricao( cCodigo )
Então vou criar em AUXILIARClass esse método, que já resolve a maioria.
METHOD Descricao( cCodigo ) CLASS AUXILIARClass
   Encontra( ::cTabelaAuxiliar, "jptabel", "numlan" )
   RETURN jptabel->axDescri


Com isso, o mesmo código acima virou isto:

@ Row(), 32 SAY AuxMODFISClass():Descricao( jplfisc->lfModFis )
@ Row(), 32 SAY AuxICMCSTClass():Descricao( jplfisc->lfIcmCst )
@ Row(), 32 SAY AuxPISCSTClass():Descricao( jplfisc->lfPisCst )
@ Row(), 32 SAY AuxCOFCSTClass():Descricao( jplfisc->lfCofCst )


A classe final de uma tabela auxiliar está assim:

CREATE CLASS AUXTRIPROClass INHERIT AUXILIARClass
   DATA cTabelaAuxiliar INIT "TRIPRO"
   END CLASS


Essa é da tributação de produtos.
Ao mesmo tempo que parece inútil, só um parâmetro, evita colocar parâmetro em todo lugar que é usada (validação, seleção, agora descrição, etc).
Melhor do que antigamente, que eu usava DescrTab( cCodigo, 25 ), onde na hora de localizar aonde eu usava a tabela 25 era complicado procurar nos fontes.
Agora, pra procurar aonde usa tributação de produto, só pesquisar nos fontes por AuxTRIPRO.
Tem horas que parece abuso, mas se os fontes estão mais simples, deve ser normal.
Obs. Essa classe de uma linha também é responsável pelo cadastro: inclui, altera, exclui, etc.

Lógico... agora que tem classe própria, vai ter seu próprio método de exclusão, pra verificar se está em uso em algum lugar.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18008
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Abusar de herança

Mensagempor JoséQuintas » 20 Out 2021 19:39

Uia, já tem 8 anos o post.

CREATE CLASS AUXTRIPROClass INHERIT AUXILIARClass
   DATA cTabelaAuxiliar INIT "TRIPRO"
   END CLASS


Esse, NA ÉPOCA, era o fonte completo desse cadastro, incluindo browse, telas de inclusão/alteração/consulta, rotina de validação, rotina pra mostrar descrição, etc.
SÓ ISSO MESMO.

Aí pergunto: uma IDE de criar telas, ou um gerador de fontes, vão ajudar no que?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18008
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes




Retornar para Bate Papo

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 2 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro