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

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 DatosRandy
 
Pasos para resolver bd leer-basico
Pasos para resolver   bd leer-basicoPasos para resolver   bd leer-basico
Pasos para resolver bd leer-basicogruposplancic
 
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...timmaujim
 
Aprender código vba
Aprender código vbaAprender código vba
Aprender código vbassuser3a82fb
 
Formulario de altas
Formulario de altasFormulario de altas
Formulario de altasSicohe
 
Lista de comandos en windows 7
Lista de comandos en windows 7Lista de comandos en windows 7
Lista de comandos en windows 7Cristhian Guerron
 
TECLAS DE ACCESO RAPIDO
TECLAS  DE  ACCESO RAPIDOTECLAS  DE  ACCESO RAPIDO
TECLAS DE ACCESO RAPIDOAlex Camvi
 
Base de datos con Netbeans
Base de datos con NetbeansBase de datos con Netbeans
Base de datos con NetbeansRandy
 
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 DatosRandy
 
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 basicOmar Valero Guerra
 
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 & 11ibcalu
 

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

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

ENUNCIADOS CUESTIONARIO S9 GEOLOGIA Y MINERALOGIA - GENERAL.docx
ENUNCIADOS CUESTIONARIO S9 GEOLOGIA Y MINERALOGIA - GENERAL.docxENUNCIADOS CUESTIONARIO S9 GEOLOGIA Y MINERALOGIA - GENERAL.docx
ENUNCIADOS CUESTIONARIO S9 GEOLOGIA Y MINERALOGIA - GENERAL.docxmatepura
 
Pasos para enviar una tarea en SIANET - sólo estudiantes.pdf
Pasos para enviar una tarea en SIANET - sólo estudiantes.pdfPasos para enviar una tarea en SIANET - sólo estudiantes.pdf
Pasos para enviar una tarea en SIANET - sólo estudiantes.pdfNELLYKATTY
 
PATRONES DE REFERENCIA, CRITERIOS Y DIAGNOSTICO Angeles.pptx
PATRONES DE REFERENCIA, CRITERIOS Y DIAGNOSTICO Angeles.pptxPATRONES DE REFERENCIA, CRITERIOS Y DIAGNOSTICO Angeles.pptx
PATRONES DE REFERENCIA, CRITERIOS Y DIAGNOSTICO Angeles.pptxSusanaAlejandraMende
 
LA ILIADA Y LA ODISEA.LITERATURA UNIVERSAL
LA ILIADA Y LA ODISEA.LITERATURA UNIVERSALLA ILIADA Y LA ODISEA.LITERATURA UNIVERSAL
LA ILIADA Y LA ODISEA.LITERATURA UNIVERSALJorge Castillo
 
5º PARTE 3 SOY LECTOR -MD EDUCATIVO_240418_155445 (1).pdf
5º PARTE 3 SOY LECTOR -MD EDUCATIVO_240418_155445 (1).pdf5º PARTE 3 SOY LECTOR -MD EDUCATIVO_240418_155445 (1).pdf
5º PARTE 3 SOY LECTOR -MD EDUCATIVO_240418_155445 (1).pdfFlorHernandezNuez
 
PLAN DE GESTION DEL RIESGO 2023 - 2024.docx
PLAN DE GESTION DEL RIESGO  2023 - 2024.docxPLAN DE GESTION DEL RIESGO  2023 - 2024.docx
PLAN DE GESTION DEL RIESGO 2023 - 2024.docxpily R.T.
 
Vínculo afectivo (labor expositivo de grupo )
Vínculo afectivo (labor expositivo de grupo )Vínculo afectivo (labor expositivo de grupo )
Vínculo afectivo (labor expositivo de grupo )portafoliodigitalyos
 
a propósito del estado su relevancia y definiciones
a propósito del estado su relevancia y definicionesa propósito del estado su relevancia y definiciones
a propósito del estado su relevancia y definicionessubfabian
 
BIENESTAR TOTAL - LA EXPERIENCIA DEL CLIENTE CON ATR
BIENESTAR TOTAL - LA EXPERIENCIA DEL CLIENTE CON ATRBIENESTAR TOTAL - LA EXPERIENCIA DEL CLIENTE CON ATR
BIENESTAR TOTAL - LA EXPERIENCIA DEL CLIENTE CON ATRDanielGrajeda7
 
ACERTIJO SOPA DE LETRAS OLÍMPICA. Por JAVIER SOLIS NOYOLA
ACERTIJO SOPA DE LETRAS OLÍMPICA. Por JAVIER SOLIS NOYOLAACERTIJO SOPA DE LETRAS OLÍMPICA. Por JAVIER SOLIS NOYOLA
ACERTIJO SOPA DE LETRAS OLÍMPICA. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
Tema 8 Estructura y composición de la Tierra 2024
Tema 8 Estructura y composición de la Tierra 2024Tema 8 Estructura y composición de la Tierra 2024
Tema 8 Estructura y composición de la Tierra 2024IES Vicent Andres Estelles
 
PROBLEMAS DE GENÉTICA CON ÁRBOLES GENEALÓGICOS.pdf
PROBLEMAS DE GENÉTICA  CON ÁRBOLES GENEALÓGICOS.pdfPROBLEMAS DE GENÉTICA  CON ÁRBOLES GENEALÓGICOS.pdf
PROBLEMAS DE GENÉTICA CON ÁRBOLES GENEALÓGICOS.pdfmihayedo
 
Época colonial: vestimenta, costumbres y juegos de la época
Época colonial: vestimenta, costumbres y juegos de la épocaÉpoca colonial: vestimenta, costumbres y juegos de la época
Época colonial: vestimenta, costumbres y juegos de la épocacecifranco1981
 
RESPONSABILIDAD SOCIAL EN LAS ORGANIZACIONES (4).pdf
RESPONSABILIDAD SOCIAL EN LAS ORGANIZACIONES (4).pdfRESPONSABILIDAD SOCIAL EN LAS ORGANIZACIONES (4).pdf
RESPONSABILIDAD SOCIAL EN LAS ORGANIZACIONES (4).pdfANEP - DETP
 
LA GEOMETRÍA Y LOS SISTEMAS ANGULARES, APRENDER LEYENDO LA BIBLIA
LA GEOMETRÍA Y LOS SISTEMAS ANGULARES, APRENDER LEYENDO LA BIBLIALA GEOMETRÍA Y LOS SISTEMAS ANGULARES, APRENDER LEYENDO LA BIBLIA
LA GEOMETRÍA Y LOS SISTEMAS ANGULARES, APRENDER LEYENDO LA BIBLIASandra Mariela Ballón Aguedo
 
SISTEMA RESPIRATORIO DEL CUERPO HUMANO triptico.docx
SISTEMA RESPIRATORIO DEL CUERPO HUMANO triptico.docxSISTEMA RESPIRATORIO DEL CUERPO HUMANO triptico.docx
SISTEMA RESPIRATORIO DEL CUERPO HUMANO triptico.docxgesicavillanuevaqf
 

Dernier (20)

ENUNCIADOS CUESTIONARIO S9 GEOLOGIA Y MINERALOGIA - GENERAL.docx
ENUNCIADOS CUESTIONARIO S9 GEOLOGIA Y MINERALOGIA - GENERAL.docxENUNCIADOS CUESTIONARIO S9 GEOLOGIA Y MINERALOGIA - GENERAL.docx
ENUNCIADOS CUESTIONARIO S9 GEOLOGIA Y MINERALOGIA - GENERAL.docx
 
Pasos para enviar una tarea en SIANET - sólo estudiantes.pdf
Pasos para enviar una tarea en SIANET - sólo estudiantes.pdfPasos para enviar una tarea en SIANET - sólo estudiantes.pdf
Pasos para enviar una tarea en SIANET - sólo estudiantes.pdf
 
Revista Faro Normalista 6, 18 de mayo 2024
Revista Faro Normalista 6, 18 de mayo 2024Revista Faro Normalista 6, 18 de mayo 2024
Revista Faro Normalista 6, 18 de mayo 2024
 
PATRONES DE REFERENCIA, CRITERIOS Y DIAGNOSTICO Angeles.pptx
PATRONES DE REFERENCIA, CRITERIOS Y DIAGNOSTICO Angeles.pptxPATRONES DE REFERENCIA, CRITERIOS Y DIAGNOSTICO Angeles.pptx
PATRONES DE REFERENCIA, CRITERIOS Y DIAGNOSTICO Angeles.pptx
 
Power Point: Luz desde el santuario.pptx
Power Point: Luz desde el santuario.pptxPower Point: Luz desde el santuario.pptx
Power Point: Luz desde el santuario.pptx
 
LA ILIADA Y LA ODISEA.LITERATURA UNIVERSAL
LA ILIADA Y LA ODISEA.LITERATURA UNIVERSALLA ILIADA Y LA ODISEA.LITERATURA UNIVERSAL
LA ILIADA Y LA ODISEA.LITERATURA UNIVERSAL
 
5º PARTE 3 SOY LECTOR -MD EDUCATIVO_240418_155445 (1).pdf
5º PARTE 3 SOY LECTOR -MD EDUCATIVO_240418_155445 (1).pdf5º PARTE 3 SOY LECTOR -MD EDUCATIVO_240418_155445 (1).pdf
5º PARTE 3 SOY LECTOR -MD EDUCATIVO_240418_155445 (1).pdf
 
PLAN DE GESTION DEL RIESGO 2023 - 2024.docx
PLAN DE GESTION DEL RIESGO  2023 - 2024.docxPLAN DE GESTION DEL RIESGO  2023 - 2024.docx
PLAN DE GESTION DEL RIESGO 2023 - 2024.docx
 
Vínculo afectivo (labor expositivo de grupo )
Vínculo afectivo (labor expositivo de grupo )Vínculo afectivo (labor expositivo de grupo )
Vínculo afectivo (labor expositivo de grupo )
 
a propósito del estado su relevancia y definiciones
a propósito del estado su relevancia y definicionesa propósito del estado su relevancia y definiciones
a propósito del estado su relevancia y definiciones
 
BIENESTAR TOTAL - LA EXPERIENCIA DEL CLIENTE CON ATR
BIENESTAR TOTAL - LA EXPERIENCIA DEL CLIENTE CON ATRBIENESTAR TOTAL - LA EXPERIENCIA DEL CLIENTE CON ATR
BIENESTAR TOTAL - LA EXPERIENCIA DEL CLIENTE CON ATR
 
ACERTIJO SOPA DE LETRAS OLÍMPICA. Por JAVIER SOLIS NOYOLA
ACERTIJO SOPA DE LETRAS OLÍMPICA. Por JAVIER SOLIS NOYOLAACERTIJO SOPA DE LETRAS OLÍMPICA. Por JAVIER SOLIS NOYOLA
ACERTIJO SOPA DE LETRAS OLÍMPICA. Por JAVIER SOLIS NOYOLA
 
Tema 8 Estructura y composición de la Tierra 2024
Tema 8 Estructura y composición de la Tierra 2024Tema 8 Estructura y composición de la Tierra 2024
Tema 8 Estructura y composición de la Tierra 2024
 
Sesión de clase: Luz desde el santuario.pdf
Sesión de clase: Luz desde el santuario.pdfSesión de clase: Luz desde el santuario.pdf
Sesión de clase: Luz desde el santuario.pdf
 
PROBLEMAS DE GENÉTICA CON ÁRBOLES GENEALÓGICOS.pdf
PROBLEMAS DE GENÉTICA  CON ÁRBOLES GENEALÓGICOS.pdfPROBLEMAS DE GENÉTICA  CON ÁRBOLES GENEALÓGICOS.pdf
PROBLEMAS DE GENÉTICA CON ÁRBOLES GENEALÓGICOS.pdf
 
Época colonial: vestimenta, costumbres y juegos de la época
Época colonial: vestimenta, costumbres y juegos de la épocaÉpoca colonial: vestimenta, costumbres y juegos de la época
Época colonial: vestimenta, costumbres y juegos de la época
 
La historia de la vida estudiantil a 102 años de la fundación de las Normales...
La historia de la vida estudiantil a 102 años de la fundación de las Normales...La historia de la vida estudiantil a 102 años de la fundación de las Normales...
La historia de la vida estudiantil a 102 años de la fundación de las Normales...
 
RESPONSABILIDAD SOCIAL EN LAS ORGANIZACIONES (4).pdf
RESPONSABILIDAD SOCIAL EN LAS ORGANIZACIONES (4).pdfRESPONSABILIDAD SOCIAL EN LAS ORGANIZACIONES (4).pdf
RESPONSABILIDAD SOCIAL EN LAS ORGANIZACIONES (4).pdf
 
LA GEOMETRÍA Y LOS SISTEMAS ANGULARES, APRENDER LEYENDO LA BIBLIA
LA GEOMETRÍA Y LOS SISTEMAS ANGULARES, APRENDER LEYENDO LA BIBLIALA GEOMETRÍA Y LOS SISTEMAS ANGULARES, APRENDER LEYENDO LA BIBLIA
LA GEOMETRÍA Y LOS SISTEMAS ANGULARES, APRENDER LEYENDO LA BIBLIA
 
SISTEMA RESPIRATORIO DEL CUERPO HUMANO triptico.docx
SISTEMA RESPIRATORIO DEL CUERPO HUMANO triptico.docxSISTEMA RESPIRATORIO DEL CUERPO HUMANO triptico.docx
SISTEMA RESPIRATORIO DEL CUERPO HUMANO triptico.docx
 

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.