Entregable 2
Entregable 2
Entregable 2
Objetivo
Aplicar las colecciones y archivos como medio de almacenamiento de datos, tanto en memoria como
en medios de almacenamiento. Implementar hilos de ejecución en tareas de pseudoparalelismo.
Preámbulo
Refiriéndonos a colecciones existen 3 grandes grupos de categorías: los arreglos los cuales nos
permiten almacenar secuencialmente objetos de todo tipo y hacer operaciones de agregado,
actualizado y eliminado, permitiendo tener valores duplicados. Los sets que tienen la misma filosofía
que los arreglos, salvo la diferencia de no permitir valores duplicados, y los diccionarios, que permiten
asociar al valor del elemento con un campo llave, permitiendo operaciones específicas de
almacenamiento - relación.
Por otro lado tenemos a la escritura de archivos, que puede ser textual o binaria, para la escritura
binaria precisamos que el objeto esté ordenado y eso lo logramos serializándolo. Los hilos de
ejecución son entendidos como procesos ligeros cuyo principal uso es el dividir operaciones con gran
carga al procesador en subtareas con el propósito de no mermar al hilo principal y que este no pueda
seguir atendiendo peticiones por parte del usuario.
Desarrollo
Seguro haz escuchado la famosa fábula de Esopo “la liebre y la tortuga”, vamos a implementarla con
algunas mejoras.
1 Crea una nueva solución de consola. Programa la siguiente clase, no omitas los constructores ni
los getters y setters como propiedades. La clase debe estar serializada.
2 En el método principal del proyecto, programa un método que sea capaz de leer mediante un
stream un archivo binario y depositarlo en un buffer de 256 bytes (byte[ ]). Tu método luego debe
tomar ese buffer de bytes y convertirlo en objeto.
3 Copia los datos que aparecen al final de esta práctica (no omitas ni agregues caracteres y cuida los
espacios en blanco) y dirígete al sitio https://base64.guru/converter/decode/file.
Copia la cadena base 64 en el área de texto. Decodifica el texto subido y guarda el archivo resultante.
Repite la operación para cada conjunto de datos. Al final deberás tener tres archivos binarios.
4 COLECCIONES. Crea un objeto de tipo ArrayList y agrégale tres instancias del tipo animal. Primero
tienes que crear tres objetos de tipo Animal e instanciarlos mediante la lectura de los datos
almacenados en los archivos binarios. Usa tus métodos programados anteriormente.
En algún momento de la carrera deberás evaluar si el animal se duerme, si esto sucede lo dormirás
10 veces su velocidad, debes notificar en pantalla que dicho animal se ha dormido. Luego de
transcurrido ese tiempo, el animal despertará (también lo debes notificar) y continuará con la carrera.
Cuando un animal llegué a la meta primero, deberás notificar que dicho animal ganó la carrera.
Apóyate con banderas booleanas si lo precisas. Toma capturas de pantalla y llena tu reporte
empleando el formato de entrega de prácticas.
7 ANIMAL EXTRA. Modifica el programa. Ahora emplea al segundo y tercer animal de tu ArrayList,
fíjate que sucedió, de igual manera toma evidencia de los resultados obtenidos y llena tu reporte.
ANIMAL 1
AAEAAAD/////AQAAAAAAAAAMAgAAAE90ZXN0U2VyaWFsaXphY2lvbiwgVmVyc2lvbj0xLjAuNzU5O
S4zNDUxNSwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsBQEAAAAYdGVzdFN
lcmlhbGl6YWNpb24uQW5pbWFsAwAAAAZub21icmUJdmVsb2NpZGFkCHNlRHVlcm1lAQAACAECA
AAABgMAAAAHVG9ydHVnYRQAAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
ANIMAL 2
AAEAAAD/////AQAAAAAAAAAMAgAAAE90ZXN0U2VyaWFsaXphY2lvbiwgVmVyc2lvbj0xLjAuNzU5O
S4zNDUwMiwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsBQEAAAAYdGVzdFN
lcmlhbGl6YWNpb24uQW5pbWFsAwAAAAZub21icmUJdmVsb2NpZGFkCHNlRHVlcm1lAQAACAECA
AAABgMAAAAGTGllYnJlMgAAAAELAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
ANIMAL 3
AAEAAAD/////AQAAAAAAAAAMAgAAAE90ZXN0U2VyaWFsaXphY2lvbiwgVmVyc2lvbj0xLjAuNzU5O
S4zNDU2MCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsBQEAAAAYdGVzdF
NlcmlhbGl6YWNpb24uQW5pbWFsAwAAAAZub21icmUJdmVsb2NpZGFkCHNlRHVlcm1lAQAACAEC
AAAABgMAAAAgTmluamEgVG9ydHVnYSBBZG9sZWNlbnRlIE11dGFudGVQAAAAAQsAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==