SlideShare une entreprise Scribd logo
1  sur  12
HashTables C#
Tips para trabajar con hashtables…
1.Creación de Nuestro Formulario
Para este ejemplo, crearemos un formulario que nos permita almacenar en un hashtable
objetos del tipo “Personas”.
Bueno, sin más detalles, vamos a crear un formulario con los siguientes elementos:
Notas:
- El dígito verificador de RUT lo hice con ComboBox, no se puede modificar y dentro
de las opciones del ComboBox, están los números <1-9> y el carácter ‘K’.
- F. de Nac es un MaskedTextBox, en Propiedades>Mask, seleccionen el de Fecha para
que quede como el del ejemplo.
- Para listar las personas, utilicé un RichTextBox y en propiedades, cambié a “True” la
opción ReadOnly, que sirve para que sólo podamos leer y no escribir en él.
2.Creando Nuestra clase clPersonas.cs
También esta será uno de los pasos más simples: Crear una nueva clase clPersonas, la
cual contendrá las siguientes variables:
- int rut, char dv, string nombre, string dirección, int edad y DateTime fNac.
Dentro de ésta clase, agregaremos un método llamado “datosToString()”, el cual nos devolverá
todos los atributos de la clase en una cadena de texto, la cual utilizaremos en nuestro
RichTextBox para listar a todos los objetos dentro de nuestro HashTable:
Nota:
- El salto de línea luego de this.Nombre.ToString() lo agregué sólo para poder hacer la
captura de pantalla de todo el contenido, ya que de otra manera, no cabría en la
imagen.
- Como pueden darse cuenta, TODAS las variables las convertí en String.
3.Creación de nuestra clase que
manejará el HashTable con sus métodos
Ahora que tenemos lista nuestra clase clPersonas, procederemos a crear la clase clHashTable, la
cual contendrá los métodos que utilizaremos para agregar/eliminar/modificar/buscar los
objetos clPersonas de nuestro hashtable.
Nota: Si se fijan, en mi ejemplo, las clases clHashTables y clPersona se encuentran en una
carpeta dentro de nuestra solución, por ende en el formulario debemos agregar la referencia
“using {Nombre de la solución}:{Carpeta};” en este caso, mi solución es “HashTablesTut” y mi
carpeta es “Clases”, por ende en este ejemplo, la referencia quedaría de la siguiente forma:
Continuando con nuestra clase clHasTables.cs, vamos a agregar la referencia:
“using System.Collections”, que nos permite trabajar con la clase Hashtable, en inmediataente
creamos una variable pública, del tipo HashTable:
Luego, el método “agregar” el cual tendrá por parámetros un objeto de tipo “clPersonas” que
será el objeto que agregará a nuestro hashtable recién creado:
Ahora seguimos con el método “modificar”, al cual le pasaremos por parámetros la variable
primaria “pRut” (que será el rut que ingresamos en nuestro formulario) y un objeto clPersona p1,
que contendrá las variables a reemplazar del objeto dentro del hashtable. Éste método realiza
una búsqueda dentro del hashtable para encontrar (por RUT) el objeto que deseamos modificar,
si lo encuentra, reemplaza las variables “Nombre, Dirección, Edad y Fecha de Nacimiento” del
objeto encontrado por los del objeto que le pasamos por parámetro:
Ahora crearemos el método eliminar, y le pasaremos por parámetro el RUT del objeto que
deseamos eliminar, de esta manera, nuestro método buscará dentro del hashtable algún objeto
que contenga ese rut, eliminará y devolverá “true”, de lo contrario; nos devolverá “false”:
Por último, crearemos un método de tipo “clPersona” y le pasaremos por parámetro una
variable primaria “pRut”, la cual, será nuestra guía para buscar dentro del hashtable algún objeto
que contenga esa variable primaria. Si no la encuentra, devolverá un objeto de tipo clPersona
vacío (null), en caso contrario, creamos el objeto de tipo clPersona “p1” y lo inicializamos como
el objeto encontrado, luego nos retorna el objeto “p1” recién inicializado:
4.Asignando funciones a nuestro
Formulario
Ya que terminamos nuestras clases clPersona.cs y clHashtable.cs, y nuestra asignatura se llama
“Programación Orientada a Objetos” y es precisamente lo que vamos a hacer: Agregaremos las
funciones a los botones de nuestro formulario.
Asumiendo que realizaron bien la “Nota” del paso número 3 (más arriba), vamos a realizar
ANTES de jugar con nuestras clases, la siguiente validación:
“Que ningún campo del formulario quede vacío antes de Agregar o Modificar un objeto”.
Para esto, crearemos un método bool validarCampos(), el cual nos devolverá “true” si todos los
campos contienen datos, o “false” si falta completar alguno. Nos será muy útil en varios casos
que veremos más adelante:
Ahora crearemos un método limpiar() que limpiará todos los campos del formulario, ya que
también lo utilizaremos en varias funciones para que, luego de ejecutarlas, limpie el contenido
de los campos del formulario:
Ya que tenemos estos 2 métodos fundamentales, continuamos con la creación de las funciones
de todos nuestros botones…
Botón “Insertar”:
Validaremos que estén todos los campos, si están completos, creamos un objeto clPersona p1, y
llamaremos (dentro de un if/else) al método agregar, al cual le pasaremos pro parámetro
nuestro objeto clPersona p1, si este método nos devuelve “true”, significa que agregó nuestro
objeto p1 al hashtable, y si no, nos arrojará un mensaje que dice que nuestro rut ya existe en el
hashtable. Si no están todos los campos completos en el formulario, nos arrojará un mensaje de
error.
Boton Modificar:
Para este método, lo que haremos será comprobar que los campos del formulario contengan
datos, si es así, creamos un objeto clPersona p1 con esos datos. Luego en un if/else llamamos al
método “modificar” de nuestra clase HashTable, si éste nos devuelve “true” significa que el
objeto dentro del hashtable ha sido modificado y limpia los datos, si devuelve “false”, significa
que el rut ingresado en nuestro formulario no existe en ningún objeto del hashtable, por ende,
mostramos un mensaje de error. Si no están completos los datos del formulario, mostramos
mensaje de error.
Botón Eliminar:
En este botón vamos a validar que tengamos nuestro campo RUT con datos, si es así;
validaremos que al llamar al método eliminar de nuestra clase hashtable, si éste nos devuelve
“true”, mostramos un mensaje que diga que el objeto ha sido eliminado, si no, significa que el
rut no existe y por ende, mostramos un mensaje de error. Si nuestro campo txRut no tiene
datos, mostramos un mensaje de error para que el usuario complete el campo:
Botón “Buscar”:
Creamos una variable local int pRut. Si el campo txRut contiene datos, asignamos su valor a la
variable local pRut. Luego creamos un objeto clPersona p1, al cual lo inicializaremos según el
objeto que nos devuelve el método “buscar” de nuestra clase hashtables; es decir: Si encuentra
el rut, nos devolverá el objeto que lo contiene y completaremos nuestros campos del formulario
con las variables de este objeto devuvelto. Si no, nos devolverá un objeto vacío “null” y nos
mostrará un mensaje de error. En caso de que el campo txRut no contenga datos, nos mostrará
un mensaje de error y centraremos el focus() en este campo para ser completado antes de
seleccionar una función del formulario:
Botón: “Listar”
En este caso, utilizaremos el richTextBox de la derecha de nuestro formulario para mostrar los
datos de todos los objetos dentro de nuestro hashtab, para ello utilizaremos un “forEach”.
La sintaxis del foreach es la siguiente:
Foreach ( “tipo de variable principal” “nombre de la variable” in “Nombre de nuestro
hashtable”.Keys )
{
// Código que ejecutará para cada objeto.
}
En mi caso, sería:
Foreach(int Rut in myHash.ht.Keys)
{
//Código….
}
Es decir, quedaría más o menos así:
Bueno, para terminar, nos faltaría el botón Limpiar Datos de nuestro richTextBox, el cual es el
más simple de todos, ya que sólo limpia el contenido de 1 campo:
Con esto, doy por fin al tutorial de manejo de HashTables, contiene la materia vista en clases, y
por ende, debiera ser la última materia que entraría en el exámen.
5.Comentarios:
Junto con este tutorial, adjuntaré el proyecto generado (.exe), no así el proyecto
completo con su respectivo source, ya que la finalidad de este tutorial es que practiquen
en sus hogares sin realizar copy/paste, ya que sería demasiado fácil y por ende, no
aprenderán nada y mi trabajo sería tan útil para ustedes como usar lentes de sol en un
túnel oscuro.
Espero que este tutorial les guíe y les pueda ayudar a entender a quienes aún tienen
dificultades.
Saludos y muchas gracias por darse el tiempo de leer.
Atte.
P. Alejandro Bustos.
Dudas y Consultas: http://www.facebook.com/alex.rasen
- Proyecto realizado con Visual Studio 2012.
- Agradecimientos al profesor Carlos Ojeda (harrys) por la ayuda prestada en la
elaboración del presente tutorial.

Contenu connexe

Tendances (15)

Swing MenúS Y Mantenimiento De Datos
Swing MenúS Y Mantenimiento De DatosSwing MenúS Y Mantenimiento De Datos
Swing MenúS Y Mantenimiento De Datos
 
Pasos para resolver bd leer-basico
Pasos para resolver   bd leer-basicoPasos para resolver   bd leer-basico
Pasos para resolver bd leer-basico
 
3.2.4.6 packet tracer investigating the tcp-ip and osi models in action ins...
3.2.4.6 packet tracer   investigating the tcp-ip and osi models in action ins...3.2.4.6 packet tracer   investigating the tcp-ip and osi models in action ins...
3.2.4.6 packet tracer investigating the tcp-ip and osi models in action ins...
 
Aprender código vba
Aprender código vbaAprender código vba
Aprender código vba
 
Formulario de altas
Formulario de altasFormulario de altas
Formulario de altas
 
Lista de comandos en windows 7
Lista de comandos en windows 7Lista de comandos en windows 7
Lista de comandos en windows 7
 
TECLAS DE ACCESO RAPIDO
TECLAS  DE  ACCESO RAPIDOTECLAS  DE  ACCESO RAPIDO
TECLAS DE ACCESO RAPIDO
 
Base de datos con Netbeans
Base de datos con NetbeansBase de datos con Netbeans
Base de datos con Netbeans
 
