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