Nesta apresentação procuro apresentar conceitos de orientação à objetos aplicados ao VBA. Procuro discorrer de forma simplificada sem uso de muitos jargões difíceis para que aqueles que estão iniciando agora em programação orientadas a objetos, sobretudo, aplicando ao VBA, em particular.
Espero que tenha ajudado e estou pronto para tirar dúvidas provindas da leitura deste documento.
Grande abraço a todos.
Wanderlei Silva do Carmo <wander.silva@gmail.com>
2. Objetivos
Apreender conceitos básicos de programação orientada a
objetos :
Abstração
Encapsulamento
Herança
Polimorfismo
Modificadores de acesso
Private
Protected
Friend
Static
3. Classe
Uma classe é um arquivo texto escrito utilizando uma linguagem
de programação contendo instruções e comandos que definem
atributos, propriedades e métodos que darão origem a objetos.
Dizemos que objetos são instancia de uma classe.
Um objeto portanto é criado a partir de uma instanciação de uma
classe em memória. Uma mesma classe pode gerar vários
objetos para vários propósitos e funcionalidades.
Classes são códigos armazenados..
Objetos são variáveis que fazem referencias a endereços de
memória.
Em outras palavras:
Uma classe descreve propriedades e comportamentos dos
objetos que serão criados por ela.
4. Abstração
O uso da abstração na computação pode ser exemplificada da seguinte forma:
Imagine que um determinado processamento é realizado em vários pontos de
um sistema, da mesma forma ou de forma idêntica. Ao invés de repetirmos o
trecho de código responsável por este processamento, o abstraímos na forma
de um procedimento ou função, e apenas fazemos uma chamada à tal
procedimento, onde quer que necessitemos e por quantas vezes se fizer
necessário.
(Fonte: http://pt.wikipedia.org/wiki/Abstração)
Em outras palavras para melhor entendimento:
Abstrair é isolar toda complexidade de uma ação ou objeto e pegar apenas o que nos interessa em um
dado momento.
Um exemplo:
Quando fazemos uso de um forno Micro-ondas não precisamos saber detalhes técnicos de seu
funcionamento nem tampouco como foi construído e ainda não precisamos saber de que forma ele
fará com que os alimentos sejam cozidos, assados, etc... Sabemos apenas que temos que “apertar” a
tecla correspondente a ação que queremos. Da mesma forma em um software não precisamos saber
como o programa executará as ações internamente, basta apenas que sabemos que ao clicar na
opção desejada ele fará e pronto!
5. Encapsulamento
Encapsulamento vem de encapsular, que em
programação orientada a objetos significa separar o programa em partes,
o mais isoladas possível. A idéia é tornar o software mais flexível, fácil de
modificar e de criar novas implementações. (http://
pt.wikipedia.org/wiki/Encapsulamento)
Em outras palavras:
Vamos pensar na ideia de uma cápsula onde vamos colocar algo que não
queremos que ninguém veja ou saiba o que está guardado ali. Algumas
informações poderemos permitir que outros acessem, porém de forma
controlada, tomando todo o cuidado de tratar toda informação oriunda ou
resultante de forma que tudo seja protegido de ações indesejadas por parte de
quem as usar.
Um exemplo:
Conteúdo protegido
Acesso controlado ao
conteúdo protegido
Objeto
6. Herança
Herança é um princípio de orientação a objetos, que permite que
classes compartilhem atributos e métodos, através de "heranças".
Ela é usada na intenção de reaproveitar código ou comportamento
generalizado ou especializar operações ou atributos. O conceito de
herança de várias classes é conhecido como herança múltipla.
Como exemplo pode-se observar as classes 'aluno' e 'professor',
onde ambas possuem atributos como nome, endereço e telefone.
Nesse caso pode-se criar uma nova classe chamada por exemplo,
'pessoa', que contenha as semelhanças entre as duas classes,
fazendo com que aluno e professor herdem as características de
pessoa, desta maneira pode-se dizer que aluno e professor são
subclasses de pessoa.
(http://pt.wikipedia.org/wiki/Herança_(programação) )
Um Exemplo:
Funcionário
Gerente
Vendedor
Motorista
Atributos comuns:
codigo,nome,cpf,endereço,telefone,etc...
7. Polimorfismo
Na programação orientada a objetos, o polimorfismo permite que referências
de tipos de classes mais abstratas representem o comportamento das classes
concretas que referenciam. Assim, é possível tratar vários tipos de maneira
homogênea (através da interface do tipo mais abstrato). O
termo polimorfismo é originário do grego e significa "muitas formas" (poli =
muitas, morphos = formas).
O polimorfismo é caracterizado quando duas ou mais classes distintas tem
métodos de mesmo nome, de forma que uma função possa utilizar um objeto de
qualquer uma das classes polimórficas, sem necessidade de tratar de forma
diferenciada conforme a classe do objeto.1
Uma das formas de implementar o polimorfismo é através de uma classe
abstrata, cujos métodos são declarados mas não são definidos, e através de
classes queherdam os métodos desta classe abstrata. (wikipedia).
Em outras palavras:
Podemos criar classes e métodos abstratos, ou seja em que nenhuma implementação
de seus métodos serão feitos nela mas na classe que a herdar . Dessa forma
poderemos implementar tais métodos de acordo com a necessidade para o qual foi
construída a subclasse.
Exempo:
Animal
cachorro
gato
Emitir_som
Emitir_som
latido
miado
8. Em programação orientada a objetos, modificador de acesso, também
chamado de visão de método ou ainda visão de atributo, é a palavra-chave
que define um atributo, método ou classe como público (ou public, qualquer
classe pode ter acesso), privado (ou private, apenas os métodos da própria
classe pode manipular o atributo) ou protegido (ou protected, pode ser
acessado apenas pela própria classe ou pelas suas subclasses).
Geralmente, utiliza-se modificadores de acesso para privar os atributos do
acesso direto (tornando-os privados) e implementa-se métodos públicos que
acessam e alteram os atributos. Tal prática pode ser chamada de
encapsulamento.
Em outras palavras:
Métodos privados geralmente são usados apenas por outros métodos que são
públicos (e que podem ser chamados a partir de outro objeto) da mesma classe
a fim de não repetir código em mais de um método. (wikipedia)
Modificadores de Acesso
Lembram-se do encapsulamento?
Os atributos que não queremos expor ficam protegidos de forma que somente o objeto
saiba deles. Para expor de forma controlada o acesso à eles, usamos métodos
públicos. É comum usarmos os chamados métodos get e set para respectivamente obter
e alterar um determinado atributo. Em VB usamos suas propriedades para essa
finalidade.
9. Na Prática
Criando uma classe em VBA
1 - No Project Explorer,
clique com o botão
direito em cima do
nome de seu projeto.
Escolha inserir, módulo
de classe.
2- Agora vamos alterar o nome
da classe na janela de
propriedades. Na figura o nome
foi alterado para “Contato”
11. Antes de começarmos a codificar
devemos fazer um “esboço” da classe
que iremos criar.
Definir seus atributos e seus métodos.
Lembrando do encapsulamento, os
atributos privados somente podem ser
vistos pelo próprio objeto.
Para expor estes atributos para o mundo
externo deve-se então usar métodos
públicos.
Antes de começarmos a codificar
devemos fazer um “esboço” da classe
que iremos criar.
Definir seus atributos e seus métodos.
Lembrando do encapsulamento, os
atributos privados somente podem ser
vistos pelo próprio objeto.
Para expor estes atributos para o mundo
externo deve-se então usar métodos
públicos.
Os atributos privados são precedidos do sinal
“-” e os atributos públicos com o sinal “+” .
Os atributos privados são precedidos do sinal
“-” e os atributos públicos com o sinal “+” .
12. As propriedades são a forma de se ter
acesso de forma protegida aos atributos
privados do objeto.
As propriedades são a forma de se ter
acesso de forma protegida aos atributos
privados do objeto.
Declaração de atributos privadosDeclaração de atributos privados
Get e Let –
Estas instruções são utilizadas para obter ou
alterar o valor de um determinado atributo.
Pode-se por exemplo, testar e validar valores
antes de alterá-los ou mesmo incluir algum tipo
de formatação de saída.
Get e Let –
Estas instruções são utilizadas para obter ou
alterar o valor de um determinado atributo.
Pode-se por exemplo, testar e validar valores
antes de alterá-los ou mesmo incluir algum tipo
de formatação de saída.
13. Para instanciar uma classe, podemos usar o
seguinte código em um módulo ou em rotinas de
formulários.
Para instanciar uma classe, podemos usar o
seguinte código em um módulo ou em rotinas de
formulários.
Métodos públicos são visíveis ao mundo
externo.
Métodos públicos são visíveis ao mundo
externo.
14. Um exemplo mais completo do uso de classes em VBAUm exemplo mais completo do uso de classes em VBA
Agora os botões chamarão
métodos do objeto MeuContato.
Agora os botões chamarão
métodos do objeto MeuContato.
Método Salvar do objetoMétodo Salvar do objeto
15. Usando orientação a objetos:
Benefícios:
Reaproveitamento de código
Código mais enxuto
Acoplamento baixo entre os módulos
Segurança.. entre outros.
FIMFIM