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

Ir abajo

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

Mensaje  Admin el Lun Sep 26, 2011 8:43 am

Como sabemos, la clase Queue que viene en el Framework de Microsoft no implementa las propiedades o métodos IsEmpty, IsFull e IsNormal; aquí tenemos una derivación (subclase) que toma como base la clase del Framework e incorpora dicho comportamiento.
Código:
Código:

using System;

namespace DemoCola3
{
  /// <summary>
  /// Implementación de Lista de cola almacenada en secuencia
  /// </summary>
  public class Queue <ELEMENT> : System.Collections.Generic.Queue<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
    /// Invoca el constructor de la clase base
    /// </summary>
    public Queue()
      : 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 Queue(int size)
      : base(size)
    { }

    #endregion

    #region Propiedades

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

    /// <summary>
    /// Determina si la cola (Queue) está llena
    /// La implementación del Framework nunca se llena
    /// </summary>
    public bool IsFull
    {
      get
      {
        return false;
      }
    }

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

    #endregion

  }
}

ADVERTENCIA: Para utilizar esta implementacion hay que tener cuidado que el "namespace" sea el mismo tanto en esta clase como en la aplicación donde se la desea utilizar; caso contrario el compilador intentará utilizar la clase base que se encuentra en el namespace System.Collections.Generics (que normalmente suele estar referenciado "using" en las aplicaciones)

El diagrama de clase completo (incluso interfaces) es el siguiente:

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.