Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

ejercicios:unidad04 [2012/09/05 22:08]
admin [Ejercicio02]
ejercicios:unidad04 [2016/07/03 20:02] (actual)
Línea 3: Línea 3:
  
 En los ejercicios de esta unidad se van a usar la siguientes clases Java (entidades). En los ejercicios de esta unidad se van a usar la siguientes clases Java (entidades).
 +
 <uml> <uml>
-class Cliente +class Seguro 
-Cliente : int IdCliente +Seguro : int idSeguro 
-Cliente : String nombre +Seguro : NIF nif 
-Cliente : String ape1 +Seguro : String nombre 
-Cliente : String ape2 +Seguro : String ape1 
-Cliente Date fechaNacimiento +Seguro : String ape2 
-Cliente NIF nif +Seguro int edad 
-Cliente String telefonoFijo +Seguro Sexo sexo 
-Cliente String telefonoMovil +Seguro boolean casado 
-Cliente String correoElectronico +Seguro int numHijos 
-Cliente String comentario +Seguro boolean embarazada 
-Cliente Domicilio domicilio +Seguro Coberturas coberturas 
-Cliente Set<Cuenta> cuentas+Seguro Enfermedades enfermedades 
 +Seguro Date fechaCreacion
  
-class Cuenta +class Coberturas 
-Cuenta int idCuenta +Coberturas boolean oftalmologia 
-Cuenta CodigoCuentaCliente ccc +Coberturas boolean dental 
-Cuenta BigDecimal saldo +Coberturas boolean fecundacionInVitro
-Cuenta : Set<Cliente> titulares +
-Cuenta : List<Movimiento> movimientos+
  
-class Domicilio     +class Enfermedades 
-Domicilio int idDomicilio +Enfermedadesboolean corazon 
-Domicilio TipoVia tipoVia +Enfermedadesboolean estomacal 
-Domicilio String nombreVia +Enfermedadesboolean rinyones 
-Domicilio String numero +Enfermedadesboolean alergia 
-Domicilio : String puerta +Enfermedades: String nombreAlergia
-Domicilio : String poblacion +
-Domicilio : String provincia +
-Domicilio : String codigoPostal+
  
-class Movimiento +class NIF 
-Movimiento int idMovimiento +NIF:nif
-Movimiento : TipoMovimiento tipoMovimiento +
-Movimiento : BigDecimal importe +
-Movimiento : Date fecha +
-Movimiento : String descripcion+
  
 +class Sexo <<Enumeration>>
 +Sexo : Hombre
 +Sexo : Mujer
  
-class NIF +class AsistenciaMedica  
-NIF nif+AsistenciaMedicaint idAsistenciaMedica 
 +AsistenciaMedica: Seguro seguro 
 +AsistenciaMedica: String breveDescripcion 
 +AsistenciaMedica: String lugar 
 +AsistenciaMedica: String explicacion 
 +AsistenciaMedica: TipoAsistencia tipoAsistencia 
 +AsistenciaMedica: Date fecha 
 +AsistenciaMedica: Date hora 
 +AsistenciaMedica: BigDecimal importe
  
-class TipoMovimiento <<Enumeration>> +class TipoAsistencia <<Enumeration>> 
-TipoMovimiento Debe +TipoAsistencia Hospitalaria 
-TipoMovimiento Haber+TipoAsistencia Ambulatoria 
 +TipoAsistencia : CentroSalud 
 +TipoAsistencia : Domiciliaria
  
-class CodigoCuentaCliente +Coberturas  "1"-"1" Seguro 
-CodigoCuentaCliente : ccc+NIF  "1"--"1" Seguro 
 +Sexo "1" -- "*" Seguro 
 +Seguro "1"-"1" Enfermedades
  
-class TipoVia <<Enumeration>> 
-TipoVia : Calle 
-TipoVia : Avenida 
-TipoVia : Plaza 
-TipoVia : Carretera 
  
-NIF "1" - "1" Cliente +Seguro "1"--"*" AsistenciaMedica
-Cliente "1" "1" Domicilio +
-Domicilio "*" - "1" TipoVia +
-Cliente "*" -- "*" Cuenta +
-CodigoCuentaCliente "1" - "1" Cuenta +
-Cuenta "1" -- "*" Movimiento +
-Movimiento "*" - "1" TipoMovimiento+
  
 +AsistenciaMedica "*" - "1" TipoAsistencia
 </uml> </uml>
  
 El modelo de tablas asociado a las entidades es el siguiente: El modelo de tablas asociado a las entidades es el siguiente:
 +
 <uml> <uml>
