(DÚVIDA) SOBRE IMPLEMENTAÇÃO DO POO NO VBA

 Tópico anterior Próximo tópico Novo tópico

(DÚVIDA) SOBRE IMPLEMENTAÇÃO DO POO NO VBA

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#482510 - 26/06/2018 08:46:31

WELISSON
CACHOEIRO DE ITAPEMIRIM
Cadast. em:Junho/2017


Oi amigos tudo bem com vocês?

Estou querendo migrar para uma nova plataforma de programação, e nesse caso estou começando a estudar
o POO. Como ainda trabalho com VB6 e VBA do excel, decidir aplicar o POO nos meus projetos, assim dessa forma eu
trabalho e ao mesmo tempo estudo os conceitos básicos do POO...

Confesso que estou gostando muito de trabalhar com o POO. Realmente vale muito apena quando se começa a entender
o conceito da coisa rs. Estou usando o vba e o VB6 porque são linguagens que eu já tenho um certa intimidade e isso
ta me ajudando muito nesse estudo...

Sei que o vba e vb6 não possuem alguns pilares do POO (eu acho),  mas assim que eu dominar e entender de fato esses conceitos básicos,
pretendo migrar para o java em breve.

Trabalhando com o POO no VBA, eu tive uma pequena duvida e gostaria da ajuda de vocês. Mas não se trata de criar a classe
e sim de como aplicar o código em POO da forma correta.... VAMOS LÁ:

Eu criei uma classe e fiz exatamente dessa forma:

'Classe Conexão
'------------------------------------------//-------------------------------------------------------
Option Explicit

Private vCn As New ADODB.Connection
Private vRs As New ADODB.Recordset
Private vCaminho As String

Public Function mAbrirBD()
   If vCn.State = 1 Then mFecharBD

   vCaminho = ActiveWorkbook.Path & "\BoletoPadrao.mdb"
   vCn.Open "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & vCaminho & ";jet oledb:database password=die@35231287mk;"
End Function

Public Function mFecharBD()
   Set vCn = Nothing
   Set vRs = Nothing
   Set vFD = Nothing
End Function

Public Property Get Cn() As ADODB.Connection
    Set Cn = vCn
End Property

Public Property Let Cn(Cn As ADODB.Connection)
   vCn = Cn
End Property

Public Property Get rs() As ADODB.Recordset
    Set rs = vRs
End Property

Public Property Let rs(rs As ADODB.Recordset)
    vRs = rs
End Property

Public Property Get Caminho() As String
    Caminho = vCaminho
End Property

Public Property Let Caminho(Caminho As String)
   vCaminho = Caminho
End Property


Também criei uma outra classe que se chama (cls_FrmCadastrarBoletos) essa classe possui vários
métodos. Um desses métodos  é verificar se existe registros em uma de minhas tabelas veja:

'Classe cls_FrmCadastrarBoletos
'------------------------------------------//-------------------------------------------------------
Public Function mVerificarTabelaParcelamentos()
        
    Dim cls As cls_Conexao
        Set cls = New cls_Conexao
    
        cls.mAbrirBD
            cls.rs.Open "Select * from TB_Parcelamentos", cls.Cn, 3, 3
               If cls.rs.RecordCount <> Empty Then
                    If MsgBox("Existem parcelamentos que não foram cadastrados, você deseja retomar o cadastro dessas parcelas?" & vbCrLf _
                        & vbCrLf & "Caso contrário o programa descartará esses registros!", vbInformation + vbYesNo + vbDefaultButton1, "IMPORTANTE") = vbYes Then
                                    frmCadastrarBoletos.txt_nome_do_beneficiario.text = "" & cls.rs!nome_beneficiario
                                    frmCadastrarBoletos.txt_referente.text = "" & cls.rs!referente
                                    frmCadastrarBoletos.cmb_mes_de_emissao.text = "" & cls.rs!mes_emissao
                                    frmCadastrarBoletos.txt_data_de_emissao.text = "" & cls.rs!data_emissao
                                    frmCadastrarBoletos.txt_data_de_vencimento.text = "" & cls.rs!data_vencimento
                                    frmCadastrarBoletos.txt_numero_do_documento.text = "" & cls.rs!numero_documento
                                    frmCadastrarBoletos.txt_valor_do_boleto.text = "" & cls.rs!Valor
                                    frmCadastrarBoletos.txt_observacao.text = "" & cls.rs!Observacoes
                                    
                                    frmCadastrarBoletos.CheckBoxParcelamento.Value = Checked
                                Else
                           cls.Cn.Execute ("Delete * from TB_Parcelamentos")
                    End If
               End If
        cls.mFecharBD
        Set cls = Nothing
