SlideShare una empresa de Scribd logo
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.

Más contenido relacionado

PDF
Unidad vgestion de base de datos
PDF
Formulario de altas
PDF
Botonborrar
PDF
5. Interacción con el usuario: eventos y formularios
PDF
Mantenimiento De Datos En Netbeans
DOCX
Seguridad en access
PDF
Mantenimiento De Datos Usando Procedimientos Almacenados
PDF
Computación - Grupo 04
Unidad vgestion de base de datos
Formulario de altas
Botonborrar
5. Interacción con el usuario: eventos y formularios
Mantenimiento De Datos En Netbeans
Seguridad en access
Mantenimiento De Datos Usando Procedimientos Almacenados
Computación - Grupo 04

La actualidad más candente (15)

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

Similar a Tutorial hash tables 2.0 (20)

PDF
PDF
Tutorial bd y php
PDF
Clase 11 formularios
DOC
05 guiados listas_modelos Java
PDF
Formulario
PPT
Presen
PPT
Presen
PDF
Tarea del seminario 4
PDF
25880774 jtable-mantenimiento-de-datos-en-netbeans-tenemos
PDF
Mantenimientodedatosennetbeans 091003154541-phpapp02
PPTX
Tarea_sesion5.pptx
DOCX
Analisis excel
DOCX
Analisis excel
DOCX
Analisis excel
DOCX
Analisis excel
PPT
Ezequiel Barbón Fernández
DOCX
Base De Datos Con Visual Basic6.0
 
DOCX
Unidad6 funciones
PPTX
Funciones y Variables Globales PHP
DOCX
27
Tutorial bd y php
Clase 11 formularios
05 guiados listas_modelos Java
Formulario
Presen
Presen
Tarea del seminario 4
25880774 jtable-mantenimiento-de-datos-en-netbeans-tenemos
Mantenimientodedatosennetbeans 091003154541-phpapp02
Tarea_sesion5.pptx
Analisis excel
Analisis excel
Analisis excel
Analisis excel
Ezequiel Barbón Fernández
Base De Datos Con Visual Basic6.0
 
Unidad6 funciones
Funciones y Variables Globales PHP
27
Publicidad

Último (20)

PDF
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
PDF
DI, TEA, TDAH.pdf guía se secuencias didacticas
PDF
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
PDF
Atencion prenatal. Ginecologia y obsetricia
PDF
Punto Critico - Brian Tracy Ccesa007.pdf
DOCX
PROYECTO DE APRENDIZAJE para la semana de fiestas patrias
PDF
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
PDF
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
PDF
Unidad de Aprendizaje 5 de Matematica 1ro Secundaria Ccesa007.pdf
PDF
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
PDF
Guia de Tesis y Proyectos de Investigacion FS4 Ccesa007.pdf
PDF
Didactica de la Investigacion Educativa SUE Ccesa007.pdf
PDF
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
PDF
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
PDF
Metodologías Activas con herramientas IAG
PDF
Fundamentos_Educacion_a_Distancia_ABC.pdf
PDF
CONFERENCIA-Deep Research en el aula universitaria-UPeU-EduTech360.pdf
DOCX
V UNIDAD - SEGUNDO GRADO. del mes de agosto
DOCX
2 GRADO UNIDAD 5 - 2025.docx para primaria
PDF
GUIA DE: CANVA + INTELIGENCIA ARTIFICIAL
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
DI, TEA, TDAH.pdf guía se secuencias didacticas
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
Atencion prenatal. Ginecologia y obsetricia
Punto Critico - Brian Tracy Ccesa007.pdf
PROYECTO DE APRENDIZAJE para la semana de fiestas patrias
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
Unidad de Aprendizaje 5 de Matematica 1ro Secundaria Ccesa007.pdf
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
Guia de Tesis y Proyectos de Investigacion FS4 Ccesa007.pdf
Didactica de la Investigacion Educativa SUE Ccesa007.pdf
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
Metodologías Activas con herramientas IAG
Fundamentos_Educacion_a_Distancia_ABC.pdf
CONFERENCIA-Deep Research en el aula universitaria-UPeU-EduTech360.pdf
V UNIDAD - SEGUNDO GRADO. del mes de agosto
2 GRADO UNIDAD 5 - 2025.docx para primaria
GUIA DE: CANVA + INTELIGENCIA ARTIFICIAL

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.