sábado, 18 de octubre de 2008

Microsoft Student 2 Bussiness



Microsoft encabeza una iniciativa llamada S2B Microsoft Student To Bussiness en la que busca conectar a los estudiantes con sus socios de negocios y asi brindarles una mejor oportunidad de futuro.

jueves, 16 de octubre de 2008

Recolección de Datos

Recolección de Datos
En el trabajo diario de los desarrolladores de software existe la necesidad de manejar mucha información y para cubrir esta necesidad .Net Framework provee una serie de clases especializadas para almacenar y recibir información. Este tipo de clases son conocidas como Colecciones.

Estas clases proveen soporte para manejar las pilas, colas, listas y tablas hash. La mayoría de las clases aplican las mismas interfaces, y estas interfaces pueden ser heredadas para crear nueva colección que se ajusten a las clases más especializadas y necesidades de almacenamiento de datos que se tenga.

Características de las Colecciones:
· Las Colecciones pertenecen al espacio de nombre System.Collections y las colecciones genéricas incluidas en el .NET Framework 2.0, están contenidas en System.Collections.Generic
· La mayoría de las colecciones implementan las interfaces ICollection, IEnumerable, IList, IDictionary and IDictionaryEnumerator y las colecciones genéricas implementan la interfaces genéricas correspondientes.
Las colecciones pueden ser accedidas por índices de la misma manera que se utilizan los arrays.
Lista[0]… Lista[1]…

Otras colecciones permiten que puedan ser accedidas por nombre de los elementos.
Lista[“Name”]… Lista[“Cliente”]…
Listados de Colecciones.


ArrayList

Lista Simple. AutoCrecimiento. Accedida por Indices.

SortedList

Coleccion ordenada accedida por Nombre.

Queue

Lista Fifo – Primero en Entrar Primero en Salir.

Stack

Lista Lifo. Ultimo en entrar Primero en salir.

Hashtable

Lista de tipo Name/Value que puede ser accedida por nombre e índice.
BitArray

Lista compacta de valores Boléanos.

StringCollection

Lista simple de Cadenas de Carecteres (String). Accedida por Indices.

StringDictionary

Lista de tipo Name/Value de objetos de tipo String. puede ser accedida por nombre e índice.

ListDictionary

Lista eficiente para manejar listas pequeñas de objetos.

HybridDictionary

Es una lista inteligente que utiliza ListDictionary cuando la lista es pequeña y se convierte a HashTable cuando la lista crece.

NameValueCollection

Lista de tipo Name/Value de objetos de tipo String. puede ser accedida por nombre e índice.



Utilizando La Clase ArrayList.
La clase ArrayList es sencilla de usar. Es una lista no organizada de objetos de cualquier tipo.
Esta clase soporta 2 metodos de agregar objetos a la lista. A través de Add y AddRange.
Add: Permite Agregar un solo elemento a la lista. Se puede utilizar para agregar cualquier objeto .NET a la lista.
ArrayList ListaDeObjetos = new ArrayList(); //Creo una Lista de Tipo ArrayList

Persona Francis = new Persona(); //Creo un Objeto Persona
ListaDeObjetos.Add(Francis); // Agrego el objeto persona a la lista
ListaDeObjetos.Add(1); // Agrego un Entero.
ListaDeObjetos.Add("HOLA MUNDO"); //Agrego una Cadena de Carecteres.
ListaDeObjetos.Add(true); //Agrego un Boleano.
AddRange permite agregar mas de un elemento a la lista. Solo debemos declarar un arreglos de objectos o cualquier lista que implemente la collecion ICollection.
string[] Nombres = { "Evelin Guerra", "Lina Paola", "Camilo Nuñez" }; //Array de String
ListaDeObjetos.AddRange(Nombres);

Estos métodos permiten agregar elementos a la lista, pero los agregan al final de la lista. Si necesitamos incluir un elemento en una posición determinada debemos utilizar los métodos Insert e InsertRange.

ListaDeObjetos.Insert(1, "HOLA a Todos"); // Inserta un String en la posición 1(segundo lugar de la lista).
ListaDeObjetos.InsertRange(2, Nombres); // Inserta el array de string en la posicion 2(a partir del tercer Lugar.)

ArrayList permite organizar los elementos a través de su método Sort. Este método además tiene varias sobrecargas entre las cuales esta que recibe un objecto que implemente la interfaz IComparer para organizar los elementos en base a este.
ListaDeObjetos.Sort(); //Organiza los Elementos de menor a mayor

Para organizar elementos siguiendo algún criterio solo debemos crear el objeto que herede de IComparer:



(Tomado del Libro Self-Paced Training Kit 70-536)
public class DescendingComparer : IComparer
{
CaseInsensitiveComparer _comparer = new CaseInsensitiveComparer();

public int Compare(object x, object y)
{
// Invertir la tendencia a la comparación de objetos
// Se obtiene comparación Inversa.
return _comparer.Compare(y, x);
}
}

Después de haber creado el objeto solo debemos invocar el método Sort pasando como parámetro este objeto de este tipo.
ListaDeObjetos.Sort(new DescendingComparer());


















ANEXOS
Conociendo IList, IDictionary, ICollections,
Tomado de MSDN
IList (Interfaz)
http://msdn.microsoft.com/es-es/library/system.collections.ilist(VS.80).aspx
IList es un descendiente de la interfaz ICollection y es la interfaz base de todas las listas no genéricas. Las implementaciones de IList se dividen en tres categorías: sólo lectura, tamaño fijo y tamaño variable. Una interfaz IList de sólo lectura no se puede modificar. Una interfaz IList de tamaño fijo no permite agregar o eliminar elementos, pero sí modificar elementos existentes. Una interfaz IList de tamaño variable permite agregar, quitar y modificar elementos.
Representa una colección de objetos no genéricos a los que se puede obtener acceso por índice.
Para obtener la versión genérica de esta interfaz, vea System.Collections.Generic.IList.

Propiedades públicas

Nombre
Descripción
IsFixedSize
Obtiene un valor que indica si la interfaz IList tiene un tamaño fijo.
IsReadOnly
Obtiene un valor que indica si la interfaz IList es de sólo lectura.
Item
Obtiene o establece el elemento que se encuentra en el índice especificado.
Arriba
Métodos públicos

Nombre
Descripción
Add
Agrega un elemento a IList.
Clear
Quita todos los elementos de IList.
Contains
Determina si IList contiene un valor específico.
IndexOf
Determina el índice de un elemento específico de IList.
Insert
Inserta un elemento en IList, en el índice especificado.
Remove
Quita la primera aparición de un objeto específico de IList.
RemoveAt
Quita el elemento de IList en el índice especificado.



IDictionary (Interfaz)
http://msdn.microsoft.com/es-es/library/system.collections.idictionary_members(VS.80).aspx
Representa una colección no genérica de pares de clave y valor.
Cada par debe tener una clave única. Las implementaciones pueden variar en si permiten que la clave sea referencia de objeto null (Nothing en Visual Basic). El valor puede ser referencia de objeto null (Nothing en Visual Basic) y no es necesario que sea único. La interfaz IDictionary permite enumerar las claves y valores incluidos, pero esto no implica un criterio de ordenación determinado.
Las implementaciones de IDictionary se dividen en tres categorías: de sólo lectura, de tamaño fijo y de tamaño variable. Un objeto IDictionary de sólo lectura no se puede modificar. En un objeto IDictionary de tamaño fijo no se pueden agregar ni quitar elementos, pero sí modificar los existentes. Un objeto IDictionary de tamaño variable permite agregar, quitar y modificar elementos.
La instrucción foreach del lenguaje C# (for each en Visual Basic) requiere el tipo de cada elemento de la colección. Como los elementos del objeto IDictionary son pares de clave y valor, el tipo del elemento no se corresponde con el tipo de la clave ni con el del valor. En su lugar, el tipo del elemento es DictionaryEntry. Por ejemplo:
Propiedades públicas

Nombre
Descripción
IsFixedSize
Obtiene un valor que indica si el objeto IDictionary tiene un tamaño fijo.
IsReadOnly
Obtiene un valor que indica si el objeto IDictionary es de sólo lectura.
Item
Obtiene o establece el elemento con la clave especificada.
Keys
Obtiene un objeto ICollection que contiene las claves del objeto IDictionary.
Values
Obtiene un objeto ICollection que contiene los valores del objeto IDictionary.
Métodos públicos

Nombre
Descripción
Add
Agrega un elemento con la clave y el valor proporcionados al objeto IDictionary.
Clear
Quita todos los elementos del objeto IDictionary.
Contains
Determina si el objeto IDictionary contiene un elemento con la clave especificada.
GetEnumerator
Devuelve un objeto IDictionaryEnumerator para el objeto IDictionary.
Remove
Quita el elemento con la clave especificada del objeto IDictionary.




ICollection (Interfaz)
http://msdn.microsoft.com/es-es/library/system.collections.icollection(VS.80).aspx
Define el tamaño, los enumeradores y los métodos de sincronización para todas las colecciones no genéricas.
La interfaz ICollection es la interfaz base para las clases del espacio de nombres System.Collections.
La interfaz ICollection amplía IEnumerable; IDictionary e IList son interfaces más especializadas que amplían la interfaz ICollection. Una implementación de IDictionary es una colección de pares de clave y valor, como la clase Hashtable. Una implementación de IList es una colección de valores y el índice, como la clase ArrayList, puede obtener acceso a sus miembros.
Algunas colecciones que limitan el acceso a sus elementos, como la clase Queue y la clase Stack, implementan directamente la interfaz ICollection.
En caso de que ni la interfaz IDictionary ni la interfaz IList cumplan los requisitos de la colección requerida, la nueva clase de colección se deriva de la interfaz ICollection para una mayor flexibilidad.
Para obtener la versión genérica de esta interfaz, vea System.Collections.Generic.ICollection.
Las siguientes tablas recogen los miembros expuestos por el tipo ICollection .
Propiedades públicas

Nombre
Descripción
Count
Obtiene el número de elementos incluidos en ICollection.
IsSynchronized
Obtiene un valor que indica si el acceso a ICollection está sincronizado (es seguro para la ejecución de subprocesos).
SyncRoot
Obtiene un objeto que se puede utilizar para sincronizar el acceso a ICollection.

Métodos públicos

Nombre
Descripción
CopyTo
Copia los elementos de la interfaz ICollection en un objeto Array, a partir de un índice determinado de la clase Array.