CÓMO: Definir y utilizar propiedades en Visual C# .NET

Resumen

En este artículo paso a paso se describe cómo definir y utilizar propiedades en una aplicación de Visual C# .NET.


Un objetivo importante de muchos lenguajes de programación orientados a objetos es permitirle encapsular los detalles internos en una clase. Visual C# .NET le permite definir propiedades para proporcionar acceso controlado a los detalles internos de una clase.


Una propiedad puede ser de sólo lectura, de sólo escritura o de lectura y escritura. Los descriptores de acceso get y set proporcionan acceso de lectura y de escritura, respectivamente. Debe agregar código a estos descriptores de acceso para proporcionar la funcionalidad adecuada para obtener o configurar la propiedad.


En este artículo creará una clase llamada Employee y definirá una propiedad de lectura y escritura para el nombre del empleado. También definirá una propiedad para leer el sueldo del empleado y otra para calcular el tiempo que lleva trabajando el empleado en la compañía. Después creará un objeto Employee en la aplicación y utilizará sus propiedades.


Requisitos

Los elementos siguientes describen el hardware, el software, la infraestructura de red, las capacidades y el conocimiento, y los Service Pack que se necesitan:
  • Sintaxis de Visual C# .NET
  • Conceptos orientados a objetos
  • Estar familiarizado con Visual Studio .NET

Crear una aplicación que contiene una clase de Visual C# .NET

  1. Inicie Visual Studio .NET y cree un nuevo proyecto de aplicación de consola de C# llamado EmployeeProperties.
  2. En la vista de clases, haga clic con el botón secundario del mouse (ratón) en el proyecto EmployeeProperties, haga clic en Agregar y, después, haga clic en Agregar clase.
  3. En el Asistente para agregar clases de C#, configure el nombre de clase como Employee y haga clic en Abrir.
  4. Muestre el código de la nueva clase en la ventana Ver código.

Definir campos, constructores y métodos

  1. En la vista de clases, expanda el proyecto EmployeeProperties y el espacio de nombres EmployeeProperties. Haga clic con el botón secundario del mouse (ratón) en la clase Employee, haga clic en Agregar y, después, haga clic en Agregar campo.
  2. Configure el Acceso al campo como privado, el Tipo de campo como string y escriba
    name
    en Nombre de campo. Haga clic en Finalizar. Esto agrega el siguiente campo a la clase:
    private string name;
  3. Repita los pasos 1 y 2 (o escriba el código manualmente) para agregar otros dos campos de la siguiente forma:
    private decimal salary;
    private DateTime hireDate;
  4. Modifique el constructor de la clase para inicializar los campos de la clase Employee de la manera siguiente:
    public Employee(string name, decimal salary, DateTime hireDate)
    {
    this.name = name;
    this.salary = salary;
    this.hireDate = hireDate;
    }
  5. En la vista de clases, haga clic con el botón secundario del mouse (ratón) en la clase Employee, haga clic en Agregar y, después, haga clic en Agregar método.
  6. Configure el Acceso al método como public y el Tipo de valor devuelto como void, y escriba
    PayRise
    en Nombre de método. Agregue un parámetro decimal llamado amount y haga clic en Finalizar. Esto agrega el siguiente método a la clase:
    public void PayRise(decimal amount)
    {
    }
  7. Defina el cuerpo del método del siguiente modo:
    public void PayRise(decimal amount)
    {
    this.salary += amount;
    }

Definir propiedades de lectura y escritura

  1. En la vista de clases, haga clic con el botón secundario del mouse (ratón) en la clase Employee, haga clic en Agregar y, después, haga clic en Agregar propiedad.
  2. Configure el Acceso a la propiedad como public y el Tipo de propiedad como string, y escriba
    FullName
    en Nombre de propiedad. Haga clic en el botón de opción Obtener/Establecer y, después, haga clic en Finalizar. Esto agrega la siguiente propiedad a la clase:
    public string FullName
    {
    get
    {
    return null;
    }
    set
    {
    }
    }
  3. Modifique la propiedad como sigue:
    public string FullName
    {
    get
    {
    return this.name;
    }
    set
    {
    this.name = value;
    }
    }
    El descriptor de acceso get devuelve el nombre del empleado. El descriptor de acceso set establece el nombre del empleado utilizando el parámetro implícito value que se pasa automáticamente en el descriptor de acceso set.

