En lenguajes de programación orientada a objetos, como C++, C#, Visual Basic .NET y demases, es común utilizar una variable presente en todas las clases: el puntero this.

Este puntero (no confundir explícitamente con los punteros de C/C++; se debe interpretar mas bien como el “apuntador a”) hace referencia a la clase en si misma. Entender su funcionamiento es bastante simple, y en código se hace más evidente.

static public int sumardos(int valor)
{
    return valor + 2;
}

Hasta aquí nada muy nuevo. Una función sumardos que retorna un entero, que es un valor que se le entrega a esta función y se le suman dos unidades. Ahora, démosle contexto a este método (recordemos que en la jerga informática, función es una rutina que devuelve o no un valor. Un Método es una propiedad de los objetos que realiza una operación con el objeto o relativo a él).

public class operaciones{
    private int valor;

    public operaciones()
    {
      valor = 1;
    }

    static public int sumardos(int valor)
    {
      return valor + 2;
    }
}

Ahora, podemos apreciar que la clase también tiene un atributo (de nuevo, en la jerga informática, una variable es un elemento en el cual podemos almacenar datos, un atributo es una propiedad de los objetos relativos a estos) llamado valor.

Veamos como funciona el asunto.

operaciones obj = new operaciones();
Console.WriteLine("3 + 2 = " + obj.sumardos(3));

La consola imprime esto:

3 + 2 = 5

No hay problema. Se imprime el valor esperado, pero eso plantearía otra pregunta, ¿y como imprimo y/o utilizo el atributo valor y no solamente el parámetro valor dado al método?

Como se puede suponer, la solución y el objetivo de esta entrada es simplemente, referenciar a la misma clase (u objeto, según como se mire), con el puntero this.

public class operaciones{
    private int valor;

    public operaciones()
    {
      valor = 1;
    }

    static public int sumardos(int valor)
    {
      return this.valor + 2;
    }
}

Lo que, bajo la misma impresión dada anteriormente imprimirá:

3 + 2 = 3

Esto ocurre ya que ahora no tomo al parámetro valor, si no que al atributo valor, cuyo valor es 1.

Una de las buenas practicas de los lenguajes OOP cuando los programas comienzan a ser muy grandes, y trabajados entre varias personas, es la correcta utilización del puntero this donde corresponda; pues nadie sabe cuando un tercero podrá agregar atributos o parámetros con los mismos valores ya existentes en el ámbito privado o local, que harán que la aplicación deje de funcionar correctamente.

Notar que los nombres de variables repetidos no son marcados ni como advertencia ni como error, pues están en ámbitos diferentes.

3 thoughts on “Uso practico del puntero this en la POO

  1. Es muy útil, sobretodo cuando tienes que trabajar con objetos anidados y que a veces, solo son interfaces y no puedes ver la implementación de otros métodos que pueden ser injertados ahí mismo.

    Hice esta entrada porque muchos, pese a que lo conocen, no saben que hace a ciencia cierta y lo usan “porque sí”.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *