gentoo linux, java, software libre y otras hierbas
Nov, 22 2008 - 10:56 am

Uso de propiedades para acceder a los atributos de objetos en C#

Al momento de acceder a los atributos de una clase, podemos usar métodos para asignar y obtener dichos datos (normalmente llamados getters y setters). En C Sharp podemos usar una caracterí­stica llamada ‘propiedades’, por medio de la cual declaramos un alias de acceso público para los atributos de acceso privado.

Me explico. Cuando declaramos atributos en una clase, lo más aconsejable es crearlos con el modificador de acceso private. Por tal motivo no es posible acceder a dichos atributos directamente desde el objeto (de la manera: objeto.atributo), porque como vimos en esta entrada nos arrojará errores de compilación.

Aquí­ es cuando las ‘propiedades’ son especialmente útiles. Una propiedad es como un alias que nos permite acceder a los atributos de manera segura, y con la que nos ahorramos tiempo y espacio en nuestro código. Vamos directamente con un ejemplo, y posteriormente una breve explicación del mismo.

Clase de ejemplo, que implementa una ‘propiedad’ para acceder al atributo:

public class Clase {
	//atributo
	private int variable;
	//constructor
	public Clase(int variable) {
		this.variable = variable;
	}
	//declaracion de la propiedad
	public int atributo{
		//get sirve para devolver el valor del atributo
		get{
			return variable;
		}
		//set sirve para cambiar el valor del atributo
		set{
			variable = value;
		}
	}
}

En la lí­nea 9 tenemos la declaración de la propiedad; en dicha declaración debemos especificar un nombre (diferente al del atributo al que vamos a acceder), y un tipo (en este caso int, entero). Dentro de la propiedad tenemos dos bloques: get y set. Dentro de get debemos poner los valores a retornar cuando se acceda a la propiedad; mientras que en set podemos usar la palabra clave value para asignar un valor al atributo.

En la siguiente clase se utiliza la propiedad de la clase anterior, para obtener y modificar los valores del atributo:

using System;
public class Propiedades {
	public Propiedades() {
		//declaracion del objeto
		Clase objeto = new Clase(5);
		//obteniendo el valor de la variable 'variable'
		//usando la propiedad 'atributo' (se usa el bloque get)
		Console.WriteLine("El atributo del objeto es "+ objeto.atributo);
		Console.WriteLine("Cambiando el valor usando la propiedad 'atributo'...");
		//cambiando el valor de la variable 'variable'
		//usando la propiedad 'atributo' (se usa get)
		objeto.atributo = 10;
		Console.WriteLine("Ahora el atributo del objeto es "+ objeto.atributo);
	}
	static void Main(string[] args){
		new Propiedades();
	}
}

Como puedes observar, es posible obtener y modificar los datos de un atributo privado usando una ‘propiedad’ pública, y todo de una manera totalmente segura, puesto que dentro de la ‘propiedad’ podemos verificar la consistencia de los datos.

El resultado…

El atributo del objeto es 5
Cambiando el valor usando la propiedad ‘atributo’…
Ahora el atributo del objeto es 10

Descargar código fuente

Los ejercicios utilizados en este post están basados en ejemplos del libro C# How to Program de Deitel. Se pone a disposición la descargar del programa original, desarrollado para trabajar sobre Visual Studio de Microsoft en plataformas Windows, y se encuentra en inglés. La versión simplificada está basada en la original, pero sin código basura insertado por Visual Studio, se encuentra en español y ha sido probada sobre Gnu/Linux usando Mono.

6 Comentarios | deja el tuyo

Un enlace entrante

5 Comentarios en “Uso de propiedades para acceder a los atributos de objetos en C#”

  1. Reoba dice:

    Amigo, sabes programar en Prolog (Programacion Logica) ?

    etiendoEsto(X):- seProlog(X).
    seProlog(‘Si’).
    seProlog(‘No’).

  2. Sten dice:

    Gracias por el atributo me servira de mucho en realidad se nota q tenes una logiga de programador my buena,de nuevo gracias.

  3. bohorkez dice:

    Creo que las propiedades a diferencia de las variables deben ir siempre con la primera letra en mayúsculas…

    public int Atributo {
    //….
    }

    Gracias por el tutorial…

¡Déjanos tu comentario!