Posteado por: fzapataramirez | Miércoles, julio 30, 2008

Colecciones de datos.

Una de las tareas mas comunes que se presentan en la ejecución de una aplicación, es la de agrupar datos en colecciones para que puedan ser tratadas como un único objeto en lugar de tratar cada uno por separado.

Un ejemplo claro podría ser una aplicación que administre los alumnos que se tienen en un aula de clase. En ese caso, se tendría que crear una clase "Alumno" que represente en nuestra aplicación a cada uno de los alumnos que hacen parte del curso. Luego, en algún momento, tendremos la necesidad de crear tantas instancias de la clase "Alumno" como estudiantes estén matriculados.

Alumno a1=new Alumno();
Alumno a2=new Alumno();
Alumno a3=new Alumno();
.
.
.
Alumno a35=new Alumno();

Una colección de datos, es una clase que nos permite agrupar un conjunto de objetos en uno solo, brindándonos la posibilidad de agregar, consultar, modificar y eliminar objetos de la colección.
Manejar en este caso 35 alumnos cada uno por separado no es muy practico ya que se necesitarían muchas líneas de código para realzar alguna operación sobre todos los alumnos.

Supongamos que en la aplicación se da la posibilidad de marcar la asistencia o no asistencia de un alumno a la clase. Adicionalmente tenemos un método que recibirá como parámetro la lista entera de los alumnos y los marcara a todos como si hubieran asistido a clase ( Algo practico para el encargado de registrar dicha información).
Si tratamos a cada alumno por separado, tendríamos los dos siguientes problemas:

  • Tendríamos que codificar una lista enorme de parámetros para el método (Un total de 35 parámetros, todos de tipo "Alumno"). Esto seria bastante tedioso de codificar y luego de leer.

    El método seria algo como esto.

    public void marcarAsistencia(Alumno a1, Alumno a2, ………,Alumno a35)
    {
    }

  • Si por algún motivo el numero de estudiantes varia, tendríamos que modificar el código fuente para que el método reciba el numero de parámetros correcto, lo cual haría nuestra aplicación poco escalable (evolucionable).

Por otro lado, si tratamos a nuestros alumnos como una colección de datos, tendremos la ventaja de que siempre el método recibirá una colección (independiente del numero de alumnos, siempre será una colección).
En todos los lenguajes de programación existen las colecciones básicas de datos, la diferencia entre un lenguaje y otro es la sintaxis que se debe utilizar para implementarla.

La colección mas básica que se puede utilizar es el Array (Arreglo o Vector). Consiste en un objeto con tamaño fijo al que podemos agregar otros objetos. En general, la sintaxis a utilizar es la siguiente.

Tipo de dato [] identificador=new Tipo de dato [longitud fija];

Por ejemplo si queremos crear un vector de enteros de 10 posiciones:

int [] vector=new int[10];

Para el caso especifico de nuestro ejemplo, tendríamos que crear un vector de Alumnos para almacenar un total de 35 alumnos.

Alumno listaAlumnos=new Alumno[35];

Luego de crear el vector de alumnos, procedemos a llenar la colección con los datos que contendrá. Los vectores utilizan índices para tener acceso a los objetos que contiene. Hay que tener presente que los índices de los vectores son basados en cero, es decir, que siempre el primer elemento tendrá un índice de 0 y no de 1.

Así, si queremos almacenar en la primera posición del vector el alumno a1, haríamos lo siguiente.

listaAlumno[0]=a1;

Y así sucesivamente.

listaAlumno[0]=a1; 
listaAlumno[1]=a2; 
listaAlumno[2]=a3; 
.
.
.
listaAlumno[34]=a35;

De esta manera, el método que se encarga de marcar que todos los alumnos asistieron a clase, quedaría así:

public void marcarAsistencia(Alumno[] lista)
{
}

La verdad es que el método nos a quedado mucho mas legible, sin embargo, la escalabilidad de nuestro código sigue siendo pobre porque si el numero de alumnos varia toca modificar la sentencia de creación del vector y su respectiva asignación del valor.

Por esta razón, existen diferentes tipos de colecciones que permiten un mejor manejo de datos según sea necesario en nuestra aplicación. Estas las comentare en un próximo post y basándome en el lenguaje C#.NET (una maravilla).

Suerte !!!


Responses

  1. […] de datos en C#.NET (Parte I – Vectores) Como lo explique en un post anterior, las colecciones de datos son algunas de las herramientas mas utilizadas a la hora de desarrollar […]


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Categorías

A %d blogueros les gusta esto: