Otra propuesta de Proyecto.

Anuncio
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
Descargar