Sie sind auf Seite 1von 7

Introduccin a las clases

Esta pgina es una introduccin a las clases.

Introduccin
Las clases son una herramienta muy poderosa en nivel intermedio a avanzado de
programacin VBA. Esta pgina es una introduccin a lo que es una clase y un
objeto son y se espera que pueda empezar a trabajar con las clases. Esto de
ninguna manera es una gua completa. Libros enteros se han escrito sobre
programacin orientada a objetos, de los cuales las clases son un componente
esencial.
En VBA, una clase se define en el mdulo de clase y sirve como una plantilla para
un objeto. El trmino objeto es deliberadamente vaga. Un objeto puede ser
definido para representar lo que quieras. Cualquier cosa que se puede describir
conceptualmente puede ser representada por una clase. La diferencia entre una
clase y un objeto es una clase que no hace nada y no consume memoria. Es como
un plano. Cuando usted tiene una variable de ese tipo de clase y crear instancia
de esa clase con la palabra clave New, un proceso llamado de instancias, se
convierte en un objeto y consume memoria y puede llevar a cabo acciones. Una
clase se define por sus propiedades, que describen los atributos de la clase y sus
mtodos (procedimientos Sub y Function), que llevan a cabo acciones en el
objeto. Si una clase es anlogo a un sustantivo, una propiedad es como un
adjetivo - que describe el objeto. Un mtodo es como un verbo - que lleva a cabo
una accin.
Usted debe crear una instancia de una clase en un objeto con el fin de hacer nada
con ella. No hay nada que puede hacer con un mdulo de clase ms all de crear
un objeto de la misma. Un ejemplo de instanciacin se muestra a continuacin:
Dim C Como Class1
Set C = Nueva Clase 1
donde Class1 es el nombre del mdulo de clase. A diferencia de otros idiomas,
VB / VBA permite slo una clase en un mdulo de clase, y el nombre de la clase
es el nombre del mdulo.
Ahora puede trabajar con las propiedades y mtodos definidos en Class1 en la
variable C objeto.
NOTA: Tambin es posible combinar las dos declaraciones anteriores en una sola frase:

Dim C As New Class1


Esto se llama una variable auto-generar ejemplares. Cuando la variable C se encontr por primera vez en el cdigo, se crea una
nueva instancia. En general, se debe evitar variables auto-generar ejemplares por dos razones:

En primer lugar, implica una sobrecarga al cdigo ya que la variable debe ser probado por nada cada vez que se
encuentra en el cdigo.
En segundo lugar, usted no tiene ninguna manera de probar si una variable automtica de
instancias no es nada porque el acto mismo de utilizar el nombre de la variable en un Si

obj es nada

entonces declaracin crear automticamente una instancia de la variable.

Antes de entrar a clases y objetos, resultar til examinar brevemente ancestro


lgica de una clase, la declaracin de tipo. Un tipo se compone de otros tipos
de variables bsicas. Usted puede estar familiarizado con los tipos de otros
lenguajes de programacin, en la que se les llama una estructura,
estructura o registro. Por ejemplo, podramos declarar un tipo que describe un
empleado:
Tipo de empleo
Nombre As String
Direccin As String
Salario As Double
Tipo End
Esto define un nico tipo con nombre de empleado que tiene tres
elementos: nombre, direccin, ySalario. A continuacin, puede crear
variables del tipo de los empleados y dar valores a los elementos. Por ejemplo,
Dim Gerente Como Empleado
Manager.Name = "Joe Smith"
Manager.Address = "123 Main Street"
Manager.Salary = 40000
Tipos son muy tiles, pero tienen tres deficiencias. En primer lugar, no se puede
declarar nuevas instancias de untipo. Debe declarar todas las variables que
necesita en tiempo de diseo o si necesita una matriz dinmica que cambia de
tamao con ReDim Preserve, una operacin difcil y costosa. El segundo
defecto de un tipo es que usted no tiene control sobre lo que los valores se
asignan a los elementos de un tipo. Por ejemplo, no hay nada para evitar que la
asignacin de un valor negativo para el elemento Salario. Por ltimo,
un tipo no puede hacer nada. No se puede llevar a cabo acciones; es
simplemente una estructura de datos esttica.
Mientras que los tipos tienen su lugar (que se utilizan ampliamente en funciones
de la API de Windows), un mdulo de clase es a menudo una mejor
solucin. Nuevas instancias de una clase se pueden crear con la palabra
clavenueva y se almacenan en una coleccin o Diccionario objeto. A