Swing MenúS Y Mantenimiento De Datos
Swing MenúS Y Mantenimiento De DatosSwing MenúS Y Mantenimiento De Datos
Swing MenúS Y Mantenimiento De Datos
 
Cuaderno de ejercicios y practicas vistual basic
Cuaderno de ejercicios y practicas vistual basicCuaderno de ejercicios y practicas vistual basic
Cuaderno de ejercicios y practicas vistual basic
 
Altas alumnos
Altas alumnosAltas alumnos
Altas alumnos
 
Tarea 2
Tarea 2Tarea 2
Tarea 2
 
Lista atajos de teclado windows 8
Lista atajos de teclado windows 8Lista atajos de teclado windows 8
Lista atajos de teclado windows 8
 
Crear inventarios
Crear inventariosCrear inventarios
Crear inventarios
 
Taller de programación web sesion 7,8,9,10 & 11
Taller de programación web   sesion 7,8,9,10 & 11Taller de programación web   sesion 7,8,9,10 & 11
Taller de programación web sesion 7,8,9,10 & 11
 

Similaire à Tutorial hash tables 2.0

Mantenimientodedatosennetbeans 091003154541-phpapp02
Mantenimientodedatosennetbeans 091003154541-phpapp02Mantenimientodedatosennetbeans 091003154541-phpapp02
Mantenimientodedatosennetbeans 091003154541-phpapp02
chocolatito Chocolatito
 
Analisis excel
Analisis excelAnalisis excel
Analisis excel
clinica123
 
Ezequiel Barbón Fernández
Ezequiel Barbón FernándezEzequiel Barbón Fernández
Ezequiel Barbón Fernández
edi.euitio
 