-class Cliente <<Table>> +class Seguro <<Table>> 
-Cliente : INTEGER idCliente +Seguro : INTEGER idSeguro 
-Cliente : VARCHAR nombre +Seguro : VARCHAR nif 
-Cliente : VARCHAR ape1 +Seguro : VARCHAR nombre 
-Cliente : VARCHAR ape2 +Seguro : VARCHAR ape1 
-Cliente DATETIME fechaNacimiento +Seguro : VARCHAR ape2 
-Cliente VARCHAR nif +Seguro INTEGER edad 
-Cliente VARCHAR telefonoFijo +Seguro INTEGER sexo 
-Cliente VARCHAR telefonoMovil +Seguro TINYINT casado 
-Cliente : VARCHAR correoElectronico +Seguro INTEGER numHijos 
-Cliente TEXT comentario +Seguro : TINYINT embarazada 
 +Seguro : TINYINT oftalmologia 
 +Seguro : TINYINT dental 
 +Seguro : TINYINT fecundacionInVitro 
 +Seguro : TINYINT corazon 
 +Seguro : TINYINT estomacal 
 +Seguro : TINYINT rinyones 
 +Seguro : TINYINT alergia 
 +Seguro : VARCHAR nombreAlergia 
 +Seguro TIMESTAMP fechaCreacion
  
-class Cuenta <<Table>> +class AsistenciaMedica <<Table>> 
-Cuenta : INTEGER idCuenta +AsistenciaMedica  INTEGER IdAsistenciaMedica 
-Cuenta : VARCHAR ccc +AsistenciaMedica  INTEGER IdSeguro 
-Cuenta : DECIMAL saldo +AsistenciaMedica  VARCHAR breveDescripcion 
- +AsistenciaMedica  VARCHAR lugar 
-class Domicilio <<Table>>     +AsistenciaMedica  TEXT explicacion 
-Domicilio : INTEGER idDomicilio +AsistenciaMedica  VARCHAR TipoAsistencia 
-Domicilio : INTEGER tipoVia +AsistenciaMedica  DATE fecha 
-Domicilio : VARCHAR nombreVia +AsistenciaMedica  TIME hora 
-Domicilio : VARCHAR numero +AsistenciaMedica  DECIMAL(10,2) importe 
-Domicilio VARCHAR puerta +AsistenciaMedica  INTEGER idx
-Domicilio : VARCHAR poblacion +
-Domicilio VARCHAR provincia +
-Domicilio VARCHAR codigoPostal +
- +
-class Movimiento <<Table>> +
-Movimiento : INTEGER idMovimiento +
-Movimiento : INTEGER tipoMovimiento +
-Movimiento : DECIMAL importe +
-Movimiento DATETIME fecha +
-Movimiento : VARCHAR descripcion +
- +
-class ClienteCuenta +
-ClienteCuenta : idCliente +
-ClienteCuenta : idCuenta +
- +
-Cliente "1" - "1" Domicilio +
-Cliente "1" -- "*" ClienteCuenta +
-ClienteCuenta "*" -- "1" Cuenta +
-Cuenta "1" -- "*" Movimiento+
  
 +Seguro "1" -- "*" AsistenciaMedica 
 </uml> </uml>
- 
- 
 ===== Ejercicio01 ===== ===== Ejercicio01 =====
 Modifica el **Ejercicio01** de la unidad anterior para incluir las siguientes tareas: Modifica el **Ejercicio01** de la unidad anterior para incluir las siguientes tareas:
