Programação Orientada a Objetos com VBA / VB6

O ainda muito usado Visual Basic 6.0 ou o nosso atualíssimo VBA (Visual Basic For Applications) contido no MS Office, por sua natureza, não são linguagens que implementam todas as características de uma linguagem totalmente orientada a objetos como o Java ou até mesmo seu irmão mais novo VB.net (C# também).

Os quatro pilares da orientação a objetos são: (1) abstração, (2) encapsulamento, (3) polimorfismo e (4) herança.

Não pretendo entrar nos detalhes de cada um desses tópicos mas, apenas esclarecer que o VBA não é uma linguagem que permite herança e, consequentemente, não permite polimorfismo através de herança.

… mas …

Mas VBA (e VB6) permitem polimorfismo através de implementação de interfaces.

Vamos ao exemplo:

Primeiramente criamos um módulo de classe que apenas declara uma função chamada [fazerCalculo] e servirá de interface para outras classes.

1 - interface

Em segundo lugar, implementamos esta interface nas classes que irão implementar o método [fazerCalculo] (no caso Soma e Subtracao). Entenda-se implementar o método por torná-lo de fato útil, ou seja, codificar o seu comportamento. Lembre-se que na classe Calculador que apenas serviria de  interface, o método [fazerCalculo] não sofreu nenhuma implementação.

Abaixo a implementação das classes Soma e Subtracao (sem ç e ~) através da instrução da linguagem [Implements]:

2 - implementacao de soma

3 - implementacao de subtracao

Por último segue o exemplo de utilização dessas classes (Soma e Subtracao)  que implementam a inteface Calculador.

4 - usoRepare que em função de um parâmetro definido como ENUM da função calcular, teremos a classe correta instanciada e a operação escolhida realizada.

Observe que a implementação do método [fazerCalculo]  é, então, decidida em tempo de execução.

5 demo1

6 demo2

Se quiser fazer o download desta planilha que utilizei para escrever este post por favor clique neste Calculo.zip.

Leia também:

Sabe para que serve o Módulo de Classe do VBA ?

Outros posts de VBA e VB6

Re-aproveitando eventos no VBA – The Observer Pattern – Eventos em interfaces não dá …

VBA, organizando coleções seguindo princípios da orientação a objetos.

Esta entrada foi publicada em MS Access, OOAD e POO, Visual Basic 6.0 e VBA com as etiquetas , , , , . ligação permanente.

8 respostas a Programação Orientada a Objetos com VBA / VB6

  1. Pingback: Re-aproveitando eventos no VBA – The Observer Pattern – Eventos em interfaces não dá … | Pedro Abs

  2. Pingback: Desenvolvendo VBA e XML, utilizando a API SAX (Simple API for XML) | Pedro Abs

  3. Pingback: Desenvolvendo VBA e XML, utilizando a API DOM (Document Object Model) | Pedro Abs

  4. Artigo esclarecedor objetivo. Muito bom!

    Gostar

  5. Mikel Silveira Fraga diz:

    Pedro, bom dia.
    Cara, tudo relacionado a Módulos de Classes eu desconhecia, até encontrar seu site.
    Estou boquiaberto com as explicações … com certeza esta entrando para os favoritos.

    Agora, deixa eu aproveitar e perguntar uma coisa: você disse que não é possível realização de herança no VBA, mas poderia criar um procedimento em Módulo de Classe em um Suplemento Excel ou COM, e este ser utilizado por outro arquivo?

    Aguardo sua resposta ansiosamente.

    Abraços!!!

    Gostar

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s