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
ValidarSiExisteElArchivode la claseArchivocomprobará que el archivo exista. Si existe retornarátrue. De no existir, lanzará la excepciónArchivoIncorrectoExceptioncon el mensaje "El archivo no se encontró.".El método
ValidarExtensiónvalidará 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
ArchivoIncorrectoExceptioncon 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
PuntoJsonque herede deArchivo.Extensionretornará .json.- Será genérica y tendrá un tipo genérico
Tque deberá ser un tipo de referencia.
Agregar la clase
PuntoXmlque herede deArchivo.Extensionretornará .xml.- Será genérica y tendrá un tipo genérico
Tque deberá ser un tipo de referencia.
Agregar la clase
PuntoTxtque herede deArchivo.Extensionretornará .txt.
Automatizar pruebas unitarias que verifiquen que el método
ValidarExtensionfuncione 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
IArchivoenPuntoJsonyPuntoXmlusando el tipo genérico.- Los métodos de la clase
PuntoJsonserializarán y deserializarán el tipo genérico en formato JSON, mientras que en la clasePuntoXmllo harán en formato XML.
- Los métodos de la clase
Implementar la interfaz
IArchivocon el tipostring.- Los métodos leerán y guardarán texto plano.
En los tres casos:
- El método
Guardarcomprobará que el archivo exista, en cuyo caso guardará el contenido en el archivo. - El método
GuardarComoguardará el contenido en un nuevo archivo, sólamente comprobando que la extensión sea la correcta. - El método
Leercomprobará 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
FilterdeOpenFileDialogyCloseFileDialog.Agregar atributos al formulario de tipo
PuntoJson,PuntoXmlyPuntoTxt.- 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 |
|---|