Sobrecarga de métodos com VBA (Overload)

Na linguagem de programação Java é possível definir, em uma classe, dois métodos com o mesmo nome porém com assinaturas diferentes. Faz parte da assinatura do método primeiramente o seu nome seguido dos tipos dos parâmetros que este contém. Abaixo um simples exemplo de sobrecarga de métodos na linguagem Java:

public void changeSize(int size, String name) { }

public int changeSize(int size, float pattern) { }

public void changeSize(float pattern, String name) throws IOException { }

Em negrito, está destacado aquilo que faz parte a assinatura do método conforme já mencionado acima. Sobrecarga de métodos é uma das características das boas linguagens orientadas a objetos.

Mas … e no VBA ? Como funciona a sobrecarga de métodos ?

Apesar do VBA possuir características de uma linguagem orientada a objetos como o Java esta não é totalmente orientada a objetos. Veja este post para outros detalhes.

Veja que ao tentar compilar uma aplicação VBA que contenha dois métodos com o mesmo nome a linguagem reclama:

Tentativa de sobrecarga com VBA

Obs: para compilar vá no menu Depurar\Compilar VBA Project:

Compilar VBA

E então … como podemos fazer uma “sobrecarga” do método doStuff para que ele realize comportamentos diferentes baseado no tipo do(s)  seu(s) parâmetro(s) ?

Vamos usar o “mágico” tipo Variant. Variant pode representar qualquer tipo de variável no VBA: Textos, Números inteiros ou decimais, objetos, enumerações, etc …

Abaixo, o código VBA compila e estamos simulando a sobrecarga (overload) do método doStuff:

Sobrecarga VBA OK

Mais um detalhe, não podemos nos esquecer do uso de parâmetros opcionais nas funções e métodos do VBA para tratar sobrecarga de métodos.

Veja também:

Artigos com a palavra overload.

Artigos com a palavra sobrecarga.

VBA orientado a objetos

Outros posts de VBA e VB6

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

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