Programación Orientada a Objetos(en Java) Proyecto Dr. Eric Jeltsch F. Editor de Citas Explicación general: Para este proyecto, Ud. deberá hacer una propuesta de solución, usando la POO como paradigma y el lenguaje Java como lenguaje de implementación. Problema: Entregar una propuesta que sistematice un editor de citas con sus respectivos autores. Esto es, tras conocer algunos autores y las citas que por lo general lo relacionan, poder hacer con ellas lo que usualmente se usa en base de datos, esto es, insertar nuevos autores y/o citas, borrar, etc…. Por ejemplo, se me ocurre que si hablamos de William Shakespeare, la cita que se me ocurre y lo asocia a él, es “ser o no ser”. U otra, que es de Arturo Prat, “muchachos la contienda es desigual.”, etc. He dado solamente dos ejemplos, a Ud. le corresponde ir completando el o los archivos. De manera que la consulta pueda hacerse en este estilo, tal como se muestra, con el fin de lograr el cometido Ud. deberá completar las siguientes clases. Clase Autor: Un objeto de esta clase describe al autor de la cita. Todo autor, deberá tener un nombre y opcionalmente, año de nacimiento y defunción (podría ser fecha, si lo desea.). Pero existen autores que desgraciadamente no guardan esa información, (ya sea fecha de nacimiento y/o de defunción, sin embargo el archivo debe mostrar esta situación de alguna manera, por ejemplo usando nº negativos, según sea el caso, por ejemplo. Clase Citas: Esta es la segunda clase que debe escribir. Un objeto de esta clase describe una cita, la que consiste de un autor (una referencia a un objeto Autor) y el texto actual de la cita. Si el texto es muy largo, puede continuar con una nueva línea, es decir, newline ('\n') para separarlas. Clase Basedatos: Esta es la tercera clase que Ud. debe escribir. Una Basedatos es la actual base dato. Ella contiene una lista de Citas y una lista de Autores. La lista de Autores debe incluir el autor de cada cita en la base de datos, en la implementación es suficiente declarar la base de datos como arreglos, cuyo límite máximo sea de 500, sobre el nº de autores y citas que pudiese almacenar en la base de datos. Otra opción es usar linked list, si desea intentarlo puede hacer uso de la clase Collection como Java API. Sin embargo, con esto es suficiente private Autor autores[] = new Autor[MAX_ARRAY_SIZE]; private Citas citas[] = new Citas[MAX_ARRAY_SIZE]; Clase Editor: Esta es la clase que proporciona un menú de texto que actúa como interface gráfica e interactúa con las otras clases. Notar que no se pide el uso de GUI. Sin embargo, esta propuesta puede ser válida si se considera como Proyecto B. Archivos I/O: La base dato de las citas es almacenado en dos archivos. Uno que contiene la información del autor, en donde cada autor ocupa tres líneas en el archivo, para el nombre, año de nacimiento (int) y año de deceso (int), llamado autores.txt. Y otro similar, pero que almacena las citas, llamado citas.txt. Obs.: Para el manejo de archivos I/O puede usar la clase hsa que se adjunta. La mayoría de las siguientes citas surgieron de visitar http://forums.cgsociety.org/archive/index.php/t-241241.html _________________________________________________________________________ Escuela Ingeniería en Computación, Universidad de La Serena. 1 Programación Orientada a Objetos(en Java) Proyecto Dr. Eric Jeltsch F. Interacción con el usuario: autores.txt Gabriela Mistral -1 -1 Pablo Picasso 1881 1973 Eric Jeltsch 1955 -1 Arturo Prat -1 1879 William Shakespeare 1564 1616 citas.txt William Shakespeare Ser o no ser. Arturo Prat Al abordaje muchachos. William Shakespeare Our remedies oft in ourselves do lie. William Shakespeare We know what we are, but know not what we may be. Farmer's Almanac To err is human, but to really foul things up requires a computer. Pablo Picasso Computers are useless. They can only give you answers. Aquí les muestro lo que aproximadamente me imagino como salida o interacción del usuario con el editor. Bienvenido al Programa Editor y Registro de citas.! 1: leer datos de archivo 2: escribir datos de archivo 3: agregar un autor 4: borrar un autor 5: editar un autor 6: buscar por palabra o frase 7: borrar una cita 8: agregar una cita 9: editar una cita 10: salir programa seleccione: 1 nombre del archivo de autores: autores.txt nombre del archive de citas: citas.txt 1: leer datos de archivo 2: escribir datos de archivo _________________________________________________________________________ Escuela Ingeniería en Computación, Universidad de La Serena. 2 Programación Orientada a Objetos(en Java) Proyecto Dr. Eric Jeltsch F. 3: agregar un autor 4: borrar un autor 5: editar un autor 6: buscar por palabra o frase 7: borrar una cita 8: agregar una cita 9: editar una cita 10: salir programa seleccione: 6 palabra clave o frase a buscar: sin sentido no existe match 1: leer datos de archivo 2: escribir datos de archivo 3: agregar un autor 4: borrar un autor 5: editar un autor 6: buscar por palabra o frase 7: borrar una cita 8: agregar una cita 9: editar una cita 10: salir programa seleccione: 6 palabra clave o frase a buscar: to err is human 0: To err is human, but to really foul things up requires a computer. Farmer's Almanac 1: leer datos de archivo 2: escribir datos de archivo 3: agregar un autor 4: borrar un autor 5: editar un autor 6: buscar por palabra o frase 7: borrar una cita 8: agregar una cita 9: editar una cita 10: salir programa seleccione: 6 palabra clave o frase a buscar: computer 0: Computers are useless. They can only give you answers. Pablo Picasso 1: To err is human, but to really foul things up requires a computer. Farmer's Almanac 1: leer datos de archivo 2: escribir datos de archivo 3: agregar un autor 4: borrar un autor 5: editar un autor 6: buscar por palabra o frase 7: borrar una cita 8: agregar una cita 9: editar una cita 10: salir programa seleccione: 7 indexacion de cita a borrar(desde la lista previa): 1 1: leer datos de archivo 2: escribir datos de archivo 3: agregar un autor 4: borrar un autor 5: editar un autor 6: buscar por palabra o frase 7: borrar una cita 8: agregar una cita _________________________________________________________________________ Escuela Ingeniería en Computación, Universidad de La Serena. 3 Programación Orientada a Objetos(en Java) Proyecto Dr. Eric Jeltsch F. 9: editar una cita 10: salir programa selection: 5 nombre autor a editar: Eric Jeltsch cambia nombre del autor? s Nuevo nombre: Pablo Neruda La fecha de nacimiento es recordada como 1910. la desea cambiar? s Ingrese nueva fecha de nacimiento: 1904 Este autor no tiene fecha de defunción registrada. Agregar fecha de deceso? S 1973 1: leer datos de archivo 2: escribir datos de archivo 3: agregar un autor 4: borrar un autor 5: editar un autor 6: buscar por palabra o frase 7: borrar una cita 8: agregar una cita 9: editar una cita 10: salir programa seleccione: 4 autor a borrar: William Shakespeare esta seguro que desea borrar el autor y sus citas? s William Shakespeare ha sido borrado 1: leer datos de archivo 2: escribir datos de archivo 3: agregar un autor 4: borrar un autor 5: editar un autor 6: buscar por palabra o frase 7: borrar una cita 8: agregar una cita 9: editar una cita 10: salir programa seleccione: 10 esta seguro que desea salir? s fin del Programa Sugerencias: Escriban y testeen las clases incrementalmente. Una forma de realizar esto es: Construir primeramente la clase Editor, considerando: // // // // // // // // // // // // // // Leer los enteros desde el teclado y descartar el resto. Leer datos desde un par de archivos de el archivo Basedatos. Escribir datos de Basedatos, en dos archivos. Hallar y desplegar todas las citas asociadas con la palabra o frase dada. Borrar un autor de la Basedatos. Agregar un autor a la Basedatos. Hacer los cambios a los datos de autor desde Basedatos. Agregar una cita a la Basedatos. Borrar una cita de la Basedatos. Hacer los cambios a los datos de cita desde Basedatos. El main principal. Despliega el menu, entrega la elección de los usuarios y llama los métodos apropiados para cada elección. Para imprimir el menu, dentro del main principal, public static void ImprimirMenu() { } // end ImprimirMenu _________________________________________________________________________ Escuela Ingeniería en Computación, Universidad de La Serena. 4 Programación Orientada a Objetos(en Java) Proyecto Dr. Eric Jeltsch F. Construir la clase Autor, considerando public class Author { private String nombre = "anonimo"; private int año_nac; private int año_def; private static final int ANO_DESCONOCIDO = -1; // // // // // // // Un constructor para inicializar. Otro constructor para autor vivo. Otro constructor para autor desconocido. También los métodos getNombre, setNombre, que retornan el nombre del autor y el otro que describe el nombre del autor a un nuevo valor, es decir a un nuevo nombre. Y así con los otros datos. Y por último leer datos de un autor desde un archivo de entrada. Construir la clase Citas, considerando public class Citas { // el texto de la cita private String text = "sin texto"; // el autor de la cita private Autor autor; //Constructor: creado para una cita con un texto especifico y autor. Cuyo //parámetro de ingreso debería ser el texto y el autor. // También los métodos getTexto, setTexto, que retornan el texto de la cita // y el otro que describe el texto de la cita a un nuevo valor.Y por último // leer datos de una cita desde un archivo de entrada. Construir la clase Basedatos, considerando que este archivo tiene todo el control sobre borrar, insertar datos de autor, citas, etc. Y además el de copiar los datos respectivos en los archivos dispuestos para tal objetivo. Otra posibilidad, apropósito de incremental es, escribir una versión minimal de las 3 clases y lo necesario para interactuar con una base de dato, la cual maneja dos archivos diferentes. _________________________________________________________________________ Escuela Ingeniería en Computación, Universidad de La Serena. 5