Cómo: Definir propiedades abstractas (Guía de

Cómo: Definir propiedades abstractas (Guía de programación de C#)
Page 1 of 3
©2008 Microsoft Corporation. All rights reserved.
Guía de programación de C#
Cómo: Definir propiedades abstractas (Guía de programación de C#)
En el ejemplo siguiente, se muestra cómo definir propiedades abstractas [ http://msdn.microsoft.com/esco/library/sf985hc5(printer).aspx ] . Una declaración de propiedad abstracta no proporciona una implementación
de descriptores de acceso de la propiedad; por el contrario, declara que la clase acepta propiedades pero deja la
implementación de los descriptores de acceso a las clases derivadas. El ejemplo siguiente muestra cómo
implementar las propiedades abstractas heredadas de una clase base.
Este ejemplo consta de tres archivos, cada uno de los cuales se compila individualmente; la compilación siguiente
hace referencia al ensamblado resultante:
z
abstractshape.cs: la clase Shape que contiene una propiedad Area abstracta.
z
shapes.cs: las subclases de la clase Shape.
z
shapetest.cs: un programa de prueba que muestra en pantalla las áreas de algunos objetos derivados de
Shape.
Para compilar el ejemplo, utilice el comando siguiente:
csc abstractshape.cs shapes.cs shapetest.cs
De esta forma, se creará el archivo ejecutable shapetest.exe.
Ejemplo
Este archivo declara la clase Shape que contiene la propiedad Area del tipo double.
C#
Copiar código
// compile with: csc /target:library abstractshape.cs
public abstract class Shape
{
private string m_id;
public Shape(string s)
{
// calling the set accessor of the Id property.
Id = s;
}
public string Id
{
get
{
return m_id;
}
set
{
m_id = 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);
http://msdn.microsoft.com/es-co/library/yd3z1377(printer).aspx
9/12/2008
Cómo: Definir propiedades abstractas (Guía de programación de C#)
Page 2 of 3
}
}
z
Los modificadores de la propiedad se colocan en la misma declaración de propiedad. Por ejemplo:
Copiar código
public abstract double Area
z
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 [ http://msdn.microsoft.com/es-co/library/ms228503
(printer).aspx ] , de modo que la propiedad es de sólo lectura.
El siguiente código muestra tres subclases de Shape y cómo reemplazan la propiedad Area para proporcionar sus
propias implementaciones.
C#
Copiar código
// compile with: csc /target:library /reference:abstractshape.dll shapes.cs
public class Square : Shape
{
private int m_side;
public Square(int side, string id)
: base(id)
{
m_side = side;
}
public override double Area
{
get
{
// Given the side, return the area of a square:
return m_side * m_side;
}
}
}
public class Circle : Shape
{
private int m_radius;
public Circle(int radius, string id)
: base(id)
{
m_radius = radius;
}
public override double Area
{
get
{
// Given the radius, return the area of a circle:
return m_radius * m_radius * System.Math.PI;
}
}
}
public class Rectangle : Shape
{
private int m_width;
private int m_height;
public Rectangle(int width, int height, string id)
: base(id)
{
m_width = width;
m_height = height;
http://msdn.microsoft.com/es-co/library/yd3z1377(printer).aspx
9/12/2008
Cómo: Definir propiedades abstractas (Guía de programación de C#)
Page 3 of 3
}
public override double Area
{
get
{
// Given the width and height, return the area of a rectangle:
return m_width * m_height;
}
}
}
El siguiente código muestra un programa de prueba que crea una serie de objetos derivados de Shape e imprime
sus áreas.
C#
Copiar código
// compile with: csc /reference:abstractshape.dll;shapes.dll shapetest.cs
class TestClass
{
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);
}
}
}
Copiar código
Shapes Collection
Square #1 Area = 25.00
Circle #1 Area = 28.27
Rectangle #1 Area = 20.00
Vea también
Conceptos
Guía de programación de C# [ http://msdn.microsoft.com/es-co/library/67ef8sbd(printer).aspx ]
Objetos, clases y estructuras (Guía de programación de C#) [ http://msdn.microsoft.com/esco/library/ms173109(printer).aspx ]
Clases y miembros de clase abstractos y sellados (Guía de programación de C#) [ http://msdn.microsoft.com/esco/library/ms173150(printer).aspx ]
Propiedades (Guía de programación de C#) [ http://msdn.microsoft.com/es-co/library/x9fsa0sw(printer).aspx ]
Cómo: Crear y utilizar archivos DLL de C# (Guía de programación de C#) [ http://msdn.microsoft.com/esco/library/3707x96z(printer).aspx ]
Etiquetas:
Contenido de la comunidad
http://msdn.microsoft.com/es-co/library/yd3z1377(printer).aspx
9/12/2008