.NET Chronicles

Temas relacionados con el desarrollo de aplicaciones con .NET

Octavio Telis

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

6 Responses to Uso de Constructores en lugar de Variables Globales

Leave a Reply

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


*

.NET Chronicles
  • Eventos del Teclado en WPF July 22, 2015
      Hola ¿qué tal? En esta ocasión como como continuidad a lo que previamente había escrito sobre los eventos del teclado en Windows Forms, haré un artículo sobre el uso de los eventos del teclado en WPF, así es en Windows Presentation Foundation. No es desconocido por muchos que el nuevo estándar de desarrollo de […]
  • Programación Orientada a Objetos (Introducción) May 14, 2014
    Hola qué tal… Aquí les dejo este video sobre la programación orientada a objetos, a manera de preámbulo a los siguientes videos, con las bases de la programación en C# y otra línea con algunas utilerías. Saludos… Octavio Telis
  • Capítulo piloto del la versión en video de .NET Chronicles May 6, 2014
    Hola qué tal??? Pues en esta ocasión estoy compartiendo con ustedes la liga de un video piloto, con el que pretendo comunicar un poco más sobre las tecnologías .NET y los lenguajes de Programación. En esta ocasión será con la presentación de C#, en un capitulo titulado “Te presento a C#”, espero que sea de […]
  • Validación de datos de entrada con enlace a datos en WPF May 27, 2012
    Tweet Hola, qué tal. Ya que he venido hablando del enlace a datos en WPF en las publicaciones anteriores, bien convendría considerar el uso del Binding para validar datos, hemos tocado ya algunos puntos necesarios para escribir esta funcionalidad. En las publicaciones anteriores vimos ya como enlazar los datos, además, cómo convertir los datos, ahora, […]
  • Uso de la propiedad Visibility con valores booleanos en WPF May 25, 2012
    Tweet    Hola que tal. En esta ocasión quiero compartir con ustedes una manera para utilizar la propiedad Visibility con un valor bool. Te preguntarás “¿Y qué sentido tiene eso?”, bien, el detalles está en que en ocasiones se requiere que la visibilidad de un control de la interfaz de usuario responda a un valor […]
  • Conversión de Valores con Enlace a Datos May 24, 2012
    Tweet     Hola que tal. En el diseño de aplicaciones con WPF tendremos muchas ventajas en cuanto a la interfaz de usuario se refiere, dado que es un modelo muy flexible, nos permite dar formato y estilo a la apariencia de la interfaz de usuario, logrando aplicaciones más agradables, vistosas y que mejoran por mucho […]
  • Mostrar archivos de imagen en WPF utilizando enlace a datos. May 23, 2012
    Tweet Holal Qué tal. Continuando con el ejemplo del post anterior (http://bit.ly/oh0m9k), referente al manejo de imágenes en WPF, ejemplificaremos el manejo de las imágenes de la misma manera pero, esta vez, utilizando enlace a datos y la clase Binding. Antes, tenemos que hablar un poco de lo que es el enlace a datos con […]
  • Mostrar archivos de imagen en WPF August 26, 2011
    Hola Qué Tal… En esta ocasión quiero comenzar una serie de artículos sobre el manejo de archivos de imágenes con .NET. En esta primera parte voy a tratar la manera de cargar un archivo de imagen en un contenedor de imagen, en este caso usaré WPF y el control Image que viene incluido en el […]
  • Comparar dos DataTables según sus DataRows August 23, 2011
    Hola que tal. En ocasiones es necesario comparar el contenido de dos DataTable para determinar qué registros (DataRow) están en una y en otra no. Supongamos tenemos dos DataTable; dt1 y dt2, ambas con el mismo esquema. La tabla dt2 contiene más registros que la taba dt1, por lo que deseamos saber qué registros de […]
  • Arquitectura – Definición de un Data Access Component (con un ejemplo) Parte 3 May 14, 2010
    Hola Qué Tal? En esta ocasión, no he dejado pasar tanto tiempo para terminar la trilogía del uso de Data Access Component con un ejemplo. Bien, pues en este artículo veremos el uso del componente ya creado, cómo extenderemos la funcionalidad del componente y cómo lo aplicamos en la interfaz de usuario. Primeramente, debemos crear […]