Está en la página 1de 83

Desarrollo de una aplicación

en tres capas
con interfase Cliente Windows,
uso de Data Access A. Blocks,
DataSets tipados
y ...

http://www.desarrolladoras.com - info@desarrolladoras.com
otras yerbas…
Inspirada en la Aplicación Pachacamac de Daniel Seara.
Gracias Daniel por enseñarnos tanto!

En el día de la Tradición…
¿nos darán un mate al menos …?

por Vilma Hinterwimmer


vilmahinter@desarrolladoras.com

http://www.desarrolladoras.com - info@desarrolladoras.com
Temas a tratar.... si llegamos a tiempo!

• Identificando las capas y los proyectos

• Creando la solución y los proyectos

• DataSet tipados

• Donde almacenamos la cadena de conexión

• Usando el Data Access Application Blocks

http://www.desarrolladoras.com - info@desarrolladoras.com
….mas temas
• La Clase Entidad y sus derivadas

• Herencia de Formularios

• Armado de un formulario tipo Outlook Express

• Principales propiedades, métodos y eventos de


algunos controles

http://www.desarrolladoras.com - info@desarrolladoras.com
La Aplicación

http://www.desarrolladoras.com - info@desarrolladoras.com
Identificando las capas

Cliente Negocio Datos


Web Reglas
o y DAAB
Windows Entidades

Usuario Repositorio
de Datos
Aplicación

http://www.desarrolladoras.com - info@desarrolladoras.com
Capas
Cliente
Interfaz gráfica con el Usuario, puede ser Web o Windows

Negocio
Clases cuyos métodos implementan
Reglas de negocio las reglas de negocio globales

Clases bases y sus heredades que


definen los objetos a utilizar en la
Entidades aplicación: Cliente, Proveedor,
Factura, etc.

Datos
Acceso a repositorios de Datos directo o a través del DAAB

http://www.desarrolladoras.com - info@desarrolladoras.com
Creando la solución y los proyectos

• Creamos una Solución en blanco


• Agregamos los Proyectos:
Nombre del proyecto Tipo de proyecto

Alumnos Aplicación para Windows


AluNegocio Biblioteca de Clases
AluDatos
Cliente Negocio Biblioteca
Datos de Clases
AluGlobal Biblioteca de Clases
Data Access Application Block Existente

http://www.desarrolladoras.com - info@desarrolladoras.com
Relación entre las capas y los proyectos
APLICACION
Cliente Negocio Datos

ALU
Negocio ALU
NEGOCIO DATOS

ALUMNOS

ALU
DAAB
Cliente GLOBAL

Proyecto Capa Referencias entre proyectos

http://www.desarrolladoras.com - info@desarrolladoras.com
Capa
de
Datos

http://www.desarrolladoras.com - info@desarrolladoras.com
DataSets tipados
La difícil tarea de crear
DataSets tipados
en tan solo 4 Pasos...

http://www.desarrolladoras.com - info@desarrolladoras.com
• Agregar un Archivo DataSet.xsd al proyecto

http://www.desarrolladoras.com - info@desarrolladoras.com
1. Agregar una conexión a datos en el Explorador de
Servidores

http://www.desarrolladoras.com - info@desarrolladoras.com
Dos pasos mas
para llegar a tener...

¡Un DataSet Tipado!

http://www.desarrolladoras.com - info@desarrolladoras.com
1. Agregar la definición de la tabla al DataSet tipado
( drag and drop – arrastrar y soltar )

http://www.desarrolladoras.com - info@desarrolladoras.com
1. Generar la clase (Generar conjunto de datos)

y..... LISTO!!!!!
http://www.desarrolladoras.com - info@desarrolladoras.com
Este es nuestro DataSet tipado

Un archivo .vb que contiene una clase...


la escribió Visual Studio por nosotros...
y ahora la podemos usar....
http://www.desarrolladoras.com - info@desarrolladoras.com
y...

¿Para que sirve


un Dataset Tipado?

Para facilitarnos...
¡LA VIDA!

http://www.desarrolladoras.com - info@desarrolladoras.com
Escribiendo código
con un
DataSet tipado

http://www.desarrolladoras.com - info@desarrolladoras.com
La definición del dataset ahora será
Tabla o Procedimiento
Almacenado Dim dstCliente As New dsCliente
TCliente

Nombre
del
Tipo del La tabla será dstCliente.TCliente
Campo
Campo
Nombre varchar A los campos de la fila n los
Direccion varchar
llamamos:
Saldo decimal
dstCliente.TCliente(n).Nombre
Clave varbinary dstCliente.TCliente(n).Direccion
Sucursal smallint dstCliente.TCliente(n).Saldo
dstCliente.TCliente(n).Clave
dstCliente.TCliente(n).Sucursal

http://www.desarrolladoras.com - info@desarrolladoras.com
donde antes escribíamos…
ComboBox1.DataSource = dstCliente.Tables( _
“TCliente”)

ahora podemos a escribir…..


ComboBox1.DataSource = dstCliente.TCliente

donde antes escribíamos…


txtnombre.Text = dstCliente.Tables( _

“TCliente”).Rows(n).Item(0).ToString
ahora podemos a escribir…..
txtnombre.Text = dstCliente.TCliente(n).Nombre

http://www.desarrolladoras.com - info@desarrolladoras.com
¿Donde guardamos la
cadena de conexión?

http://www.desarrolladoras.com - info@desarrolladoras.com
Almacenaremos la cadena de conexión
en el archivo de configuración
de la Aplicación

¿A que proyecto lo agregamos?

Al proyecto...

ALUMNOS

http://www.desarrolladoras.com - info@desarrolladoras.com
Agregamos un archivo App.Config
al Proyecto Alumnos (Capa Cliente)

http://www.desarrolladoras.com - info@desarrolladoras.com
Agregamos la clave y el valor de la cadena de
conexión al archivo de configuración

<appSettings>
<add key=“StrConn“
value="server=MiServidor;database=DB
;trusted_connection=true"/>
</appSettings>

http://www.desarrolladoras.com - info@desarrolladoras.com
Así se verá en el Visual Studio nuestro
archivo de configuración

Habría que encriptar la cadena de configuración para guardarla en el


Archivo de Configuración.
Lo dejaremos para el próximo evento...

http://www.desarrolladoras.com - info@desarrolladoras.com
Accedemos al valor desde el código

Dim strconn as String = _