-  * Crea el enumerado TipoVia + 
-  * Crea el enumerado TipoMovimiento +Siguiendo el diagrama de clases Java anterior: 
-  * Crea la clase NIF +  * Crea el enumerado ''TipoAsistencia'' y sus valores 
-  * Crea la clase CodigoCuentaCliente +  * Crea el enumerado ''Sexo'' y sus valores 
-  * Añade a la clase ''Domicilio'' la propiedad ''tipoVia'' +  * Crea la clase ''NIF'' , su propiedad  y los métodos //get/set// 
-  * Añade a la clase ''Movimiento'' la propiedad ''tipoMovimiento'' +  * Crea la clase ''Coberturas'' , sus propiedades y los métodos //get/set// 
-  * En la clase ''Cliente'' haz que la propiedad ''nif'' sea del tipo ''NIF'' pero que en Hibernate sea un componente en vez de una nueva entidad. +  * Crea la clase ''Enfermedades'' , sus propiedades y los métodos //get/set// 
-  * En la clase ''Cuenta'' haz que la propiedad ''ccc'' sea del tipo ''CodigoCuentaCliente'' pero que en Hibernate sea un componente en vez de una nueva entidad+  * Modifica la clase ''Seguro'' para incluir las nuevas propiedades y los nuevos métodos //get/set// 
-  * Modifica las clases ''Movimiento'' y ''Domicilio'' para que Hibernate genere automáticamente las claves primarias haciendo un SELECT MAX() para obtener la nueva clave primaria+  * En la clase ''Seguro'' haz que la propiedad ''nif'' sea del tipo ''NIF'' pero que en Hibernate sea un componente en vez de una nueva entidad. 
-  * Modifica también las clases ''Cliente'' ''Domicilio'' para que se genere también automáticamente la clave primaria pero teniendo en cuenta que la clave primaria de una clase **siempre** debe ser igual a la de la otra+  * Haz que las propiedades ''enfermedades'' ''coberturas'' sean componentes de la clase ''Seguro''. 
-  * Haz que en la propiedad ''fechaNacimiento'' de la clase ''Cliente'' solo se guarde la fecha y **no** la hora+  * Modifica la clase ''AsistenciaMedica'' para incluir las nuevas propiedades y los nuevos métodos //get/set// 
-  * Haz que en la propiedad ''comentario'' de la clase ''Cliente'' se puedan guardar más de 255 caracteres.+  * Modifica la configuración de Hibernate de las clases ''Seguro'' y ''AsistenciaMedica'' para indicar a Hibernate que la base de datos genera automáticamente las claves primarias usando un autonumérico
 +  * Haz que en la propiedad ''fecha'' de la clase ''AsistenciaMedica'' solo se guarde la fecha y **no** la hora
 +  * Haz que en la propiedad ''hora'' de la clase ''AsistenciaMedica'' solo se guarde la hora y **no** la fecha
 +  * Haz que en la propiedad ''explicacion'' de la clase ''AsistenciaMedica'' se puedan guardar más de 255 caracteres
 +  * Haz que en la propiedad ''importe'' de la clase ''AsistenciaMedica'' se guarde como un ''BigDecimal''. 
 +  * Al configurar los enumerados ten en cuenta el tipo de datos que se ha definido en la base de datos.
  
 Para ello usa los ficheros "''.hbm.xml''" de Hibernate. Para ello usa los ficheros "''.hbm.xml''" de Hibernate.
Línea 136: Línea 129:
 La clase ''Main'' deberá incluir el siguiente código de creación de los distintos objetos: La clase ''Main'' deberá incluir el siguiente código de creación de los distintos objetos:
 <code java 1> <code java 1>
-        Cliente cliente1 = new Cliente("Sara", ";Ortega";"Martínez", new Date()new NIF("23454345Z"), "963654567", "626345765", "saraortega@gmail.com", "La diractora de la sucursal", new Domicilio(TipoVia.Avenida"Avenidad Tres Forques""56""9""Morella""Castellon""12300")); +SimpleDateFormat sdfFecha=new SimpleDateFormat("dd/MM/yyyy"); 
-        Cliente cliente2 = new Cliente("Marcos", "Tortosa", "Oltra", new Date()new NIF("76567654X"), "963346578", "626678345", "mtortosa@gmail.com", ";Sin comentarios", new Domicilio(TipoVia.Calle, "Calle San Juan", "4", "1", "Torrente", "Valencia", "46011")); +sdfFecha.setLenient(false); 
-        Cuenta cuenta = new Cuenta(new CodigoCuentaCliente("56783456123454698045"), new BigDecimal("30000")); +SimpleDateFormat sdfHora=new SimpleDateFormat("HH:mm:ss"); 
-        cuenta.getTitulares().add(cliente1); +sdfHora.setLenient(false)
-        cuenta.getTitulares().add(cliente2); +Seguro seguro = new Seguro(new Nif("36254784E"), "Rosa", "Ramirez", "Arellano", 41, Sexo.Mujer, true, 1, false, new Coberturas(falsetruefalse)new Enfermedades(truefalsetruefalse, null), new Date()); 
-        cuenta.getMovimientos().add(new Movimiento(TipoMovimiento.Haber, new BigDecimal("12000"), new Date(), "Pagar el coche")); +AsistenciaMedica asistenciaMedica1 = new AsistenciaMedica(seguro, "Golpe en el brazo", "Madrid", "Fractura del radio derecho de la mano debido a golpe contundente con el suelo. Se escayola el brazo", TipoAsistencia.HospitalariasdfFecha.parse("31/12/2013"),sdfHora.parse("11:21:45")new BigDecimal("700.31")); 
-        cuenta.getMovimientos().add(new Movimiento(TipoMovimiento.Debe,new BigDecimal("1500"), new Date(), "Ingreso nómina")); +AsistenciaMedica asistenciaMedica2 = new AsistenciaMedica(seguro, "Fiebre alta", "Alzira", "El paciente presenta cuadro alto de fiabre con deficultad para respirar. Se recetan antibioticos.", TipoAsistencia.AmbulatoriasdfFecha.parse("27/02/2013")sdfHora.parse("12:34:16"), new BigDecimal("81.14")); 
 +seguro.getAsistenciasMedicas().add(asistenciaMedica1); 
 +seguro.getAsistenciasMedicas().add(asistenciaMedica2);
 </code> </code>
  
