Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
[Tutoriales] C#~Propiedades [Novato]
#1
Tutorial de propiedades
Visual Studio .NET 2003
Este tutorial muestra cómo las propiedades son una parte integrante del lenguaje de programación C#. Se explica cómo se declaran y utilizan las propiedades.

Archivos de ejemplo

Vea Ejemplo de propiedades para descargar y generar los archivos de ejemplo que se utilizan en este tutorial.

Información adicional

Propiedades
Comparación entre propiedades e indizadores
10.6 Propiedades
Tutorial

Este tutorial incluye dos ejemplos. El primer ejemplo muestra cómo declarar y utilizar las propiedades de lectura y escritura. El segundo ejemplo ilustra las propiedades abstractas y muestra cómo reemplazar estas propiedades en subclases.

Ejemplo 1

Este ejemplo muestra una clase Person con dos propiedades: Name (cadena) y Age (entero). Ambas propiedades son de lectura y escritura.

// person.cs
using System;
class Person
{
private string myName ="N/A";
private int myAge = 0;

// Declare a Name property of type string:
public string Name
{
get
{
return myName;
}
set
{
myName = value;
}
}

// Declare an Age property of type int:
public int Age
{
get
{
return myAge;
}
set
{
myAge = value;
}
}

public override string ToString()
{
return "Name = " + Name + ", Age = " + Age;
}

public static void Main()
{
Console.WriteLine("Simple Properties");

// Create a new Person object:
Person person = new Person();

// Print out the name and the age associated with the person:
Console.WriteLine("Person details - {0}", person);

// Set some values on the person object:
person.Name = "Joe";
person.Age = 99;
Console.WriteLine("Person details - {0}", person);

// Increment the Age property:
person.Age += 1;
Console.WriteLine("Person details - {0}", person);
}
}
Resultado

Simple Properties
Person details - Name = N/A, Age = 0
Person details - Name = Joe, Age = 99
Person details - Name = Joe, Age = 100
Descripción del código

Observe la forma en que se declaran las propiedades; por ejemplo, considere la propiedad Name:
public string Name
{
get
{
return myName;
}
set
{
myName = value;
}
}
Los métodos Set y Get de una propiedad están contenidos dentro de la declaración de propiedad. Se puede controlar si una propiedad es de lectura y escritura, de sólo lectura o de sólo escritura según el método, Get o Set, que se incluya.

Una vez declaradas las propiedades, se pueden utilizar como si fueran campos de la clase. Esto permite una sintaxis muy natural, tanto para obtener como para establecer el valor de una propiedad, como se muestra en las siguientes instrucciones:
person.Name = "Joe";
person.Age = 99;
Observe que, en un método Set de una propiedad, se dispone de una variable especial value. Esta variable contiene el valor especificado por el usuario, por ejemplo:
myName = value;
Observe la sintaxis tan simple que se utiliza para incrementar la propiedad Age de un objeto Person:
person.Age += 1;
Si se utilizaron métodos Set y Get independientes para modelar las propiedades, el código equivalente tendría el siguiente aspecto:

person.SetAge(person.GetAge() + 1);
En el siguiente ejemplo, el método ToString se reemplaza:
public override string ToString()
{
return "Name = " + Name + ", Age = " + Age;
}
Observe que ToString no se utiliza explícitamente en el programa. Se invoca de forma predeterminada mediante las llamadas WriteLine.

Ejemplo 2

En el ejemplo siguiente, se muestra cómo definir propiedades abstractas. Una declaración de propiedad abstracta no proporciona una implementación de los descriptores de acceso a la propiedad. El ejemplo muestra cómo reemplazar estas propiedades en subclases.

Este ejemplo consta de tres archivos: En el Ejemplo Properties, estos archivos se compilan de una sola vez, pero en este tutorial, cada archivo se compila individualmente y se hace referencia al ensamblado resultante mediante la siguiente compilación:

abstractshape.cs: la clase Shape que contiene una propiedad abstracta Area.
shapes.cs: las subclases de la clase Shape.
shapetest.cs: un programa de prueba que muestra en pantalla las áreas de algunos objetos derivados de Shape.
Para compilar el ejemplo, utilice la línea de comandos:

csc abstractshape.cs shapes.cs shapetest.cs
De esta forma, se creará el archivo ejecutable shapetest.exe.

Archivo 1 - abstractshape.cs

Este archivo declara la clase Shape que contiene la propiedad Area del tipo double

// abstractshape.cs
// compile with: /target:library
// csc /target:library abstractshape.cs
using System;

public abstract class Shape
{
private string myId;

public Shape(string s)
{
Id = s; // calling the set accessor of the Id property
}

public string Id
{
get
{
return myId;
}

set
{
myId = value;
}
}

// Area is a read-only property - only a get accessor is needed:
public abstract double Area
{
get;
}

public override string ToString()
{
return Id + " Area = " + string.Format("{0:F2}",Area);
}
}
Descripción del código

Los modificadores de la propiedad se colocan en la propia declaración de propiedad, por ejemplo:
public abstract double Area
Cuando se declara una propiedad abstracta (tal como Area en este ejemplo), simplemente se indica qué descriptores de acceso a la propiedad están disponibles, pero no se implementan. En este ejemplo, sólo se dispone de un descriptor de acceso Get, de modo que la propiedad es de sólo lectura.
Archivo 2 - shapes.cs

El siguiente código muestra tres subclases de Shape y cómo reemplazan la propiedad Area para proporcionar sus propias implementaciones.

// shapes.cs
// compile with: /target:library /reference:abstractshape.dll
public class Square : Shape
{
private int mySide;

public Square(int side, string id) : base(id)
{
mySide = side;
}

public override double Area
{
get
{
// Given the side, return the area of a square:
return mySide * mySide;
}
}
}

public class Circle : Shape
{
private int myRadius;

public Circle(int radius, string id) : base(id)
{
myRadius = radius;
}

public override double Area
{
get
{
// Given the radius, return the area of a circle:
return myRadius * myRadius * System.Math.PI;
}
}
}

public class Rectangle : Shape
{
private int myWidth;
private int myHeight;

public Rectangle(int width, int height, string id) : base(id)
{
myWidth = width;
myHeight = height;
}

public override double Area
{
get
{
// Given the width and height, return the area of a rectangle:
return myWidth * myHeight;
}
}
}
Archivo 3 - shapetest.cs

El siguiente código muestra un programa de prueba que crea una serie de objetos derivados de Shape e imprime sus áreas.

// shapetest.cs
// compile with: /reference:abstractshape.dll;shapes.dll
public class TestClass
{
public static void Main()
{
Shape[] shapes =
{
new Square(5, "Square #1"),
new Circle(3, "Circle #1"),
new Rectangle( 4, 5, "Rectangle #1")
};

System.Console.WriteLine("Shapes Collection");
foreach(Shape s in shapes)
{
System.Console.WriteLine(s);
}

}
}
Resultado

Shapes Collection
Square #1 Area = 25.00
Circle #1 Area = 28.27
Rectangle #1 Area = 20.00


Posibles temas similares...
Tema Autor Respuestas Vistas Último mensaje
  7 Mejores Tutoriales de Desarrollo Web para principiantes CarlosAlberto 14 642 19-02-2016, 11:06 PM
Último mensaje: zeuz
  [pedido] tutoriales para aprender css sondeo 10 715 04-01-2016, 01:22 PM
Último mensaje: Taquion
  recomendacion Guias o tutoriales javascript,jquery,php Finer 6 465 13-04-2014, 01:28 AM
Último mensaje: nicolasfidalgo
  Tutoriales Diseño y Programacion Web joseph228 44 2,951 05-11-2012, 05:03 PM
Último mensaje: papi
  Propiedades de las hojas de estilo Finlay 1 408 02-10-2012, 02:21 AM
Último mensaje: AbaddonOrmuz
  Necesito Tutoriales! nicoovg 10 1,064 25-09-2012, 07:24 AM
Último mensaje: licos2909
  :focus :hover Propiedades de CSS Juliens 3 1,255 06-05-2012, 06:09 PM
Último mensaje: variux
  [Tutoriales] C# Métodos condicionales Postteandox 0 601 21-11-2011, 01:24 AM
Último mensaje: Postteandox
  [Tutorial] C# Propiedades Indizadas [Intermedio] Postteandox 0 476 21-11-2011, 01:14 AM
Último mensaje: Postteandox



Usuarios navegando en este tema: 1 invitado(s)