Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Noviembre de 2016
2
IMPLEMENTACIN DE ESTRUCTURAS DE DATOS
LINEALES
La Colecciones
Hablar de las estructuras de datos lineales, necesariamente tendremos
que abordar la temtica de las colecciones, entendiendo que las
colecciones de clases de C# son un conjunto de clases diseadas
especficamente para agrupar objetos ya sea de un solo tipo o clases de
objetos de diferentes tipos y llevar a cabo tareas con ellos relacionadas
con el tratamiento de datos.
Si halamos de colecciones tendramos que referirnos al Namespace
System.Collections.Generic, en este espacio de nombre estn contenidas
todas las clases Generic, teniendo en cuenta que hay dos tipos principales
de colecciones: las colecciones genricas y las colecciones no genricas.
Las colecciones genricas normalmente ofrecen un mejor rendimiento.
Las colecciones genricas aceptan un parmetro de tipo cuando se
construyen y no requieren conversiones con el tipo Object al agregar o
quitar elementos de la coleccin. Las colecciones no genricas almacenan
elementos como Object, requieren conversin y la mayora no son
compatibles con el desarrollo de aplicaciones de la Tienda Windows.
El espacio de nombres System.Collections contiene interfaces y clases que
definen varias colecciones de objetos, como listas, colas, matrices de bits,
tablas hash y diccionarios.
En la tabla 1. Se identifican los diferentes tipos de colecciones con su
correspondiente equivalencia con respecto a las estructuras lineales.
Tabla 1. Tipos de colecciones y su equivalente terico
Las colecciones listT los ArrayList, las Stack, las Queue y Hashtable,
tienen propiedades muy similares a los arrays de C#. Una ventaja
fundamental de estas clases sobre los arrays es que puedan crecer y
3
reducir el nmero de objetos almacenados, es decir adicionarse o
eliminarse objetos de forma dinmica.
Fuente: https://goo.gl/cpK0CZ
4
Tabla 2. Mtodos o propiedades comunes de la clase Stack (Pilas)
5
6
Figura 2. Cdigo fuente como aplicacin a la coleccin Stack (Pila)
7
guardarlo, proceda a crear la interfaz del formulario para que tenga una
apariencia similar a la figura 4.
8
9
Figura 5. Cdigo fuente de la aplicacin de la Stack (pila) implementado
con Windows forms.
10
Esta instruccin va dentro de una excepcin, para que indique cuando la
pila est vaca. Y finaliza invocando al mtodo imprimirPila().
Entre las lneas 55 y 66 se presenta el evento del botn que muestra la
ltima palabra, al igual que el evento anterior tambin se incluye una
excepcin que indica si la pila est vaca.
Finalmente, de la lnea 68 a 73, se muestra el cdigo del evento Agregar
nueva palabra, de tal manera que en la lnea 70 se adiciona la palabra
que est en la caja de texto a la pila, y en la lnea 71 se invoca el mtodo
imprimir la pila para mostrar en cuadro de lista, la pila completa con la
nueva palabra ingresada. Y se limpia la caja de texto.
11
La Clase System.Collections Queue (Colas)
Fuente: https://goo.gl/cfdHKo
Las colas se usan para almacenar datos que necesitan ser procesados
segn el orden de llegada. Una aplicabilidad de las colas puede realizarse
en un sistema de informtico manejado a travs de una red de
computadoras donde se comparte una sola impresora para todos los
12
equipos conectados a la red; de tal manera que se imprimirn los
documentos en el orden en que se hace la peticin de impresin de cada
usuario. Formando as una cola de impresin.
Fuente: https://goo.gl/rXW9bm
13
Tabla 3. Mtodos o propiedades comunes de la clase Queue (Colas)
14
Figura 8 vista de la creacin de un nuevo proyecto en modo consola
15
Figura 9. Cdigo fuente de la implementacin de una coleccin Queue
(cola)
Una vez haya editado el cdigo, procede a compilarlo, as puede ver en la
figura 10 la salida en pantalla como aplicacin a las estructuras tipo cola
como coleccin Queue.
16
Figura 10: Salida en pantalla de la aplicacin de la coleccin Queue (cola)
17
Figura 11. Interfaz grfica de la implementacin de la coleccin Queue.
18
19
Figura 12. Cdigo fuente de la interfaz grfica de la implementacin de una
coleccin Queue (cola)
20
La Clase System.collections List<T> (Lista)
21
Una vez creado el proyecto se crea la lista, dentro del mtodo static
void Main(), la instruccin es la siguiente.
ListT nombre = new ListT();
Donde List es la clase de la lista, <T> es el tipo de dato que se va
manejar, puede ser de cualquiera de los tipos de datos primitivos de C#
o puede ser un objeto de una clase. El nombre es el nombre que se le va
dar a la lista new utilizado para instanciar un objeto de la clase List. Con
esta sintaxis ahora podemos crear una listT denominada animales:
como se muestra en la figura 13.
22
[3] se encuentra entre corchetes tras el nombre de la lista, hace
referencia al cuarto elemento de la lista, recordar que tiene el mismo
comportamiento de los arreglos, donde el primer elemento conserva el
subndice [0]. Por ejemplo, para acceder al segundo elemento del objeto
Animales:
Para verificar el cambio de nombre del animal solo basta con repetir la
instruccin
23
Figura 16. Cdigo completo de la clase ListaAnimales
Al proceder a compilar y ejecutar el programa, se evidencia la salida en
pantalla segn la figura 17, de la lista de animales previamente
ingresados a travs del mtodo Add(), incluyendo el cambio del nombre
del animal de la posicin 3.
25
En este caso de la figura 19, el programa devuelve la posicin 3 que
corresponde la posicin del animal Colibr en la lista.
Esta tcnica podra utilizarse para reemplazar un valor con otro. Por
ejemplo, sin conocer de antemano el valor del ndice de la posicin del
"Colibr" se puede cambiar a el animal "Guacamaya", en ese caso la
instruccin podra ser:
26
El mtodo Remove() requiere un parmetro que en este caso es una
cadena, que contiene el nombre del animal a eliminar o remover de la
lista, se puede evidenciar en la figura 20, la salida en pantalla despus de
listar los elementos.
27
Figura 21. Vista del explorador de soluciones
Lo primero es crear un nuevo proyecto en modo consola, el cual llevar
por nombre ListaProductosConsola, y se elige la ruta donde se quiera
guardar. Por defecto se crea la Clase Program.cs, luego se ubica el
explorador de soluciones y se crea una nueva clase a la que llamaremos
Producto. Se procede a crear las propiedades de la clase, que para este
caso sern el cdigo, el nombre y el precio. Luego se realiza el
encapsulamiento con los mtodos get y set. Tal como se evidencia en el
cdigo de la figura 22.
28
Propiedades de la
clase Producto
29
Posterior mente en la figura 23 se crea la clase Men, la cual va
contener el cdigo del men y de cada una de las opciones.
30
figura 23 Cdigo fuente de la clase Men
31
Figura 24. Cdigo fuente de la clase Program.cs
En la figura 25 se muestra el resultado al ejecutar el programa se tiene
como resultado la salida en pantalla del men con sus respectivas
opciones.
32
Implementacin de la lista genrica List <T> para la
administracin de productos como aplicacin de Windows Forms
Para el desarrollo de esta aplicacin se tiene el siguiente planteamiento
del problema:
Planteamiento del problema
El Hipermercado Supermax, requiere de una aplicacin para la
administracin del inventario de sus productos, de tal manera que cuente
con una interfaz grfica que a travs de un formulario permita el ingreso
de productos a la lista, es decir, guardarlos, tener a posibilidad de
consultar los productos del inventario, modificar datos de los productos,
eliminar productos, es decir sacarlos del inventario y la opcin de salir de
la aplicacin. Adicional mente se requiere validar que en los campos que
son de tipo numrico no permita ingresar texto o caracteres especiales.
Alternativa de solucin
Analizando el requerimiento del Hipermercado Supermax, se plantea
implementar la aplicacin haciendo uso del lenguaje de programacin
Visual C#, a travs del entorno de desarrollo Visual Studio 2015. Para lo
cual se sugiere como alternativa de solucin, implementar una estructura
de datos tipo Lista, como coleccin List<T>, a travs de una interfaz
grfica de usuario con Windows Forms.
Se inicia con la creacin de un nuevo proyecto, se elige aplicacin de
Windows Forms, se le asigna el nombre ListaGrafica, se elige la ubicacin
donde se quiere guardar y presiona el botn aceptar.
33
Por defecto se crean dos clases, la clase Program.cs y la clase Fom1.cs,
que es el formulario. La clase Program.cs, que se crea por defecto, tiene
como propsito cargar o llama al formulario una vez se ejecute o inicie la
aplicacin, es decir, invoca a la clase Form1, que es la interfaz que el
usuario visualiza una vez iniciada la aplicacin.
Por su parte la clase Fom1.cs, es en la que se realizar la programacin
de eventos y los mtodos requeridos para los controles y la interaccin
con el usuario.
De acuerdo al anlisis realizado previamente, se requiere definir una Clase
personalizada de tipo objeto a la que se le asignar el nombre de
Producto.cs, la cual contiene los atributos y las propiedades de los
productos como son: el cdigo, el nombre y el precio, en esta misma clase
se realiza el empaquetado o encapsulacin de los atributos de la clase
Producto, a travs de los mtodos Get y Se, lo que permite invocar esta
clase desde otras clases.
Veamos el cdigo de la clase Program.cs que ya viene pre construida.
Cdigo fuente de la clase Program.cs.
Este cdigo se crea por defecto cuando se crea el proyecto con Windows
Forms, lo importante de esta clase es el llamado que hace al formulario
que tiene como nombre por defecto Fom1.
34
se da clic derecho en el nombre de la solucin ListaGrafica, y en el men
contextual se elige la opcin Agregar y se elige Clase, se le da el nombre
Producto y se guarda, el cdigo se visualiza en la figura 28.
35
Figura 29. Vista del explorador de soluciones
36
Tambin se crea el objeto llamado DataGridView que es utilizado para que
muestre los registros de los productos ingresados en la lista, este control
se dej el mismo nombre que trae por defecto que es DataGridView1.
El formulario tiene una apariencia similar a la figura 30 en la que tambin
se muestra el explorador de soluciones.
37
Lo siguiente es asignar un par de registros a la lista, estos registros se
crean en un evento del formulario,
38
Figura 33. Objetos cargados en el DataGredView
39
vacos, para el caso del cdigo y del precio que son de tipo numrico que
valide que solo permita ingresar nmeros y no letras. Una vez creados los
mtodos se procede a invocarlos desde el control Guardar nuevo.
El primer mtodo se llama validarCodigo() es privado de tipo booleano,
es decir que retorna un valor true o False.
40
Figura 37. Mtodo ValidarPrecio()
41
dentro de las llaves, se invocan los mtodos que se construyeron y
tambin se incluye la validacin para el campo Cdigo y el campo Precio
que no permita ingresar texto en estos campos ya que son numricos.
42
Finalmente se crea un nuevo objeto llamado miProducto que es de la clase
Producto, as como tambin las instrucciones para adicionarlo a la lista y
se le asignan a la Data GridView1 para que se muestren en la cuadrcula
y finalmente se limpian los controles invocando el mtodo diseado para
tal fin.
Solo resta probar que se haya ingresado un nuevo registro y esta vez por
el formulario, guardamos y ejecutamos, ingresamos un registro y le
damos clic en el botn Guardar Nuevo, si todo va bien se visualizar en
la cuadrcula el registro ingresado, si esto es correcto se procede a quitar
el cdigo de los dos registros que se crearon de forma provisional por
fuera del formulario.
En este caso el evento del formulario Form1_Load queda vaco.
43
Figura 42. Mtodo para obtener el producto consultado
Ya creado el mtodo GetProducto() se procede a programar el control
Buscar, al igual que en los casos anteriores solo es dar doble clic en el
botn Buscar de la Vista de diseo del formulario y se crea el control vaco
para programarlo.
44
Figura 43. Mtodo para cargar los datos de la dataGridView1 en las cajas
de texto
Continuamos con la programacin del evento del botn Eliminar, al igual
que en los casos anteriores solo es dar doble clic en el botn eliminar de
la Vista de diseo del formulario y se crea el control vaco para
programarlo.
45
Figura 44. Evento del control del botn Eliminar
En caso contrario, es decir que si el cdigo figura registrado se quita la
alerta y a travs de un ciclo foreach() se recorre la lista en busca del
cdigo y se remueve de la lista. Se limpian los controles y se actualiza la
lista en la cuadrcula del DataGridView1.
46
Este control opera de forma similar que el evento de eliminar, antes de
realizar cualquier modificacin, se llevan a cabo validaciones, en primer
lugar, se procede a verificar el cdigo, invocando el mtodo
validarCodigo(), si es falso, retorna no hace nada, en caso contrario
invoca al mtodo GetProducto para consultar si el cdigo existe en la lista,
en caso de ser nulo indica a travs de la alerta del ErrorProvider que el
cdigo solicitado no est registrado.
47
Figura 47. Evento del control del botn Modificar para validar el nombre
y el precio
48
Finalmente programamos el botn Salir, estando en el formulario en vista
diseo Form.cs [Diseo] damos doble clic en el botn Salir, y nos conduce
al cdigo para programar el evento es este botn, solo se requiere invocar
al mtodo Close() que es un mtodo pre construido cuya funcin es cerrar
el formulario.
49
Fuentes Bibliogrficas
50