Uso de Constructores en lugar de Variables Globales

Hola ¿Qué tal?

Bueno… he hablado de la abolición de las variables globales en Visual Basic .NET, sin embargo no profundicé mucho en las maneras o formas de llegar a abolir las variables globales. Pues bien, en esta ocasión hablaremos de constructores, que es un recurso bastante útil en la programación de clases dentro de nuestros proyectos y que además servirán para propagar la información entre distintos objetos.

Primeramente debemos entender qué es un constructor y para qué sirve. Un constructor es un bloque de código, este bloque de código tiene la forma de un método manteniendo dos reglas fundamentales, la primera es que el nombre del constructor para que sea constructor debe ser el mismo que el de la clase que lo contiene en la definición de C# y en Visual Basic se utiliza únicamente la definición Sub New, esto es, que en C# el constructor de la clase se llamará tal como la clase y en Visual Basic solo se utilizará Sub New, la segunda regla es que la declaración carece de tipo, ya que el constructor como tal construye un tipo (la clase es un tipo) entonces pues no tendrá tipo, bien, pues no debemos olvidar los paréntesis aunque no tenga parámetros.

Los constructores se asemejan a un método pero sin tipo de retorno, y al igual que los métodos, pueden contener parámetros definidos en la declaración entre paréntesis y también pueden ser sobrecargados, así es, un constructor puede tener más de una firma de definición por clase, obviamente que sigue las reglas de sobrecarga para la cuestión de las firmas.

Los constructores son el primer bloque de código que se ejecuta de una clase, este código se ejecuta justo en el momento de instanciar al objeto, esto es, se ejecuta cuando se está utilizando “new”. Como tal, “new” crea la instancia y lanza la ejecución del código del constructor de la clase, el cual realizará las tareas necesarias para inicializar la clase a la que pertenece. La única manera de tener acceso a la funcionalidad de un constructor es mediante la instrucción “new”. La manera de acceder a cada una de las sobrecargas del constructor es al momento de crear la instancia, por ejemplo:

Para VB.NET

Dim frm As Form1
frm = New Form1() 

Para C#

DataTable dt;
dt = new DataTable(“TablaClientes”); 

Bueno, en estos ejemplos vemos como al utilizar new para instanciar la clase en un objeto, o sea en la variable, se utiliza el nombre de la clase con paréntesis, también, como se nota en el segundo ejemplo; estoy utilizando un parámetro para inicializar la clase DataTable en la variable dt.

Bien, para que nuestras clases puedan hacer uso de las ventajas de los constructores solo bastará con declarar estos dentro de la clase. En Visual Basic es sencillo y no se rige como en el caso de C#, veamos cómo es la declaración de un constructor en Visual Basic:

VB.NET

Public Sub New() 

End Sub


C#

public Form1()
{ 

}


Simple, ¿no lo creen? Bueno, pues así de simple y más aún, se pueden extender los constructores de clases ya formadas, por ejemplo, los formularios, y es que es ahí donde toma sentido el uso de un constructor para pasar variables a un formulario sin necesidad de utilizar las variables globales, bien, un formulario define un constructor sin parámetros, mismo que se toma como predeterminado, pero, si nosotros quisiéramos obligar a un formulario a iniciarse con cierto valor, podríamos reemplazar ese constructor por otro con un parámetro, esto es, bastaría con agregar un parámetro de entrada al constructor para obligar a pasar un valor al momento de construir el formulario, algo como esto:

Public Sub New(ByVal Id As Integer)       

    ‘ This call is required by the Windows Form Designer.
       
    InitializeComponent()
        
    ‘ Add any initialization after the InitializeComponent() call.
 

End Sub

Si este es el único constructor dentro del formulario, entonces la única manera de inicializarlo sería de la siguiente manera:

Dim frm As Form1

frm = New Form1(3)

Ahora bien, el valor que paso por el parametro del constructor puedo almacenarlo en un campo privado de la clase, esto es, una variable a nivel de clase declarada como privada para tenerla disponible en todo el formulario. Digamos que podría ser así:

Private mId As Integer
Public Sub New(ByVal Id As Integer)      
    ‘ This call is required by the Windows Form Designer.
      
    InitializeComponent()
      
   
mId = Id
 

End Sub

Pues con esto ya tendremos el valor de entrada almacenado en una variable local disponible para toda la clase, de esta manera es como se pueden propagar los valores de una clase a otra y puede ser opcional o puede ser obligatorio, eso dependerá de la naturaleza de cada clase.

Con esto espero que tengan un recurso útil para propagar la información en su aplicación sin depender del uso de variables globales, así entonces, las clases podrán ser más independientes y ser extensibles sin depender de valores que no se encuentran en su propia definición.

Espero que haya sido de utilidad.

Saludos…

Octavio Telis

5 thoughts on “Uso de Constructores en lugar de Variables Globales”

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>