Base De Datos Con Visual Basic6.0
Base De Datos Con Visual Basic6.0Base De Datos Con Visual Basic6.0
Base De Datos Con Visual Basic6.0
CuC
 
Unidad6 funciones
Unidad6 funcionesUnidad6 funciones
Unidad6 funciones
moii Hp
 
27
2727
27
V3NC
 

Similaire à Tutorial hash tables 2.0 (20)

Prog gui
Prog guiProg gui
Prog gui
 
Tutorial bd y php
Tutorial bd y phpTutorial bd y php
Tutorial bd y php
 
Clase 11 formularios
Clase 11 formulariosClase 11 formularios
Clase 11 formularios
 
05 guiados listas_modelos Java
05 guiados listas_modelos Java05 guiados listas_modelos Java
05 guiados listas_modelos Java
 
Formulario
FormularioFormulario
Formulario
 
Presen
PresenPresen
Presen
 
Presen
PresenPresen
Presen
 
Tarea del seminario 4
Tarea del seminario 4Tarea del seminario 4
Tarea del seminario 4
 
25880774 jtable-mantenimiento-de-datos-en-netbeans-tenemos
25880774 jtable-mantenimiento-de-datos-en-netbeans-tenemos25880774 jtable-mantenimiento-de-datos-en-netbeans-tenemos
25880774 jtable-mantenimiento-de-datos-en-netbeans-tenemos
 
Mantenimientodedatosennetbeans 091003154541-phpapp02
Mantenimientodedatosennetbeans 091003154541-phpapp02Mantenimientodedatosennetbeans 091003154541-phpapp02
Mantenimientodedatosennetbeans 091003154541-phpapp02
 
Tarea_sesion5.pptx
Tarea_sesion5.pptxTarea_sesion5.pptx
Tarea_sesion5.pptx
 
Analisis excel
Analisis excelAnalisis excel
Analisis excel
 
Analisis excel
Analisis excelAnalisis excel
Analisis excel
 
Analisis excel
Analisis excelAnalisis excel
Analisis excel
 
Analisis excel
Analisis excelAnalisis excel
Analisis excel
 
Ezequiel Barbón Fernández
Ezequiel Barbón FernándezEzequiel Barbón Fernández
Ezequiel Barbón Fernández
 
Base De Datos Con Visual Basic6.0
Base De Datos Con Visual Basic6.0Base De Datos Con Visual Basic6.0
Base De Datos Con Visual Basic6.0
 
Unidad6 funciones
Unidad6 funcionesUnidad6 funciones
Unidad6 funciones
 
Funciones y Variables Globales PHP
Funciones y Variables Globales PHPFunciones y Variables Globales PHP
Funciones y Variables Globales PHP
 
27
2727
27
 

Dernier

6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
Wilian24
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
jlorentemartos
 
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACIONRESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
amelia poma
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
EliaHernndez7
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
patriciaines1993
 

Dernier (20)

6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
 
Novena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan EudesNovena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan Eudes
 
Biografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdfBiografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdf
 
Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
Usos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicasUsos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicas
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
 
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACIONRESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
 
PP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomasPP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomas
 
La Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalLa Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración Ambiental
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
Revista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfRevista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdf
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
Los avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesLos avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtuales
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 

