EdD - Clase Stack (subclase de la que viene en el Framework de Microsoft)

Ir abajo

EdD - Clase Stack (subclase de la que viene en el Framework de Microsoft)

Mensaje  Admin el Dom Sep 25, 2011 1:33 pm

Como ya se vió en los ejercicios, la clase Stack que viene en el Framework de Microsoft no tiene las propiedades IsEmpty, IsFull y IsNormal; pues bién aquí tienen una subclase (derivada de la que está en el Framework) que agrega ese comportamiento.

Implementación (derivación)
Código:

using System;

namespace DemoPila4
{
  /// <summary>
  /// Implementación de Lista de pila almacenada en secuencia
  /// Se utiliza como clase base la que proporciona el Framework de Microsoft
  /// La idea es implementar las propiedades IsEmpty, IsFull, IsNormal
  /// </summary>
  public class Stack <ELEMENT> : System.Collections.Generic.Stack<ELEMENT>
  {
    #region Estructura Interna

    /// <summary>
    /// Tamaño por defecto del contenedor
    /// </summary>
    private static readonly int DEFAULT_SIZE = 10;

    #endregion

    #region Constructores
      /// <summary>
    /// Constructor por defecto
    /// Nos aseguramos que el contenedor sea válido
    /// Invocamos el constructor de la clase base
    /// </summary>
    public Stack()
      : base(DEFAULT_SIZE)
    { }

    /// <summary>
    /// Constructor especializado
    /// <precondition>
    /// El tamaño debe ser mayor que cero
    /// </precondition>
    /// </summary>
    /// <param name="size">Tamaño del contenedor</param>
    public Stack(int size)
      : base(size)
    { }

    #endregion

    #region Propiedades

    /// <summary>
    /// Determina si la pila (Stack) está vacía
    /// </summary>
    public bool IsEmpty
    {
      get
      {
        return this.Count <= 0;
      }
    }

    /// <summary>
    /// Determina si la pila (Stack) está llena
    /// La implementación del Framework de Microsoft
    /// nunca se llena (a menos que no haya memoria)
    /// de manera que esta propiedad siempre es falsa
    /// </summary>
    public bool IsFull
    {
      get
      {
        return false;
      }
    }

    /// <summary>
    /// Determina si la pila (Stack) está normal
    /// </summary>
    public bool IsNormal
    {
      get
      {
        return !(this.IsEmpty || this.IsFull);
      }
    }

    #endregion

  }
}
Observe que lo único que se hace es agregar las propiedades que necesitamos y por supuesto hay que codificar los constructores (estos no se heredan)

El diagrama de clase completo es el siguiente:

Como pueden ver, nuestra clase Stack<T> es una subclase de la clase System.Collection.Generics.Stack<T>
En el diagrama también se muestran las interfaces (contratos de comportamiento) que la clase del Framework implementa (esto es tema de las próximas teorías)
avatar
Admin
Admin

Cantidad de envíos : 94
Fecha de inscripción : 28/08/2009

http://www.jtentor.com.ar

Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.