Mostrando entradas con la etiqueta class. Mostrar todas las entradas
domingo, 3 de mayo de 2020
VB.Net: Sentencia Using y With
Francisco
11:48
action
,
basic
,
basico
,
clases
,
class
,
collector
,
franvarvil
,
función
,
garbage
,
garbage collector
,
informática
,
internet
,
por: Francisco Vargas
,
sentencias
,
using
,
vb.net
,
visual
,
visual basic
,
with
No hay comentarios
:
Introducción
La sentencia using es muy utilizada al momento de desarrollar aplicaciones en VB .Net, su importancia radica en que libera los recursos al finalizar el bloque, es decir, cuando se ejecute el Garbarge Collector, los espacios en memoria estarán marcados para que este los libere y deje accesibles.
Desarrollo
Para aprender a utilizarlo, vamos a realizar un pequeño ejemplo con una clase persona, el único detalle es que, para una clase ser usada dentro de la sentencia Using y With esta debe implementar la Interfaz IDisposable, tal como se muestra en el siguiente código.
Una vez tenemos nuestra clase, realizaremos una instancia a esta a través de la sentencia Using de la siguiente forma:
Como vemos al implementar la interfaz podremos utilizar la sentencia Using, adicionalmente al utilizar la sentencia With podremos facilitar el uso de nuestro objeto lPerson, es decir, todo lo que esté dentro del bloque With pertence al objeto Person, es por esto que no es necesario establecer lPersona.Name, basta con .Name.
Esto aplica para las demás propiedades o métodos y al finalizar el proceso se liberará el recurso lPerson, por lo cual no podrá se accedido nuevamente.
Esto es útil cuando se cargar archivos o cuando realizamos operaciones sobre base de datos, para liberar los recursos una vez que terminamos de procesar.
Conclusión
La sentencia Using ayuda a liberar recursos de una forma más eficiente, mientra que la sentencia With nos ayudará a manejar características de un objeto de forma sencilla.
La sentencia using es muy utilizada al momento de desarrollar aplicaciones en VB .Net, su importancia radica en que libera los recursos al finalizar el bloque, es decir, cuando se ejecute el Garbarge Collector, los espacios en memoria estarán marcados para que este los libere y deje accesibles.
Desarrollo
Para aprender a utilizarlo, vamos a realizar un pequeño ejemplo con una clase persona, el único detalle es que, para una clase ser usada dentro de la sentencia Using y With esta debe implementar la Interfaz IDisposable, tal como se muestra en el siguiente código.
Public Class Person
Implements IDisposable ' Se implementa la interfaz
Public Property Name As String
Public Property LastName As String
Public Sub Dispose() Implements IDisposable.Dispose
Me.Finalize() ' Se da funcionalidad al método implementado
End Sub
Public Function GetFullName() As String
Return Me.Name & " " & Me.LastName
End Function
End Class
Una vez tenemos nuestra clase, realizaremos una instancia a esta a través de la sentencia Using de la siguiente forma:
Using lPerson As New Person
With lPerson
.Name = "Using"
.LastName = "Statement"
Console.WriteLine(.GetFullName)
End With
End Using
Como vemos al implementar la interfaz podremos utilizar la sentencia Using, adicionalmente al utilizar la sentencia With podremos facilitar el uso de nuestro objeto lPerson, es decir, todo lo que esté dentro del bloque With pertence al objeto Person, es por esto que no es necesario establecer lPersona.Name, basta con .Name.
Esto aplica para las demás propiedades o métodos y al finalizar el proceso se liberará el recurso lPerson, por lo cual no podrá se accedido nuevamente.
Esto es útil cuando se cargar archivos o cuando realizamos operaciones sobre base de datos, para liberar los recursos una vez que terminamos de procesar.
Conclusión
La sentencia Using ayuda a liberar recursos de una forma más eficiente, mientra que la sentencia With nos ayudará a manejar características de un objeto de forma sencilla.
sábado, 2 de mayo de 2020
VB.Net: Entendiendo los punteros
Francisco
12:41
action
,
basic
,
basico
,
clases
,
class
,
franvarvil
,
función
,
informática
,
método
,
por: Francisco Vargas
,
programación
,
tecnologías de información
,
vb.net
,
visual
,
visual basic
No hay comentarios
:
Introducción
En muchas ocaciones tenemos dudas cuando trabajamos con punteros pero, hay un pista que nos ayudará a identificar rápidadmente si el valor se hace por referencia o por valor.
Todos los tipos primitivos (enteros, char, double, etc), son automáticamente por valor, mientras que los objetos complejos (objetos de clases) son por referencia.
Desarrollo
Para ejemplificar esto crearemos el enumerable Genero y la Clase persona:
Ahora crearemos una función que cree dos objetos persona, uno masculino y uno femenino, de la siguiente forma.
Finalmente nuestra salida es:
Conclusión
Siempre es importante ver el comportamiento de los objetos que utilicemos y controlarlos de la forma en que queremos para evitar posibles perdidas de integridad en la información de los objetos durante la ejecución de nuestra aplicación.
En muchas ocaciones tenemos dudas cuando trabajamos con punteros pero, hay un pista que nos ayudará a identificar rápidadmente si el valor se hace por referencia o por valor.
Todos los tipos primitivos (enteros, char, double, etc), son automáticamente por valor, mientras que los objetos complejos (objetos de clases) son por referencia.
Desarrollo
Para ejemplificar esto crearemos el enumerable Genero y la Clase persona:
Public Enum Genero
Femenino = 1
Masculino = 0
End Enum
Public Class Person
Public Property Name As String
Public Property LastName As String
End Class
Ahora crearemos una función que cree dos objetos persona, uno masculino y uno femenino, de la siguiente forma.
Sub Puntero()
Dim persona1 = New Persona(Genero.Femenino)
Dim persona2 = New Persona(Genero.Masculino)
persona1.asignaEdad(persona1, 32)
persona2 = persona1
persona2.asignaEdad(persona2, 25)
Console.WriteLine($"{persona1.Genero},{persona1.Edad},{persona2.Genero},{persona2.Edad}")
End Sub
Como vemos se crea la persona1 y la persona2 con se les asigna espacios en memoria distintos. Luego se le asigna la edad de 32 a la persona1. Y tenemos la parte importante, igualamos la persona2 a la persona1, es decir ahora ambos objetos persona direccionan al mismo espacio en memoria, por lo que al cambiar la edad de la persona2 a 25, ambos, persona1 y persona2 al apuntar al mismo espacio en memoria se ven modificadados.Finalmente nuestra salida es:
Console.WriteLine($"{persona1.Genero},{persona1.Edad},{persona2.Genero},{persona2.Edad}")
'Output: 1,25,1,25
Conclusión
Siempre es importante ver el comportamiento de los objetos que utilicemos y controlarlos de la forma en que queremos para evitar posibles perdidas de integridad en la información de los objetos durante la ejecución de nuestra aplicación.
VB.Net: Clases de Extensión, Extension Class, Methods
Francisco
9:29
basic
,
clases
,
class
,
extension
,
extensión
,
función
,
método
,
vb.net
,
visual
,
visual basic
No hay comentarios
:
Introducción
Algunas ocaciones queremos tener muchas funcionalidades en una sola clase, pero esto va contra los principios de una programación limpia, es por esto que Visual Basic .Net dispone de una herramienta llama Extesion, la cual nos permite extender el funcionamiento de nuestra clase con otra clase de tipo extension.
Desarrollo
Las clases y métodos extensión nos permiten extender nuestro funcionamiento, separando la responsabilidad lógica de nuestra clase principal en otras. Este tipo de clases y funciones de extensión se ligan automaticamente a nuestra clases principal, pero para ello se deben cumplir ciertos requisitos:
Es una clase muy simple, con dos propiedades: nombre y apellido. Ahora bien, queremos realizar una función que nos retorne el nombre completo de la persona, para eso crearemos un clase de extensión para la clase persona aplicando los tres puntos anteriores, de la siguiente manera:
De esta forma si creamos una instancia persona podremos llamar a la función GetFullName a pesar de que esta está en otra clase físicamente.
Conclusión
La funcionalidad de extensión nos permite mantener las funciones de una clase unidas, manteniendo la integridad y siguiendo el principio de responsabilidad única. Lo que nos permite separar en capas o subdividir nuestra funcionalidad según el nivel dentro de la arquitectura de nuestro proyecto.
Algunas ocaciones queremos tener muchas funcionalidades en una sola clase, pero esto va contra los principios de una programación limpia, es por esto que Visual Basic .Net dispone de una herramienta llama Extesion, la cual nos permite extender el funcionamiento de nuestra clase con otra clase de tipo extension.
Desarrollo
Las clases y métodos extensión nos permiten extender nuestro funcionamiento, separando la responsabilidad lógica de nuestra clase principal en otras. Este tipo de clases y funciones de extensión se ligan automaticamente a nuestra clases principal, pero para ello se deben cumplir ciertos requisitos:
- La clase deber ser un Módulo.
- El nombre de la clase debe ser la unión del nombre de nuestra clase principal y Extension.
- En cada método o función se debe dar la anotación <Extension()>
Para un ejemplo sencillo, imaginemos que tenemos la clase Persona, declarada de la siguiente forma:
Public Class Persona
Public Property Name As String
Public Property LastName As String
End Class
Es una clase muy simple, con dos propiedades: nombre y apellido. Ahora bien, queremos realizar una función que nos retorne el nombre completo de la persona, para eso crearemos un clase de extensión para la clase persona aplicando los tres puntos anteriores, de la siguiente manera:
Imports System.Runtime.CompilerServices
'Se crea un módulo con el nombre de nuestra clase + Extension
Module PersonaExtension
' Se agrega la etiqueta para que el método sea extendido.
' Se debe recibir un objeto de tipo Persona aunque este no se envía
<Extension()>
Public Function GetFullName(pPerson As Persona) As String
' Se concatenan las propiedades y se retorna
Return pPerson.Name & " " & pPerson.LastName
End Function
End Module
De esta forma si creamos una instancia persona podremos llamar a la función GetFullName a pesar de que esta está en otra clase físicamente.
Dim Persona as lPersona = new Persona() lPersona.Name= "FranVarVil" lPersona.LastName = "Blog" Console.WriteLine(lPersona.GetFullName()) 'Output: FranVarVil Blog
Conclusión
La funcionalidad de extensión nos permite mantener las funciones de una clase unidas, manteniendo la integridad y siguiendo el principio de responsabilidad única. Lo que nos permite separar en capas o subdividir nuestra funcionalidad según el nivel dentro de la arquitectura de nuestro proyecto.
Suscribirse a:
Entradas
(
Atom
)