End Function


Os códigos listados a cima estão funcionado muito bem, e creio que estou no caminhinho certo (eu acho). Mas mediante a
isso tudo minha dúvida é o seguinte:

Para cada método da classe cls_FrmCadastrarBoletos que faz conexão com meu BD, tenho que fazer:
Dim cls As cls_Conexao
        Set cls = New cls_Conexao

E BLÁ BLÁ BLÁ....

Isso é o correto em POO?  Ou posso criar rotinas para acessar a camada conexão, de forma que
eu defina a variável Dim cls As cls_Conexao uma unica vez?

Pois eu penso no seguinte, se eu tiver 200 rotinas de acesso ao banco de dados. Nesse caso terei que
criar 200 Dim cls As cls_Conexao , e isso pode ser um problema não?

kkk espero que tenham entendido qual é minha dúvida!

Abraço galera!








#482516 - 26/06/2018 09:24:07

GUIMORAES
ITAPETININGA
Cadast. em:Agosto/2009


Não vejo motivo para perder tempo com POO no VB6, é como desenterrar alguém e tentar colocar uma roupa nova no que restou, mas no fundo, você sabe que ele está morto.
A minha sugestão é que esqueça isto, e já que está começando novos projetos, utilize uma linguagem que dê suporte a POO de fato, como C#, vb.net ou até o Java.




#482521 - 26/06/2018 12:24:16

WELISSON
CACHOEIRO DE ITAPEMIRIM
Cadast. em:Junho/2017


GUIMORAES vlw pela resposta meu camarada!

VB6 estou abandonando, como você disse é um difundo rs, Uso mesmo porque ainda tenho projetos que me rendem uma boa
grana, mas irei migrar em breve.  

Então usar o vba para estudar POO não vale a pena?

vlw...






#482522 - 26/06/2018 13:15:45

GUIMORAES
ITAPETININGA
Cadast. em:Agosto/2009


Citação:
:
GUIMORAES vlw pela resposta meu camarada!

VB6 estou abandonando, como você disse é um difundo rs, Uso mesmo porque ainda tenho projetos que me rendem uma boa
grana, mas irei migrar em breve.  

Então usar o vba para estudar POO não vale a pena?

vlw...




Definitivamente, não vale a pena!
Gosto muito do vb6, mas na minha opinião, seu tempo já foi.
Sei que muitos tem projetos legados, e que é difícil transpor eles para uma plataforma mais atual, mas é uma coisa que deve ser feita, mesmo que leve tempo, pois o benefício é grande no futuro.
Se você está pensando em fazer uma refatoração em seus projetos, a fim de melhorar algo, sugiro que pare e pense, se o tempo que você irá perder vale a pena (na minha opinião não vale).





#482559 - 27/06/2018 20:18:53

EPISCOPAL
VARZEA GRANDE
Cadast. em:Maio/2009


Última edição em 27/06/2018 20:24:54 por EPISCOPAL

Como todo mundo sabe o VB não dá suporte para programação orientada a objetos. Dá para implementar alguns conceitos mas não todos.

O vbmania, Welisson, tambem não da suporte ao vb6 no que tange a sua duvida, somente para manutenção. O vbmania evoluiu para a plataforma Net.