Definir propiedades de sólo lectura

  1. En la vista de clases, haga clic con el botón secundario del mouse (ratón) en la clase Employee, haga clic en Agregar y, después, haga clic en Agregar propiedad.
  2. Configure el Acceso a la propiedad como public y el Tipo de propiedad como decimal, y escriba
    Remuneration
    en Nombre de propiedad. Haga clic en el botón de opción Obtener y, después, haga clic en Finalizar. Esto agregará la siguiente propiedad de sólo lectura a la clase:
    public decimal Remuneration
    {
    get
    {
    return 0;
    }
    }
  3. Modifique la propiedad como sigue:
    public decimal Remuneration
    {
    get
    {
    return this.salary;
    }
    }
    El descriptor de acceso get devuelve el sueldo del empleado. No hay ningún descriptor de acceso set porque el sueldo no se puede modificar directamente. La única forma de cambiar el sueldo es llamar al método PayRise.


  4. El descriptor de acceso Repita los pasos 1 a 3 (o escriba el código manualmente) para agregar otro descriptor de acceso get. Este descriptor de acceso get debe tener el nombre DaysSinceJoined, acceso public y utilizar un tipo int.
  5. El descriptor de acceso Codifique el cuerpo del descriptor de acceso get de la manera siguiente:
    public int DaysSinceJoined
    {
    get
    {
    TimeSpan timespan = DateTime.Now - this.hireDate;
    return timespan.Days;
    }
    }
    El descriptor de acceso get calcula cuántos días ha trabajado el empleado para la compañía.

Crear un objeto y utilizar las propiedades

  1. Muestre el código de Class1.cs en la ventana Ver código.
  2. En el método Main, cree un objeto Employee mediante el operador new. Asigne la referencia de objeto a una variable local Employee del siguiente modo:
    Employee worker = new Employee( "Jayne Doe", 
    125000,
    new DateTime(1998, 7, 31) );
  3. Agregue el código siguiente para cambiar la propiedad FullName del empleado:
    worker.FullName = "Jayne Lafayette";
    Esto invoca implícitamente el descriptor de acceso
    set para la propiedad FullName.


  4. Esto invoca implícitamente el descriptor de acceso Agregue las instrucciones siguientes para mostrar los detalles del empleado mediante los descriptores de acceso get para las propiedades FullName, Remuneration y DaysSinceJoined:
    Console.WriteLine("Nombre completo: " + worker.FullName);
    Console.WriteLine("Remuneración: " + worker.Remuneration);
    Console.WriteLine("Días trabajados: " + worker.DaysSinceJoined);

Comprobar que la aplicación funciona

  1. Genere y ejecute la aplicación. La aplicación mostrará la siguiente información en la consola (el valor Días trabajados depende de la fecha actual):


    Nombre completo: Jayne Lafayette
    Remuneración: 125000
    Días trabajados: 1140
  2. La aplicación mostrará la siguiente información en la consola (el valor Vuelva al archivo Class1.cs en la ventana Ver código y agregue el código siguiente en la parte inferior del método Main:
    worker.Remuneration = 1000000;
  3. La aplicación mostrará la siguiente información en la consola (el valor Pruebe a generar la aplicación. Aparecerá un error de compilación porque no hay ningún descriptor de acceso set para la propiedad Remuneration. Esto significa que Remuneration es una propiedad de sólo lectura.
  4. La aplicación mostrará la siguiente información en la consola (el valor Cambie la instrucción de la manera siguiente:
    worker.salary = 1000000;
  5. La aplicación mostrará la siguiente información en la consola (el valor Pruebe a generar de nuevo la aplicación. Aparecerá otro error de compilación porque el campo salary es privado. La única forma de modificar el sueldo del empleado es utilizar el método público PayRise.








Propiedades

Id. de artículo: 308229 - Última revisión: 23 ene. 2002 - Revisión: 1

Comentarios