Created
May 10, 2014 01:40
-
-
Save Fhernd/62c74cf55dfdc3d9ce02 to your computer and use it in GitHub Desktop.
Demostración de la creación de tipos genéricos en C#.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ===++=== | |
// | |
// OrtizOL | |
// | |
// ===--=== | |
/*============================================================ | |
// | |
// Clase: Bolsa.cs | |
// | |
// Propósito: Demostración de una estructura de datos | |
// genérica. | |
// | |
============================================================*/ | |
using System; | |
using System.Collections.Generic; | |
namespace Recetas.Cap02 | |
{ | |
///<summary> | |
/// Representa una estructura de datos genérica para 'guardar' objetos. | |
///</summary> | |
internal class Bolsa<T> | |
{ | |
// Lista contenedora de los elementos de la bolsa | |
private List<T> elementos = new List<T>(); | |
///<summary> | |
/// Agrega un elemento a la bolsa. | |
///</summary> | |
///<param value="elemento">Elemento a agregar a la bolsa</param> | |
public void Agregar(T elemento) | |
{ | |
elementos.Add(elemento); | |
} | |
///<summary> | |
/// Extrae un elemento de la bolsa de forma aleatoria. | |
///</summary> | |
///<return>Retorna el elemento extraído de la lista.</return> | |
public T Extraer() | |
{ | |
T elemento = default(T); | |
if (elementos.Count != 0) | |
{ | |
// Aquí se determina el elemento a extraer de la bolsa | |
// Esto se realiza de forma aleatoria: | |
Random generadorAleatorio = new Random(); | |
int numeroAleatorio = generadorAleatorio.Next(0, elementos.Count); | |
// Extrae el elemento | |
elemento = elementos[numeroAleatorio]; | |
elementos.RemoveAt(numeroAleatorio); | |
} | |
return elemento; | |
} | |
///<summary> | |
/// Retorna un enumerador con los elementos de la bolsa. | |
///</summary> | |
///<return>Objeto IEnumerator con los elementos.</return> | |
public IEnumerator<T> GetEnumerator() | |
{ | |
return elementos.GetEnumerator(); | |
} | |
///<summary> | |
/// Elimina todo el contenido de la bolsa | |
///</summary> | |
///<return>Arreglo de tipo T con todos los elementos eliminados</return> | |
public T[] ExtraerTodo() | |
{ | |
// Genera arreglo con todos los elementos de la bolsa: | |
T[] contenido = elementos.ToArray(); | |
// Se deshace de todos los elementos de la lista `elementos`: | |
elementos.Clear(); | |
return contenido; | |
} | |
} | |
internal class PruebaBolsa | |
{ | |
///<summary> | |
/// Punto de entrada a la aplicación. | |
///</summary> | |
public static void Main() | |
{ | |
// Aquí se crea la bolsa con objetos string: | |
Bolsa<string> bolsa = new Bolsa<string>(); | |
// Agregación de elementos (cadenas de caracteres) a la bolsa: | |
bolsa.Agregar("DotNET"); | |
bolsa.Agregar("Microsoft"); | |
bolsa.Agregar("C#"); | |
bolsa.Agregar("Language"); | |
bolsa.Agregar("CLR"); | |
bolsa.Agregar("Framework"); | |
// Descrubre el contenido de la bolsa: | |
Console.WriteLine("Contenido de la bolsa:"); | |
foreach(string elemento in bolsa) | |
{ | |
Console.WriteLine("Elemento: {0}", elemento); | |
} | |
// Extracción de tres elementos de la bolsa: | |
Console.WriteLine("\nExtracción de elementos:"); | |
Console.WriteLine("Elemento removido: {0}", bolsa.Extraer()); | |
Console.WriteLine("Elemento removido: {0}", bolsa.Extraer()); | |
Console.WriteLine("Elemento removido: {0}", bolsa.Extraer()); | |
// Descrube el contenido actual de la bolsa: | |
Console.WriteLine("\nContenido actual de la bolsa:"); | |
foreach(string elemento in bolsa) | |
{ | |
Console.WriteLine("Elemento: {0}", elemento); | |
} | |
// Extracción de todo el contenido de la bolsa: | |
Console.WriteLine("\nRemoviendo todos los elementos de la bolsa:"); | |
string[] elementos = bolsa.ExtraerTodo(); | |
// Descrube el contenido actual de la bolsa: | |
Console.WriteLine("\nContenido actual de la bolsa:"); | |
foreach(string elemento in bolsa) | |
{ | |
Console.WriteLine("Elemento: {0}", elemento); | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment