Beginning Sistemas de Información Java Bibliotecas Listado siguiente
PresentaciónEntrada/SalidaBibliotecasSwingMarcosBotonesCuadros de texto
ListasImágenesMenúsDiálogosArchivosGráficos 2D 

Bibliotecas de clases. Java como lenguaje de dotado de una extensa biblioteca de clases. Las clases envelope o envoltorio. Clases para el manejo de cadenas (String y StringTokenizer) Colecciones en Java (Vector y Arrays). Tablas dispersivas (Hashtable).

Comentarios

Se recomienda leer los enunciados de todos los ejercicios antes de abordarlos. Los métodos y clases creados en los ejercicios anterior pueden reutilizarse en los ejercicios posteriores, siempre y cuando se facilite esta tarea desde un principio. Téngase en cuenta que el objetivo perseguido no es escribir C en Java, cosa posible pero no deseable. Se pretente crear clases reutilizables, de modo que el esfuerzo inicial no deba repetirse posteriormente.
En el Ejercicio 3 se plantea un esfuerzo colaborativo, puesto que deberán emplearse mensajes de correo electrónico reales, que se pueden obtener fácilmente del registro del cliente de correo electrónico que se utilice habitualmente. El contenido de estos mensajes, privado sin duda, desaparecerá al generar el léxico. Por tanto, es bueno contar con un método que tras crear el método sea capaz de volcarlo en pantalla, o directamente en un archivo de disco. El archivo así obtenido, privado ya de contenido privado, podrá unirse al de otros compañeros, dando lugar a un diccionario razonablemente poblado con términos habituales.
El problema de las palabras que no aparezcan en el diccionario puede resolverse de varias maneras. Una de ellas consistiría en generar un "update" o actualización que acompañaría al mensaje cifrado. Otro procedimiento, más sofisticado, consiste en advertir al remitente que una o más de las palabras empleadas en su mensaje no consta en el diccionario, para que proceda a sustituirla por otra presente. Quizá la idea más sofisticada consiste en crear un diccionario centralizado, adecuado para consultar al mismo los códigos de las palabras, pudiéndose también añadir nuevas palabras que no constaran anteriormente. De este modo queda garantizado el funcionamiento, y el problema de la seguridad pasa por garantizar que sólo puedan acceder al diccionario quienes estén autorizados.

Ejercicios propuestos

  1. Se dispone de una lista formada por los nombres y edades de una colección de personas. Se pide construir una clase que admita esa lista y proporcione
    1. El nombre de una persona de edad mínima
    2. El nombre de una persona de edad máxima
    3. Una lista de las personas de edad menor que una dada
    4. Una lista de las personas de edad mayor que una dada.
    Las listas pueden construirse como Hastable. La información se aporta a la clase (a su constructor) en forma de arrays (uno de nombres y otro de edades) que a su vez pueden proceder del teclado.
  2. La idea de léxico o diccionario puede emplearse para comprimir y codificar mensajes. El procedimiento consiste en extraer el léxico (diccionario) del mensaje, asignando a cada palabra un número. Entonces se puede codificar el mensaje como una serie de números, cada uno de los cuales es una palabra. Obsérvese que al extraer el léxico se consigue un número de símbolos menor en general que el número de palabras; además, los símbolos (números) ocupan menos espacio que las palabras, en general. Por término medio una palabra en español ocupa 6 bytes así que el ahorro puede ser considerable.
    Se pide construir una clase adecuada para codificar mensajes (a partir del mensaje sin codificar y el diccionario) y decodificar mensajes (a partir del mensaje codificado y el diccionario). Obsérvese que ya sabemos extraer el diccionario correspondiente a cada mensaje sin codificar.
  3. Un grupo de alumnos decide crear su propio sistema cifrado de correos, basándose en el ejercicio anterior. Para ello, se forma un archivo general formado por mensajes de correo electrónico recibidos por los mencionados alumnos en el pasado año, y se extrae el léxico del mencionado archivo. Una vez obtenido el léxico, se emplea como diccionario. Cada palabra se representa mediante cuatro dígitos hexadecimales, así que la primera palabra es 0000 y la última es FFFF. Se pide construir el mencionado archivo a partir de léxicos generados por cada alumno, y demostrar la viabilidad del sistema. ¿Se obtienen compresiones reales? Considérese la posibilidad de dar a este programa una interfaz gráfica. El programa podría, incluso, efectuar directamente el envío por correo electrónico.
  4. Este ejercicio es más real de lo que parece. Se dispone del registro de un servidor web, que contiene la información relativa a todos los impactos habidos en ese servidor en los últimos tiempos. Esta información adopta normalmente la forma de archivos de texto, muy legibles desde Java o desde cualquier editor de textos. Se pide construir una clase dotada de los métodos necesarios para mostrar una relación de las direcciones Web web que aparecen en uno de estos archivos, indicando junto a cada dirección el número de solicitudes procedentes de la misma.
    Nota: Puede ser necesario emplear expresiones regulares para preprocesar los archivos antes de pegar su contenido en el programa.