-Ahora añade a la clase ''Main'' el código de hibernate necesario para que al guardar el objeto ''cuenta'' se guarde todo en la base de datos. +Ahora añade a la clase ''Main'' el código de hibernate necesario para que al guardar el objeto ''seguro'' se guarde todo en la base de datos.
- +
 ===== Ejercicio02 ===== ===== Ejercicio02 =====
 Modifica el **Ejercicio02** de la unidad anterior para incluir las siguientes tareas: Modifica el **Ejercicio02** de la unidad anterior para incluir las siguientes tareas:
-  * Crea el enumerado TipoVia + 
-  * Crea el enumerado TipoMovimiento +Siguiendo el diagrama de clases Java anterior: 
-  * Crea la clase NIF +  * Crea el enumerado ''TipoAsistencia'' y sus valores 
-  * Crea la clase CodigoCuentaCliente +  * Crea el enumerado ''Sexo'' y sus valores 
-  * Añade a la clase ''Domicilio'' la propiedad ''tipoVia'' +  * Crea la clase ''NIF'' , su propiedad  y los métodos //get/set// 
-  * Añade a la clase ''Movimiento'' la propiedad ''tipoMovimiento'' +  * Crea la clase ''Coberturas'' , sus propiedades y los métodos //get/set// 
-  * En la clase ''Cliente'' haz que la propiedad ''nif'' sea del tipo ''NIF'' pero que en Hibernate sea un componente en vez de una nueva entidad. +  * Crea la clase ''Enfermedades'' , sus propiedades y los métodos //get/set// 
-  * En la clase ''Cuenta'' haz que la propiedad ''ccc'' sea del tipo ''CodigoCuentaCliente'' pero que en Hibernate sea un componente en vez de una nueva entidad+  * Modifica la clase ''Seguro'' para incluir las nuevas propiedades y los nuevos métodos //get/set// 
-  * Modifica las clases ''Movimiento'' y ''Domicilio'' para que Hibernate genere automáticamente las claves primarias haciendo un SELECT MAX() para obtener la nueva clave primaria+  * En la clase ''Seguro'' haz que la propiedad ''nif'' sea del tipo ''NIF'' pero que en Hibernate sea un componente en vez de una nueva entidad. 
-  * Modifica también las clases ''Cliente'' ''Domicilio'' para que se genere también automáticamente la clave primaria pero teniendo en cuenta que la clave primaria de una clase **siempre** debe ser igual a la de la otra+  * Haz que las propiedades ''enfermedades'' ''coberturas'' sean componentes de la clase ''Seguro''. 
-  * Haz que en la propiedad ''fechaNacimiento'' de la clase ''Cliente'' sólo se guarde la fecha y **no** la hora+  * Modifica la clase ''AsistenciaMedica'' para incluir las nuevas propiedades y los nuevos métodos //get/set// 
-  * Haz que en la propiedad ''comentario'' de la clase ''Cliente'' se puedan guardar más de 255 caracteres.+  * Modifica la configuración de Hibernate de las clases ''Seguro'' y ''AsistenciaMedica'' para indicar a Hibernate que la base de datos genera automáticamente las claves primarias usando un autonumérico
 +  * Haz que en la propiedad ''fecha'' de la clase ''AsistenciaMedica'' solo se guarde la fecha y **no** la hora
 +  * Haz que en la propiedad ''hora'' de la clase ''AsistenciaMedica'' solo se guarde la hora y **no** la fecha
 +  * Haz que en la propiedad ''explicacion'' de la clase ''AsistenciaMedica'' se puedan guardar más de 255 caracteres
 +  * Haz que en la propiedad ''importe'' de la clase ''AsistenciaMedica'' se guarde como un ''BigDecimal''. 
 +  * Al configurar los enumerados ten en cuenta el tipo de datos que se ha definido en la base de datos.
  
 Para ello usa las anotaciones de JPA. Para ello usa las anotaciones de JPA.
