Está en la página 1de 20

DAOO

PRÁCTICA DE DISEÑO DE APLICACIONES


ORIENTADAS A OBJETOS

CURSO 2017/2018

CENTRO ASOCIADO DE SEVILLA


FERMÍN CRUZ MATA
FCRUZ@US.ES
Fechas de entrega

 Primera Convocatoria (examen de mayo-junio)

 Fecha límite para entrega: domingo 27 de mayo de 2018.

 Segunda Convocatoria (examen de Septiembre)

 A falta de confirmar por el equipo docente


 Se indicará en el foro de nuestro grupo de tutorías

 A través de la plataforma ALF


Material a entregar (I)

 Archivo .pdf con la siguiente información:


 Datos del alumno
 Nombre, apellidos, DNI, dirección de correo electrónico y teléfono.
 Respuestas a los apartados:
 Hay que responder en cada sección a todas las preguntas
planteadas, incluyendo los diagramas correspondientes.
 Anexo con el código de los distintos apartados.
Material a Entregar (II)

 Código
 El proyecto Eclipse con todo el código de los apartados de la
práctica.
 Se puede entregar un proyecto para cada apartado, o si se
prefiere un único proyecto que incluya el código de todos los
apartados.
 En caso de abordarse la integración completa de la práctica, se
debe generar un fichero JAR ejecutable.
 La entrega se hará mediante un único archivo
comprimido (.zip, .rar, …) que contendrá:
 Documentación en pdf descrita anteriormente
 Código
 (opcional) Archivo JAR ejecutable.
Enunciado

 Cuatro apartados obligatorios (hasta 7 puntos):


 Modelo Vista Controlador

 Patrón Abstract Factory / Factory Method

 Patrón State

 Patrón Observer

 Integración e implementación de interfaz gráfica


(opcional, hasta 3 puntos).
Enunciado

 Se deberán documentar todas aquellas decisiones no


especificadas en los requisitos
 Ejemplo: ¿Un DNI debe cumplir alguna restricción? Si se
decide implementarla, documentarlo.

 El código debe estar debidamente comentado.

 El programa deberá poder ejecutarse desde la


consola con el siguiente comando:
java –jar sigtv.jar
Enunciado

 Ejemplos en Java de los patrones anteriores (y del


resto de patrones que se estudian en la asignatura)
 El enlace está en el foro de nuestro Centro Asociado.
Cómo crear un jar ejecutable

 Eclipse: File -> Export -> Java -> runnable Jar file
Material de apoyo para interfaces gráficas

 En aLF existen vídeos de ayuda información sobre


cómo crear interfaces Swing.
 En general, se recomienda estudiar primero los
ejemplos del capítulo 11 del libro de la asignatura.
 Una vez estudiado el capítulo, consultar los documentos en
aLF para encontrar información sobre más componentes y
eventos que no aparecen en el libro.
Patrones

 Patrón Modelo-Vista-Controlador

 Modelo: datos a manipular. Diseño de tipos


 Vista: representación de la información en pantalla
 Interfaz gráfica
 Controlador: Lógica de la aplicación
 Actúa en función de las acciones del usuario sobre la vista

 En ocasiones, el controlador puede aparecer mezclado


con la vista o el modelo, sobretodo si la aplicación es
simple. Pero la vista debería siempre estar
compuesta por clases independientes de las del
modelo.
Patrones

 Patrón Factory Method


 Define una interfaz para crear un objeto, y delega en las
subclases la construcción del mismo usando una clase concreta
de implementación.
Patrones

 Patrón Abstract Factory


 Proporciona una interfaz para crear distintos objetos de una
misma familia sin especificar las clases concretas de
implementación.
Patrones

 Patrón State
 Permite que un objeto varíe su comportamiento (como si
cambiara su clase de implementación) cuando su estado
interno cambia.
Patrones

 Patrón Observer
 Define una dependencia de uno a muchos entre objetos de
manera que cuando un objeto cambia de estado, el resto de
objetos son notificados y se actualizan automáticamente con
respecto a los cambios del primero.
Gestión de fechas

 Si se usa Java 7 o anterior:


 Tipos Calendar y GregorianCalendar
 Construir un objeto con la fecha y hora actuales
Calendar hoy = Calendar.getInstance();
 Construir un objeto con una fecha y hora determinados
Calendar fecha1=new
GregorianCalendar(2015,Calendar.MAY,5);
Calendar fecha2=new
GregorianCalendar(2015,Calendar.MAY,5,20,00);
 Otras operaciones:
http://docs.oracle.com/javase/7/docs/api/java/util
/Calendar.html
Gestión de fechas

 Si se usa Java 8:
 Tipos LocalDate y LocalDateTime
 Construir un objeto con la fecha y hora actuales
LocalDate hoy = LocalDate.now();
LocalDateTime ahora = LocalDateTime.now();
 Construir un objeto con una fecha y hora determinados
LocalDate fecha1=LocalDate.of(2015,5,5);
LocalDateTime fecha2=
LocalDateTime.of(2015,5,5,20,00);
 Otras operaciones:
https://docs.oracle.com/javase/8/docs/api/java/tim
e/LocalDateTime.html
Lectura/Escritura de ficheros

 Para que un objeto se pueda guardar y recuperar de


un fichero, debe ser serializable. Esto es, su clase
debe implementar la interfaz Serializable.
 Además las clases de los atributos del tipo también
deben ser serializables.

public class Producto implements Serializable{



}
Lectura/Escritura de ficheros

 Para almacenar un objeto en un fichero:

try{
FileOutputStream fout =
new FileOutputStream("archivo.bin");
ObjectOutputStream oos =
new ObjectOutputStream(fout);
oos.writeObject(producto1);
oos.close();
}
catch(IOException e){
System.out.println("Error en la escritura.");
}
Lectura/Escritura de ficheros

 Para leer un objeto de un fichero:

try{
FileInputStream fin=
new FileInputStream("archivo.bin");
ObjectInputStream ois =
new ObjectInputStream(fin);
Producto p =(Producto)ois.readObject();
ois.close();
}
catch(Exception e){
System.out.println("Error en la lectura.");
}
 Para cualquier duda o cuestión:
 Foro del grupo de tutoría de Sevilla en la plataforma aLF

 Por correo electrónico

Fermín Cruz Mata


fcruz@us.es

También podría gustarte