... em alguns foruns como o vbforuns ainda implementam alguma coisa, o planet-source-codem tambem tem algumas coisas novas. No macoratti tem alguns exemplos mas vc pode melhorar.

Concordo com a migração ... o mundo evolui ... vai depender de vc se vale a pena continuar no vb6 como te disseram.


____________________________________________________________________
Episcopal Studios




#482564 - 28/06/2018 00:40:01

WELISSON
CACHOEIRO DE ITAPEMIRIM
Cadast. em:Junho/2017


Citação:
:
Como todo mundo sabe o VB não dá suporte para programação orientada a objetos. Dá para implementar alguns conceitos mas não todos.

O vbmania, Welisson, tambem não da suporte ao vb6 no que tange a sua duvida, somente para manutenção. O vbmania evoluiu para a plataforma Net.

... em alguns foruns como o vbforuns ainda implementam alguma coisa, o planet-source-codem tambem tem algumas coisas novas. No macoratti tem alguns exemplos mas vc pode melhorar.

Concordo com a migração ... o mundo evolui ... vai depender de vc se vale a pena continuar no vb6 como te disseram.


EPISCOPAL Obrigado por responder amigo!

É realmente isso tudo é vdd, pense que daria para estudar POO com ele. Mas tudo bem estarei migrando
em breve para java, na vdd já estou estudando.

Inclusive esses tempos tive um problema em trabalhar com sql e vb6, os select demoram uma internidade
mesmo com uma tabela de 50 registros. Vb6 realmente não vale a pena mais, é preciso evoluir!

Abraço!



#482569 - 28/06/2018 09:46:11

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Porque Java?

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#482595 - 28/06/2018 21:23:36

EPISCOPAL
VARZEA GRANDE
Cadast. em:Maio/2009


Última edição em 28/06/2018 21:25:54 por EPISCOPAL

Citação:
Porque Java?


O que que tem kerp? Se eu pudesse iria de Delphi.


____________________________________________________________________
Episcopal Studios




#482642 - 30/06/2018 20:27:50

EPISCOPAL
VARZEA GRANDE
Cadast. em:Maio/2009


Concernente a sua pergunta eu faria um pouco diferente ... mas nesta mesma direção que você fez.

____________________________________________________________________
Episcopal Studios




#482668 - 02/07/2018 10:52:28

JORGESALES
CEARA
Cadast. em:Maio/2015


Citação:
:...Sei que muitos tem projetos legados, e que é difícil transpor eles para uma plataforma mais atual...


Na minha humilde opinião eu não usaria a palavra difícil mas sim trabalhoso e de certa forma desnecessário.
Uma vez que sua aplicação está funcionando e já vem sendo distribuída em VB6 a muito tempo não vejo por que
ter esse trabalho.
Agora quando se trata de começar algo do zero realmente não compensa fazer em VB6 porque os clientes começam
a solicitar funções as quais o VB6 não faz ou é bem difícil de se fazer...

______________________________________
Aos 52 anos descobri a magia da programação.
Obrigado a todos que sempre me ajudam.
Tudo começou aqui: Curso Excel VBA


#482669 - 02/07/2018 10:56:22

JORGESALES
CEARA
Cadast. em:Maio/2015


Citação:
: Se eu pudesse iria de Delphi.

Só por curiosidade, o que te impede?
Pergunto isso pois também procuro algo novo para estudar,
só não mergulhei nos estudos porque não encontrei uma
empresa como a Curso Excel VBA , preciso de cursos bons
para não perder tempo e obviamente dinheiro


______________________________________
Aos 52 anos descobri a magia da programação.
Obrigado a todos que sempre me ajudam.
Tudo começou aqui: Curso Excel VBA


 Tópico anterior Próximo tópico Novo tópico


Para responder este tópico o login é requerido
Se você já possui uma conta de usuário por favor faça seu login
Se você não possui uma conta de usuário use a opção Criar usuário