Línea 168: Línea 165:
 La clase ''Main'' deberá incluir el siguiente código de creación de los distintos objetos: La clase ''Main'' deberá incluir el siguiente código de creación de los distintos objetos:
 <code java 1> <code java 1>
-        Cliente cliente1 = new Cliente("Rosa", ";Vivó";"Cano", new Date()new NIF("45698765Z"), "963459807", "626456765", "rvivo@gmail.com", "La asesora fiscal", new Domicilio(TipoVia.Avenida"Avenidad de los naranjos""67""76""Valencia", "Valencia", "46056")); +SimpleDateFormat sdfFecha=new SimpleDateFormat("dd/MM/yyyy"); 
-        Cliente cliente2 = new Cliente("Elias", "Rubio", "Muñoz", new Date()new NIF("23098765X"), "963345654", "626198234", "erubio@gmail.com", ";El peluquero", new Domicilio(TipoVia.Calle, "Calle Calvo Sotelo", "56", "23", "Requena", "Valencia", "46023")); +sdfFecha.setLenient(false); 
-        Cuenta cuenta = new Cuenta(new CodigoCuentaCliente("34568768983456767898"), new BigDecimal("5000")); +SimpleDateFormat sdfHora=new SimpleDateFormat("HH:mm:ss"); 
-        cuenta.getTitulares().add(cliente1); +sdfHora.setLenient(false)
-        cuenta.getTitulares().add(cliente2); +Seguro seguro = new Seguro(new Nif("48573562T"), "Sara", "Tomas", "Martínez", 31, Sexo.Mujer, true, 1, true, new Coberturas(truetruetrue)new Enfermedades(falsetrue, false, true, "Acaros")new Date()); 
-        cuenta.getMovimientos().add(new Movimiento(TipoMovimiento.Haber, new BigDecimal("1500"), new Date(), "Ingreso la nómina")); +AsistenciaMedica asistenciaMedica1 = new AsistenciaMedica(seguro, "Operación de miopía", "Barcelona", "El paciente es operado de miopía en los dos ojos.", TipoAsistencia.HospitalariasdfFecha.parse("18/04/2013"),sdfHora.parse("08:30:00")new BigDecimal("10400.20")); 
-        cuenta.getMovimientos().add(new Movimiento(TipoMovimiento.Debe,new BigDecimal("23"), new Date(), "Recibo del Agua"));+AsistenciaMedica asistenciaMedica2 = new AsistenciaMedica(seguro, "Analisis de alergia", "Alzira", "Se realizan analisis de sangre para determinar el tipo de alergia que padece el paciente.", TipoAsistencia.AmbulatoriasdfFecha.parse("12/02/2012")sdfHora.parse("18:30:00"), new BigDecimal("31.15")); 
 +seguro.getAsistenciasMedicas().add(asistenciaMedica1); 
 +seguro.getAsistenciasMedicas().add(asistenciaMedica2);
 </code> </code>
  
-Ahora añade a la clase ''Main'' el código de hibernate necesario para que al guardar el objeto ''cuenta'' se guarde todo en la base de datos.+Ahora añade a la clase ''Main'' el código de hibernate necesario para que al guardar el objeto ''seguro'' se guarde todo en la base de datos.
ejercicios/unidad04.1346875687.txt.gz · Última modificación: 2016/07/03 20:16 (editor externo)
Ir hasta arriba
CC Attribution-Noncommercial-Share Alike 3.0 Unported
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0