Tutorial hash tables 2.0

  • 1. HashTables C# Tips para trabajar con hashtables…
  • 2. 1.Creación de Nuestro Formulario Para este ejemplo, crearemos un formulario que nos permita almacenar en un hashtable objetos del tipo “Personas”. Bueno, sin más detalles, vamos a crear un formulario con los siguientes elementos: Notas: - El dígito verificador de RUT lo hice con ComboBox, no se puede modificar y dentro de las opciones del ComboBox, están los números <1-9> y el carácter ‘K’. - F. de Nac es un MaskedTextBox, en Propiedades>Mask, seleccionen el de Fecha para que quede como el del ejemplo. - Para listar las personas, utilicé un RichTextBox y en propiedades, cambié a “True” la opción ReadOnly, que sirve para que sólo podamos leer y no escribir en él. 2.Creando Nuestra clase clPersonas.cs También esta será uno de los pasos más simples: Crear una nueva clase clPersonas, la cual contendrá las siguientes variables: - int rut, char dv, string nombre, string dirección, int edad y DateTime fNac.
  • 3. Dentro de ésta clase, agregaremos un método llamado “datosToString()”, el cual nos devolverá todos los atributos de la clase en una cadena de texto, la cual utilizaremos en nuestro RichTextBox para listar a todos los objetos dentro de nuestro HashTable: Nota: - El salto de línea luego de this.Nombre.ToString() lo agregué sólo para poder hacer la captura de pantalla de todo el contenido, ya que de otra manera, no cabría en la imagen. - Como pueden darse cuenta, TODAS las variables las convertí en String. 3.Creación de nuestra clase que manejará el HashTable con sus métodos Ahora que tenemos lista nuestra clase clPersonas, procederemos a crear la clase clHashTable, la cual contendrá los métodos que utilizaremos para agregar/eliminar/modificar/buscar los objetos clPersonas de nuestro hashtable.
  • 4. Nota: Si se fijan, en mi ejemplo, las clases clHashTables y clPersona se encuentran en una carpeta dentro de nuestra solución, por ende en el formulario debemos agregar la referencia “using {Nombre de la solución}:{Carpeta};” en este caso, mi solución es “HashTablesTut” y mi carpeta es “Clases”, por ende en este ejemplo, la referencia quedaría de la siguiente forma: Continuando con nuestra clase clHasTables.cs, vamos a agregar la referencia: “using System.Collections”, que nos permite trabajar con la clase Hashtable, en inmediataente creamos una variable pública, del tipo HashTable:
  • 5. Luego, el método “agregar” el cual tendrá por parámetros un objeto de tipo “clPersonas” que será el objeto que agregará a nuestro hashtable recién creado: Ahora seguimos con el método “modificar”, al cual le pasaremos por parámetros la variable primaria “pRut” (que será el rut que ingresamos en nuestro formulario) y un objeto clPersona p1, que contendrá las variables a reemplazar del objeto dentro del hashtable. Éste método realiza una búsqueda dentro del hashtable para encontrar (por RUT) el objeto que deseamos modificar, si lo encuentra, reemplaza las variables “Nombre, Dirección, Edad y Fecha de Nacimiento” del objeto encontrado por los del objeto que le pasamos por parámetro:
  • 6. Ahora crearemos el método eliminar, y le pasaremos por parámetro el RUT del objeto que deseamos eliminar, de esta manera, nuestro método buscará dentro del hashtable algún objeto que contenga ese rut, eliminará y devolverá “true”, de lo contrario; nos devolverá “false”: Por último, crearemos un método de tipo “clPersona” y le pasaremos por parámetro una variable primaria “pRut”, la cual, será nuestra guía para buscar dentro del hashtable algún objeto que contenga esa variable primaria. Si no la encuentra, devolverá un objeto de tipo clPersona vacío (null), en caso contrario, creamos el objeto de tipo clPersona “p1” y lo inicializamos como el objeto encontrado, luego nos retorna el objeto “p1” recién inicializado:
  • 7. 4.Asignando funciones a nuestro Formulario Ya que terminamos nuestras clases clPersona.cs y clHashtable.cs, y nuestra asignatura se llama “Programación Orientada a Objetos” y es precisamente lo que vamos a hacer: Agregaremos las funciones a los botones de nuestro formulario. Asumiendo que realizaron bien la “Nota” del paso número 3 (más arriba), vamos a realizar ANTES de jugar con nuestras clases, la siguiente validación: “Que ningún campo del formulario quede vacío antes de Agregar o Modificar un objeto”. Para esto, crearemos un método bool validarCampos(), el cual nos devolverá “true” si todos los campos contienen datos, o “false” si falta completar alguno. Nos será muy útil en varios casos que veremos más adelante: Ahora crearemos un método limpiar() que limpiará todos los campos del formulario, ya que también lo utilizaremos en varias funciones para que, luego de ejecutarlas, limpie el contenido de los campos del formulario: Ya que tenemos estos 2 métodos fundamentales, continuamos con la creación de las funciones de todos nuestros botones…
  • 8. Botón “Insertar”: Validaremos que estén todos los campos, si están completos, creamos un objeto clPersona p1, y llamaremos (dentro de un if/else) al método agregar, al cual le pasaremos pro parámetro nuestro objeto clPersona p1, si este método nos devuelve “true”, significa que agregó nuestro objeto p1 al hashtable, y si no, nos arrojará un mensaje que dice que nuestro rut ya existe en el hashtable. Si no están todos los campos completos en el formulario, nos arrojará un mensaje de error. Boton Modificar: Para este método, lo que haremos será comprobar que los campos del formulario contengan datos, si es así, creamos un objeto clPersona p1 con esos datos. Luego en un if/else llamamos al método “modificar” de nuestra clase HashTable, si éste nos devuelve “true” significa que el objeto dentro del hashtable ha sido modificado y limpia los datos, si devuelve “false”, significa que el rut ingresado en nuestro formulario no existe en ningún objeto del hashtable, por ende, mostramos un mensaje de error. Si no están completos los datos del formulario, mostramos mensaje de error.
  • 9. Botón Eliminar: En este botón vamos a validar que tengamos nuestro campo RUT con datos, si es así; validaremos que al llamar al método eliminar de nuestra clase hashtable, si éste nos devuelve “true”, mostramos un mensaje que diga que el objeto ha sido eliminado, si no, significa que el rut no existe y por ende, mostramos un mensaje de error. Si nuestro campo txRut no tiene datos, mostramos un mensaje de error para que el usuario complete el campo:
  • 10. Botón “Buscar”: Creamos una variable local int pRut. Si el campo txRut contiene datos, asignamos su valor a la variable local pRut. Luego creamos un objeto clPersona p1, al cual lo inicializaremos según el objeto que nos devuelve el método “buscar” de nuestra clase hashtables; es decir: Si encuentra el rut, nos devolverá el objeto que lo contiene y completaremos nuestros campos del formulario con las variables de este objeto devuvelto. Si no, nos devolverá un objeto vacío “null” y nos mostrará un mensaje de error. En caso de que el campo txRut no contenga datos, nos mostrará un mensaje de error y centraremos el focus() en este campo para ser completado antes de seleccionar una función del formulario:
  • 11. Botón: “Listar” En este caso, utilizaremos el richTextBox de la derecha de nuestro formulario para mostrar los datos de todos los objetos dentro de nuestro hashtab, para ello utilizaremos un “forEach”. La sintaxis del foreach es la siguiente: Foreach ( “tipo de variable principal” “nombre de la variable” in “Nombre de nuestro hashtable”.Keys ) { // Código que ejecutará para cada objeto. } En mi caso, sería: Foreach(int Rut in myHash.ht.Keys) { //Código…. } Es decir, quedaría más o menos así: Bueno, para terminar, nos faltaría el botón Limpiar Datos de nuestro richTextBox, el cual es el más simple de todos, ya que sólo limpia el contenido de 1 campo:
  • 12. Con esto, doy por fin al tutorial de manejo de HashTables, contiene la materia vista en clases, y por ende, debiera ser la última materia que entraría en el exámen. 5.Comentarios: Junto con este tutorial, adjuntaré el proyecto generado (.exe), no así el proyecto completo con su respectivo source, ya que la finalidad de este tutorial es que practiquen en sus hogares sin realizar copy/paste, ya que sería demasiado fácil y por ende, no aprenderán nada y mi trabajo sería tan útil para ustedes como usar lentes de sol en un túnel oscuro. Espero que este tutorial les guíe y les pueda ayudar a entender a quienes aún tienen dificultades. Saludos y muchas gracias por darse el tiempo de leer. Atte. P. Alejandro Bustos. Dudas y Consultas: http://www.facebook.com/alex.rasen - Proyecto realizado con Visual Studio 2012. - Agradecimientos al profesor Carlos Ojeda (harrys) por la ayuda prestada en la elaboración del presente tutorial.