continuacin, las propiedades de una clase se pueden establecer o recuperar


con Property Let y Property Get procedimientos, que pueden contener
cdigo ejecutable. Por lo tanto, el cdigo se podra escribir para elevar un error o
tomar otras medidas adecuadas si un valor no vlido se utiliza para establecer un
valor de propiedad, como un valor negativo de un salario. Por ltimo, las clases
tienen mtodos (sub y Procedimientos de la funcin) que puede llevar a cabo
acciones. En el ejemplo de un empleado, podra haber un mtodo para imprimir un
cheque de pago para el empleado.

Aspectos bsicos de la clase


Por ejemplo, vamos a adaptar el tipo de empleado se ha descrito anteriormente en
una clase. En primer lugar, inserte un mdulo de clase en su VBProject (en el
men Insertar en el editor VBA). Nombre del CEmployee clase (que es una
prctica comn el uso de una "C" como la primera letra de una clase). Hay tres
propiedades para crear: nombre, direccin, y Salario. Estos valores sern
almacenados en variables privadas dentro de la clase.Desde que se declaran
privada, que no se puede acceder fuera del mdulo de clase.
PName privada As String
Paddress privada As String
PSalary privada As Double
A continuacin, tenemos que declarar procedimientos de propiedad para permitir
que estas variables a leer y escribir a. Esto se hace con la propiedad
Get y Property Let funciones (o conjunto de propiedadespara las
variables de tipo de objeto).
'' '' '' '' '' '' '' '' ''
'Propiedad Name
'' '' '' '' '' '' '' '' ''
Public Property Get Nombre
Nombre = pName
Fin de la Propiedad
Public Property Let Nombre
pName = Valor
Fin de la Propiedad

'' ''
'' ''
() As String
(Value As String)

'' '' '' '' '' '' '' '' '' '' ''
"Propiedad Direccin
'' '' '' '' '' '' '' '' '' '' ''
Public Property Get Direccin () As String
Direccin = Paddress
Fin de la Propiedad

Public Property Let Direccin (Value As String)


Paddress = Valor
Fin de la Propiedad
'' '' '' '' '' '' '' '' '' '' ''
"Propiedad Salario
'' '' '' '' '' '' '' '' '' '' ''
Public Property Get Salario () As Double
Salario = pSalary
Fin de la Propiedad
Public Property Let Salario (Value As Double)
pSalary = Valor
Fin de la Propiedad
El procedimiento Get se utiliza para devolver un valor fuera de la clase, y el
procedimiento Let es poner un valor en la clase. Tenga en cuenta que el tipo de
datos de retorno del procedimiento de obtencin de propiedad debe ser el
mismo tipo de datos como la (ltima) parmetro al procedimiento
Property Let. De lo contrario, obtendr un error de compilacin.
Dado que los procedimientos de propiedad pueden contener cualquier cdigo que
te gusta, el procedimiento Salario Let puede ser escrito para excluir valores no
positivos.
Public Property Let Salario (Value As Double)
Si Valor> 0 Then
pSalary = Valor
Ms
"Cdigo de error apropiado aqu
End If
Fin de la Propiedad
Una propiedad se puede hacer de slo lectura simplemente omitiendo el
procedimiento Let. Por ejemplo, una propiedad de slo lectura podra ser la
retencin de impuestos, que se calcula cuando se le llama. Por ejemplo,
Property Get WithholdingTax () As Double
WithholdingTax = valor calculado
Fin de la Propiedad
Finalmente, la clase puede contener mtodos, tales como un
procedimiento PrintPaycheck.
Public Sub PrintPaycheck ()
'Cdigo real para la impresin del cheque
End Sub

Ahora que hemos definido la clase, podemos crear objetos basados en la


clase. En un mdulo de cdigo estndar, declarar una variable de tipo CEmployee.
Dim Emp Como CEmployee
A continuacin, establezca la variable a una nueva instancia de la clase y asignar
algunos valores de propiedad.
Establecer Emp = Nuevo CEmployee
Emp.Name = "Joe Smith"
Emp.Address = "123 Main Street"
Emp.Salary = 40000

Almacenamiento de varios objetos de una coleccin


Si necesita almacenar mltiples instancias de una clase, como para un grupo de
empleados, puede crear mutliple objetos de la clase y almacenarlos en una
coleccin o Diccionario objeto, como se muestra a continuacin.
Empleados dvil como Coleccin
Dim Emp Como CEmployee
Set Empleados = Nueva Coleccin
Para cada elemento de algunalista
Establecer Emp = Nuevo CEmployee
'establecer las propiedades de Emp
Employees.Add Emp
Siguiente artculo
Ahora, usted puede usar un simple bucle For Each para recorrer la coleccin y
recorrer la coleccin y acceder a cada instancia de CEmployee sequentailly:
Dim Emp Como CEmployee
Para Cada Emp En Empleados
Debug.Print Emp.Name
Siguiente Emp

El Instancing propiedad de una clase

La propiedad Instancing de unos controles de clase que puede llegarse a esa


clase. El valor por defecto esprivada, lo que significa que la clase slo se puede
utilizar en el proyecto en el que se define la clase. Puede establecer la propiedad
creacin de instancias para PublicNotCreatable, lo que permite una variable
que se declara como que tipo de clase en proyectos que tengan una referencia al
proyecto que contiene la clase. La segunda clase puede declarar una variable del
tipo de clase, pero no puede crear una instancia de la clase con la palabra
clave New. Consulte la siguiente seccin para ms detalles.

El uso de clases en varios proyectos


Si la propiedad Instancias de la clase es PublicNotCreatable una variable de
ese tipo de clase puede ser declarado en otros proyectos, pero no se puede crear
en ese proyecto. Puede utilizar una funcin en el proyecto que contiene la clase
para devolver una nueva instancia de la persona que llama. En primer lugar,
cambiar el nombre del proyecto que contiene la clase del valor por defecto
de VBProject a algo significativo comoprojSourceProject. Luego, en la
clase que va a utilizar la clase, establecer una referencia
aprojSourceProject. De vuelta en el proyecto que contiene la clase, crear un
procedimiento que va a crear y devolver una nueva instancia de la clase:
Funcin Pblica getClass () Como CEmployee
Establecer getClass = Nuevo CEmployee
End Function
Luego llame a esta funcin en el proyecto que va a utilizar la clase:
Dim NewEmp Como projSourceProject.CEmployee
Establecer NewEmp = projSourceProject.GetClass ()

Referencia a s misma una instancia de una clase


Cdigo dentro de una propiedad o mtodo de una clase puede referirse a su
propia instancia mediante el uso de la referencia de m. Por ejemplo,
PName privada As String
Nombre Property Let (S As String)
pName = S
Fin de la Propiedad
Public Sub SomeMethod ()
'' '' '' '' '' '' ''
'Algo de cdigo

'' '' '' '' '' '' ''


Me.Name = "ABCD"
End Sub
Esto se refiere a la propiedad Nombre de la instancia de la clase de la que se
ejecuta. Otros lenguajes de programacin, como C ++, C # y Java, utilice la
palabra clave this para hacer referencia a la instancia de una clase.

Configuracin El Valor predeterminado de una clase


Puede especificar una propiedad para ser la propiedad predeterminada de una
clase. Al hacer esto, se puede omitir que nombre de la propiedad y el compilador
utilizar la propiedad predeterminada. Por ejemplo, si usted hizo un nombre a la
propiedad predeterminada, las siguientes lneas de cdigo son funcionalmente
equivalentes:
Emp.Name = "Joe Smith"
Emp = "Joe Smith"
Ver Propiedad omisin de una clase de informacin y ejemplos de la creacin de
una propiedad predeterminada.
Esta pgina slo araa la superficie de lo que puede hacer con las
clases. Consulte con un buen libro en VBA o programacin Visual Basic 6 para
una ms en profundidad el tratamiento de las clases.

Das könnte Ihnen auch gefallen