Noticias

* Completa este formulario para conocer los temas de tu interes, te tomará unos segundos.

* Contenido actualizado diariamente!!

* Nueva categoría JavaScript!, aprender javascript está en tus manos!

* Nueva categoría VB .Net!, aprender VB .NET fácilmente con franvarvil!

* Sigue a la página para seguir creciendo!!
Mostrando entradas con la etiqueta class. Mostrar todas las entradas

domingo, 3 de mayo de 2020

VB.Net: Sentencia Using y 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.

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

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:

    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

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:
  • 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.