Configuration.ConfigurationSettings.AppSettings( _
“StrConn")

http://www.desarrolladoras.com - info@desarrolladoras.com
Data Access
Application Blocks

http://www.desarrolladoras.com - info@desarrolladoras.com
La clase y los métodos
principales

Clase SqlHelper
Métodos

ExecuteReader

ExecuteNonQuery

ExecuteDataset

FillDataset

http://www.desarrolladoras.com - info@desarrolladoras.com
ExecuteReader
Devuelve un SQLDataReader con el cual accedemos a las filas

ExecuteReader(ByVal connectionString As String, _


ByVal commandType As CommandType, _
ByVal commandText As String, _
ByVal ParamArray commandParameters() As SqlParameter)

ExecuteNonQuery

Devuelve el numero de filas afectadas

ExecuteNonQuery(ByVal connectionString As String, _


ByVal commandType As CommandType,
ByVal commandText As String, _
ByVal ParamArray commandParameters() As SqlParameter)

http://www.desarrolladoras.com - info@desarrolladoras.com
ExecuteDataset

Devuelve un DataSet

ExecuteDataset(ByVal connectionString As String, _


ByVal commandType As CommandType, _
ByVal commandText As String, _
ByVal ParamArray commandParameters() As SqlParameter)

FillDataset
Llena de datos un DataSet que le pasamos como argumento, no devuelve
ningún valor

FillDataset(connectionString As String, commandType As CommandType, _


commandText As String, _
dataSet As DataSet, _
tableNames() As String, _
ByVal ParamArray commandParameters() As SqlParameter)
http://www.desarrolladoras.com - info@desarrolladoras.com
Ejemplos
ExecuteReader

Imports Microsoft.ApplicationBlocks.Data.SqlHelper

...
Dim drCat1 As SqlDataReader
drCat1 = SqlHelper.ExecuteReader( strconn, _
CommandType.StoredProcedure, _
"GetProductsByCategory", _
New SqlParameter("@CategoryID", 1))

...
drCat1.Close()

http://www.desarrolladoras.com - info@desarrolladoras.com
Ejemplos
ExecuteNonQuery

Imports Microsoft.ApplicationBlocks.Data.SqlHelper

Public Shared Function GrabarCliente(ByVal cliente As String) _


as Integer
Dim Params(0) As SqlParameter
Params(0) = New SqlParameter("@NomCliente", _
SqlDbType.VarChar, 50)
Params(0).Value = cliente
Return ExecuteNonQuery( strconn, _
CommandType.StoredProcedure, _
“Clientes_Insert", Params)
End Function

http://www.desarrolladoras.com - info@desarrolladoras.com
Ejemplos
ExecuteDataset

Imports Microsoft.ApplicationBlocks.Data.SqlHelper

Public Shared Function LeerTodos( ) As DataSet


Return ExecuteDataset( strconn,CommandType.StoredProcedure, _
“Clientes_GetAll“)
End Function

http://www.desarrolladoras.com - info@desarrolladoras.com
Ejemplos
FillDataset

Imports Microsoft.ApplicationBlocks.Data.SqlHelper

Public Shared Function LeerTodos( ByVal ds as Dataset ) _


As DataSet
Dim strTabla() As String = {“Parametros_GetAll"}
FillDataset( strconn, CommandType.StoredProcedure, _
"Parametros_GetAll", ds, strTabla)
Return ds
End Function

http://www.desarrolladoras.com - info@desarrolladoras.com
Pausa

Mate
Break

http://www.desarrolladoras.com - info@desarrolladoras.com
Escribiendo el código de la
Capa de Datos
• Agregamos una clase al proyecto AluDatos.
• Esta clase va a tener varios métodos compartidos para las
distintas operaciones que necesitemos hacer sobre la Base de
Datos.
TraerDataSet
Actualizar
Borrar
GuardarValor

http://www.desarrolladoras.com - info@desarrolladoras.com
Escribiendo el código de la
Capa de Datos
Public Class CGrlDatos

Shared ConnAlu As String = _


Configuration.ConfigurationSettings.AppSettings("ConnALU")

Public Shared Function TraerDataset( _


ByVal entidad As String) As DataSet
Try
Return ExecuteDataset(ConnAlu, _
CommandType.StoredProcedure, entidad & "_GetAll")
Catch ex As Exception
Throw ex
End Try
End Function
...
End Class
http://www.desarrolladoras.com - info@desarrolladoras.com
Capa
Negocio

http://www.desarrolladoras.com - info@desarrolladoras.com
Escribiendo el código de la
Capa Negocio
•Agregamos una Clase CEntidad al proyecto AluNegocio.
•Va a ser la Clase base de la cual vamos a heredar para crear
mas fácilmente las demás.
•Esta Clase va a estar compuesta por:
Declaración de Variables
Un constructor
Propiedades
Métodos

http://www.desarrolladoras.com - info@desarrolladoras.com
Clase CEntidad

Public Class CEntidad

Declaración de Variables

Constructores

Propiedades

Metodos

End Class

http://www.desarrolladoras.com - info@desarrolladoras.com
Clase CEntidad
Variables
#Region "Declaración de Variables“

Friend mNomEnt As String


Friend mId As Integer
Protected Friend mDatos As DataRow
Protected Friend mTDatos As DataSet

#End Region

http://www.desarrolladoras.com - info@desarrolladoras.com
Clase CEntidad
Constructor

#Region "Constructores"

Sub New(ByVal NombreEntidad As String)


mNomEnt = NombreEntidad
End Sub

#End Region

http://www.desarrolladoras.com - info@desarrolladoras.com
C #Region "Propiedades" P
l r
Public Overridable Property Id() As Integer
a Get
o
Return mId
s
e
End Get
p
Set(ByVal Value As Integer)
Try i
C
mId = Value
CGrlDatos.TraerDataset(mTDatos, mNomEnt, mId) e
E If mTDatos.Tables(0).Rows.Count > 0 Then
mDatos = mTDatos.Tables(0).Rows(0) d
n Else
mDatos = mTDatos.Tables(0).NewRow a
t mTDatos.Tables(0).Rows.Add(mDatos)
d
End If
i Catch ex As Exception
e
Throw ex
d
a End Set
End Try
s
End Property
d
#End Region
http://www.desarrolladoras.com - info@desarrolladoras.com
Clase CEntidad
Métodos
Public Overridable Function TraerTodos() As DataSet
Try
Return CGrlDatos.TraerDataset(New DataSet, _
mNomEnt, mNomEnt & "_GetAll")
Catch ex As Exception
Throw ex
End Try
End Function

Public Overridable Function TraerLista() As DataSet


Try
Return CGrlDatos.TraerDataset(New DataSet, _
mNomEnt, mNomEnt & "_GetList")
Catch ex As Exception
Throw ex
End Try
End Function
http://www.desarrolladoras.com - info@desarrolladoras.com
Clase CEntidad
Métodos
Public Overridable Function TraerUno() As DataSet
Try
Return CGrlDatos.TraerDataset(New DataSet, _
mNomEnt & "_GetByNro" & _
mNomEnt.PadLeft(3), Me.Id)
Catch ex As Exception
Throw ex
End Try
End Function

http://www.desarrolladoras.com - info@desarrolladoras.com
Clase CEntidad
Métodos
Public Overridable Sub Actualizar()
Try
Dim DatosUno() As Object = _
mTDatos.Tables(0).Rows(0).ItemArray()
If Me.Id <> -1 Then
CGrlDatos.Actualizar(mDatos, mNomEnt & "_Update")
Else
CGrlDatos.ActualizarSal(mDatos, mNomEnt & "_Insert")
Me.Id = DatosUno(0)
End If
Catch ex As Exception
Throw ex
End Try
End Sub

http://www.desarrolladoras.com - info@desarrolladoras.com
Clase CEntidad
Métodos
Public Overridable Function Eliminar(ByVal Id As Integer, _
ByVal nomparam As Array) As Integer
Try
Return CGrlDatos.Borrar(nomparam, _
mNomEnt & "_Delete", Id)
Catch ex As Exception
Throw ex
End Try
End Function

http://www.desarrolladoras.com - info@desarrolladoras.com
Escribiendo el código de la
Capa Negocio
• Agregamos una Clase por cada entidad que necesitemos, en
este caso Alumnos, Curso, Asignaturas, Localidades,
Paises, etc... al proyecto AluNegocio.
• Estas Clases van a heredar de la Clase base CEntidad
• Cada una de estas Clases va a estar compuesta por:
Declaración de Variables
Un constructor
Propiedades
Métodos

http://www.desarrolladoras.com - info@desarrolladoras.com
Clase CPais

Public Class CPais

Inherits ALU.AluNegocio.CEntidad

Declaración de Variables

Constructores

Propiedades

Actualización

End Class

http://www.desarrolladoras.com - info@desarrolladoras.com
Clase CPais
Variables
#Region "Declaración de Variables“

Protected Friend mTodosDatos As New dsPaises


Private Pais As dsPaises.PaisesRow

#End Region

http://www.desarrolladoras.com - info@desarrolladoras.com
#Region "Constructores"

C Sub New(ByVal value As Integer) C


l
MyBase.New("Paises")
Try
o
a MyBase.mId = value n
mTodosDatos.Clear()
s CGrlDatos.TraerDataset(mTodosDatos, mNomEnt, s
value)
e If mTodosDatos.Tables(0).Rows.Count = 0 Then t
Pais = mTodosDatos.Paises.NewPaisesRow
Pais.PaiNroPai = -1
r
C Pais.PaiDesc = "" u
P Else

a
Pais = mTodosDatos.Paises.Rows(0) c
End If
i MyBase.mTDatos = mTodosDatos t
MyBase.mDatos = Pais
s Catch ex As Exception o
Throw ex
End Try
r
End Sub
#End Region
http://www.desarrolladoras.com - info@desarrolladoras.com
C #Region "Propiedades" P
l Public Overrides Property Id() As Integer r
a Get
Return MyBase.mId
o
s End Get p
e Set(ByVal Value As Integer) i
MyBase.mId = Value
End Set e
C End Property
d
P Public Property Desc() As String
Get
a
i Return Pais.PaiDesc d
End Get
a Set(ByVal Value As String) e
Pais.PaiDesc = Value
s End Set s
End Property

#End Region
http://www.desarrolladoras.com - info@desarrolladoras.com
Clase CPais
Métodos
#Region "Actualización"

Public Overrides Sub Actualizar()


Try
If Me.Id > 0 Then
CGrlDatos.Actualizar(Pais, Me.mNomEnt & "_Update")
Else
mId = CGrlDatos.ActualizarSal(Pais, _
Me.mNomEnt & "_Insert")
End If
Catch ex As Exception
Throw ex
End Try
End Sub

#End Region

http://www.desarrolladoras.com - info@desarrolladoras.com
Capa
Cliente

http://www.desarrolladoras.com - info@desarrolladoras.com
Herencia
de
Formularios

http://www.desarrolladoras.com - info@desarrolladoras.com
Formulario Base
• Creamos un Formulario del cual van a heredar la mayoría de los
Formularios de nuestra Aplicación

• Colocamos
P este Formulario en el Proyecto AluGlobal para poder hacer
referencia a él desde el Proyecto Alumnos y cualquier otro Proyecto que
u
agreguemos en la capa Cliente.
b
l
i
• Agregamos a este Formulario todas las cosas que se van a repetir en
todos loscformularios. Icono del Sistema, Nombre de la Empresa, etc...

C
• Generamos
l la solución para que se genere el Assembly y así poder
heredarloa
s
s
http://www.desarrolladoras.com - info@desarrolladoras.com
Formulario Heredado
Agregamos un Formulario que va a heredar todas las
características de nuestro Formulario Base

http://www.desarrolladoras.com - info@desarrolladoras.com
Formulario Heredado

También podríamos haber


elegido Formulario Heredado
del cuadro de diálogo Agregar
Nuevo Elemento

Elegimos el Formulario del


cual vamos a heredar

http://www.desarrolladoras.com - info@desarrolladoras.com
Formulario Heredado

• Ya tenemos nuestro Formulario Heredado


• Todo lo que agregamos en el Formulario Base va a estar en
todos los formularios heredados del mismo.
• Ahora nos dedicamos a agregarle a los Formularios
heredados los controles particulares del mismos sin tener
que preocuparnos que las cosas generales queden en
distinto formato en los distintos formularios de la aplicación.

No tendremos que volver a agregar estos controles y


este código nunca mas!
Todos van a ser iguales!

http://www.desarrolladoras.com - info@desarrolladoras.com
Armado de un Formulario

estilo
“Outlook Express”

http://www.desarrolladoras.com - info@desarrolladoras.com
Formulario estilo
“Outlook Express”

Es fácil!!!
Son sólo 10 pasos
http://www.desarrolladoras.com - info@desarrolladoras.com
Formulario estilo “Outlook Express”

• Colocar en el Formulario todos los controles


que vayan pegados sobre sus bordes.
ToolBar, StatusBar, etc...
• Colocar un control Panel y cambiar su
propiedad Dock a Left
• Colocar un control Splitter en el Formulario y
cambiar su propiedad Dock a Left
• Colocar un control ListView en el Formulario y
cambiar su propiedad Dock a Fill

http://www.desarrolladoras.com - info@desarrolladoras.com
Formulario estilo “Outlook Express”

• Colocar un control Panel dentro del primer


Panel y cambiar su propiedad Dock a Top
• Colocar un control Splitter dentro del
primer Panel y cambiar su propiedad Dock
a Top
• Colocar otro control Panel dentro del primer
Panel y cambiar su propiedad Dock a Fill

Sólo faltan 3 pasos mas...

http://www.desarrolladoras.com - info@desarrolladoras.com
Formulario estilo “Outlook Express”

• Dentro de cada uno de los dos últimos Panel


que colocamos, colocar un control Button y
cambiar su propiedad Dock a Top
• Colocar un control TreeView dentro de cada
uno de los 2 últimos Panel y cambiar su
propiedad Dock a Fill
• Colocar 2 controles ImageList en el
formulario
Listo!!!
Ahora sólo falta escribir un poquito para llenar de
datos los controles y para que además funcionen...
http://www.desarrolladoras.com - info@desarrolladoras.com
Principales
Propiedades,
Métodos y
Eventos
de algunos Controles

http://www.desarrolladoras.com - info@desarrolladoras.com
Principales Propiedades, Métodos y Eventos
de algunos controles

ImageList
Propiedades

Images: Colección de imágenes, aquí se cargan los


Iconos

ImageSize: Cambiando esta propiedad podemos hacer


que los Iconos se vean mas chicos o mas grandes

http://www.desarrolladoras.com - info@desarrolladoras.com
Principales Propiedades, Métodos y Eventos
de algunos controles

TreeView
Propiedades

ImageList: Asignar el nombre del ImageList del cual se


van a tomar los Iconos a mostrar

ItemHeight: Altura de cada nodo

http://www.desarrolladoras.com - info@desarrolladoras.com
Principales Propiedades, Métodos y Eventos
de algunos controles

TreeView
Propiedades

Nodes: Colección de nodos, creamos los nodos, le


asignamos el texto a mostrar y el índice de icono.
También podemos hacer esto por código

SelectedNode: Nodo seleccionado en un instante dado

http://www.desarrolladoras.com - info@desarrolladoras.com
Principales Propiedades, Métodos y Eventos
de algunos controles

TreeView
Métodos

GetNodeAt: Devuelve el nodo, si existe, que se


encuentra en el lugar donde se hizo click en base a las
coordenadas x e y

ExpandAll: Expande todos los nodos del árbol

http://www.desarrolladoras.com - info@desarrolladoras.com
Principales Propiedades, Métodos y Eventos
de algunos controles

TreeView
Eventos

AfterSelected: Se produce luego de seleccionar un


nuevo nodo

MouseDown: Se produce al presionar cualquier botón


del mouse. Lo utilizamos para saber si hizo click sobre un
nodo o no y para cambiar de nodo seleccionado
apretando cualquier botón del mouse

http://www.desarrolladoras.com - info@desarrolladoras.com
Principales Propiedades, Métodos y Eventos
de algunos controles

ListView
Propiedades

LargeImageList: Asignar el nombre del ImageList del


cual se van a tomar los Iconos a mostrar de tamaño
grande

SmallImageList: Asignar el nombre del ImageList del


cual se van a tomar los Iconos a mostrar de tamaño
pequeño

http://www.desarrolladoras.com - info@desarrolladoras.com
Principales Propiedades, Métodos y Eventos
de algunos controles

ListView
Propiedades

View: Estilo de Vista en la que se muestra el ListView


SelectedItems: Colección de elementos seleccionados
en el control en un instante dado

http://www.desarrolladoras.com - info@desarrolladoras.com
Principales Propiedades, Métodos y Eventos
de algunos controles

ListView
Eventos

SelectedIndexChanged: Se produce al cambiar el


elemento seleccionado

http://www.desarrolladoras.com - info@desarrolladoras.com
Principales Propiedades, Métodos y Eventos
de algunos controles

Splitter

Eventos

SplitterMoved: Se produce al arrastrar el Splitter

http://www.desarrolladoras.com - info@desarrolladoras.com
Links útiles:
Universidad.Net:
Universidad.Net
http://www.microsoft.com/spanish/msdn/comunidad/uni.net/
Sitio de Microsoft dedicado a .Net Windows Forms:
http://www.windowsforms.net
Data Access Aplication Blocks:
http://msdn.microsoft.com/library/en-us/dnbda/html/daab-
rm.asp?frame=true
http://www.gotdotnet.com/Workspaces/Workspace.aspx?id=c20d12b0-
af52-402b-9b7c-aaeb21d1f431
Desarrollador Cinco Estrellas:
http://www.microsoft.com/spanish/msdn/comunidad/dce/default.asp
PanoramaBox: http://www.panoramabox.com/

http://www.desarrolladoras.com - info@desarrolladoras.com
http://www.desarrolladoras.com - info@desarrolladoras.com
Muchas Gracias

desarrolladoras
www.desarrolladoras.com

http://www.desarrolladoras.com - info@desarrolladoras.com
Clases Instanciadas
versus
Clases Compartidas

http://www.desarrolladoras.com - info@desarrolladoras.com
Clases Compartidas
• Las clases NO pueden ser compartidas. Sus métodos,
propiedades y variables SI pueden serlo
• Para que un Método, Propiedad y/o Variable sean
compartidos debemos calificarlos con la palabra reservada
SHARED
• Un Método, Propiedad y/o Variable compartidos pueden ser
usados en cualquier parte del código sin necesidad de crear un
nuevo objeto, haciendo referencia al mismo a través del
nombre de la clase. Ej: MiClase.MiMetodo()

http://www.desarrolladoras.com - info@desarrolladoras.com
Clases Compartidas
Public Class MiClase

Public Shared MiVariable As String

Public Shared Sub MiMetodo()


MiVariable = "Hola Mundo"
End Sub
Public Class OtraClase
End Class
Public Sub OtroMetodo()
MiClase.MiVariable = "Hola Gente"
MiClase.MiMetodo()
End Sub

End Class

http://www.desarrolladoras.com - info@desarrolladoras.com
Clases Instanciadas

• Las clases tal cual las definimos normalmente serán instanciadas


mientras NO le agreguemos a algunos de sus miembros el
calificativo SHARED (Algunos miembros podrán ser SHARED y a
los mismos los podremos invocar a través del nombre de la Clase)
• Para acceder a sus miembros, Métodos, Propiedades y/o
Variables deberemos crear un objeto de esa Clase. Crearemos
una nueva instancia.
• Los Métodos, Propiedades y/o Variables de estas clases
pueden ser usados en cualquier parte del código a través de la
variable de objeto creada a partir de esta clase.

http://www.desarrolladoras.com - info@desarrolladoras.com
Clases Instanciadas
Public Class MiClase

Public MiVariable As String

Public Sub MiMetodo()


MiVariable = "Hola Mundo"
End Sub
Public Class OtraClase
End Class
Public Sub OtroMetodo()
Dim obj As MiClase = New MiClase
obj.MiVariable = "Hola Gente"
obj.MiMetodo()
End Sub

End Class
http://www.desarrolladoras.com - info@desarrolladoras.com