Ejercicio C01 - Siempre quise tener un notepad-serializador (≧∇≦)
Consigna
Partir del ejercicio Siempre quise tener un notepad ಥ‿ಥ y sin modificar el diseño del formulario, crear un proyecto de biblioteca de clases llamado IO
y agregar los siguientes elementos:
Crear un nuevo tipo de excepción llamado
ArchivoIncorrectoException
.El método
ValidarSiExisteElArchivo
de la claseArchivo
comprobará que el archivo exista. Si existe retornarátrue
. De no existir, lanzará la excepciónArchivoIncorrectoException
con el mensaje "El archivo no se encontró.".El método
ValidarExtensión
validará que la extensión del archivo sea la que retorna la propiedad abstracta protegidaExtension
.- De no ser la extensión correcta, lanzará la excepción
ArchivoIncorrectoException
con el mensaje "El archivo no tiene la extensión [extensión].". Reemplazar el texto entre corchetes por la extensión que se esperaba.
- De no ser la extensión correcta, lanzará la excepción
Agregar la clase
PuntoJson
que herede deArchivo
.Extension
retornará .json.- Será genérica y tendrá un tipo genérico
T
que deberá ser un tipo de referencia.
Agregar la clase
PuntoXml
que herede deArchivo
.Extension
retornará .xml.- Será genérica y tendrá un tipo genérico
T
que deberá ser un tipo de referencia.
Agregar la clase
PuntoTxt
que herede deArchivo
.Extension
retornará .txt.
Automatizar pruebas unitarias que verifiquen que el método
ValidarExtension
funcione tal como se espera para cada una de las clases derivadas deArchivo
.- Probar tanto casos válidos (extensión correcta), como casos inválidos (extensión incorrecta).
Implementar la interfaz
IArchivo
enPuntoJson
yPuntoXml
usando el tipo genérico.- Los métodos de la clase
PuntoJson
serializarán y deserializarán el tipo genérico en formato JSON, mientras que en la clasePuntoXml
lo harán en formato XML.
- Los métodos de la clase
Implementar la interfaz
IArchivo
con el tipostring
.- Los métodos leerán y guardarán texto plano.
En los tres casos:
- El método
Guardar
comprobará que el archivo exista, en cuyo caso guardará el contenido en el archivo. - El método
GuardarComo
guardará el contenido en un nuevo archivo, sólamente comprobando que la extensión sea la correcta. - El método
Leer
comprobará que el archivo existe, en cuyo caso retornará su contenido. - Reutilizar código.
- El método
En el formulario, al ir a los menú de "Abrir" o "Guardar como...", el mismo cuadro de dialogo deberá ofrecer la posibilidad de abrir "Archivos de texto (.txt)", "Archivos JSON (.json)" o "Archivos XML (.xml)". Para esto, utilizar la propiedad
Filter
deOpenFileDialog
yCloseFileDialog
.Agregar atributos al formulario de tipo
PuntoJson
,PuntoXml
yPuntoTxt
.- Instanciarlos en el constructor del formulario.
- Los genéricos serán de tipo
string
.
En las funcionalidades existentes del formulario:
- Si la extensión del archivo es ".json", utilizar los métodos del atributo
PuntoJson
. - Si la extensión del archivo es ".xml", utilizar los métodos del atributo
PuntoXml
. - Si la extensión del archivo es ".txt", utilizar los métodos del atributo
PuntoTxt
.
- Si la extensión del archivo es ".json", utilizar los métodos del atributo
Realizar las modificaciones necesarias para que funcione correctamente.
Resolución
Video | Código |
---|