none
Programação Orientada a Objetos com VBA RRS feed

  • Pergunta

  • Olá Pessoal!

    Estou retomando os estudos de programação orientada a objetos que estava estudando na faculdade sobre Java, mas tenho uma dúvida em relação ao que sempre leio, principalmente na internet, em que é sempre dito por diversos programadores que o VBA não é uma linguagem de programação orientada a objetos.

    Considerando o fato de que o VBA possui recursos para utilizar a programação orientada a objetos, alguém pode me explicar de forma bem resumida o que o VBA pode fazer e principalmente o que NÃO pode fazer na programação orientada a objetos?

    Desde de já agradeço a todos

    Att

    Eduardo

    sábado, 20 de junho de 2015 00:45

Respostas

Todas as Respostas

  • Pelo que conheço:

    VBA possui:

    Classes, Objetos, Atributo, Instancia, Polimorfismo e Herança

    VBA não possui:

    Sobrecarga de Métodos, Abstração, Interfaces



    Natan

    sábado, 20 de junho de 2015 01:56
  • Olá Natan

    Estou ainda estudando os conceitos de Orientação a Objetos, mas uma dúvida sobre o que você me respondeu, por favor veja o meu exemplo abaixo, pois acredito ser recurso de Interface.

    No exemplo eu criei 2 classes, clsConta e clsDeposito, a clsConta entendo que seja uma interface, pode se observar inclusive que não há nenhum código em seu interior. Note que na clsDeposito eu implementei a clsConta com a instrução "implements" e no cabeçalho da propriedade inseri a propriedade Conta (clsConta_Conta). E o módulo do programa principal é executado exibindo no final o valor do depósito.

    Isso não é o recurso de Interface da programação orientada a objetos?

    clsConta

    Interface_VBA

    clsDeposito

    Classe_Deposito

                    

    Sub Prgm()
        Dim deposito As clsDeposito

        Set deposito = New clsDeposito

        deposito.clsConta_Conta = 1050.8
        Debug.Print FormatCurrency(deposito.clsConta_Conta)

        Set deposito = Nothing

    End Sub

    RESULTADO R$1.050,80

    Att

    Eduardo

    sábado, 20 de junho de 2015 16:29
  • Na verdade Eddu, isso entra mais na herança... apesar de ter o conceito de Implementar... também acho confuso :/

    A Interface surge quando você quer construir um padrão de métodos e Atributos que podem ser herdados e implementados para outras classes... a interface em si apenas assina os métodos, quem faz a implementação é a própria classe.

    Em um exemplo mais simples...

    Se duas classes Homem e Cachorro por exemplo são implementadas pela interface iAnimal que possuem os métodos voidCorrer por exemplo...

    Cada Objeto Homem e Cachorro implementa o método Correr da sua própria forma...


    classe Homem: 

    sub voidCorrer()

    velocidade = 1

    end sub


    Classe Cachorro:


    sub voidCorrer()

    velocidade = 1.5 'considerando que o cachorro corre mais rápido que o homem.

    end sub


    Até poderíamos dizer que temos interfaces no VBA sendo que podemos apenas criar métodos com os mesmos nomes dentro de classes diferentes... 


    Natan


    sábado, 20 de junho de 2015 18:32
  • Olá Natan

    Como sou iniciante em programação orientada a objetos, não sei afirmar com certeza. Mas nas linguagens que são voltadas para orientação a objetos, como Java por exemplo, a Interface do VBA funciona da mesma maneira que as outras linguagens, como mostrei no exemplo que criei?

    Att

    Eduardo

    sábado, 20 de junho de 2015 19:05
  • Tem razão Eddu, realmente funciona pois os métodos que foram assinados na classe mãe e não foram implementados na classe filha geram erro... isso também é uma característica da interface.

    Legal!!!


    Natan

    sábado, 20 de junho de 2015 22:35
  • Ok

    Ainda não está claro, porém vou continuar buscando até entender todos os conceitos de programação orientada a objetos com VBA.

    Att

    Eduardo

    sábado, 20 de junho de 2015 23:31
  • Eduardo, 

    Segue alguns links para auxiliar no seu estudo:

    http://www.macoratti.net/vb_class.htm

    http://pedroabs.com/2013/05/06/programacao-orientada-a-objetos-com-vba-vb6/

    O Felipe Costa Gualberto fez recentemente o jogo da cobrinha no Excel, utilizando OO, este exemplo prático pode ser útil nos seus estudos

    http://ambienteoffice.com.br/

    segunda-feira, 22 de junho de 2015 11:58
  • @eddu951,

    Creio que sua situação não é muito adequada para utilizar interfaces. A situação mais comum em que necessito utilizar classes é quando preciso fazer um laço numa coleção, utilizando classes. Veja um exemplo excelente: http://stackoverflow.com/questions/19373081/how-to-use-the-implements-in-excel-vba



    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    terça-feira, 23 de junho de 2015 22:35
    Moderador
  • Felipe,

    Obrigado novamente pela ajuda, você sempre tem dicas muito úteis.

    Estou estudando programação orientada a objetos e minha dúvida não se restringe a apenas a Interface, mas sim tudo o que o VBA pode e principalmente não pode fazer utilizando os recursos da programação orientada a objetos.

    Obrigado mais uma vez.

    Att

    Eduardo

    sexta-feira, 26 de junho de 2015 16:07