Académique Documents
Professionnel Documents
Culture Documents
ejemplo en Ficha: private Ficha xficha=new Ficha(); Public Ficha getFicha() { return this.xficha; }
OBSERVACIONES Las clases que heredan de persona, pueden implementar sus propios metodos get y set para [rut nomre - telefono]. El rombo junto a una clase indica que el collection o arraylist debe, ser implementado dentro de la clase a la que esta mas cercana y coleccionar, objetos del tipo de la clase ms lejana de la relacion de composicin donde aparece el rombo.(1 Ficha colecciona n Atenciones) Las colecciones deben tener implementados los metodos [addObj getObj countObj removeObj]. Las Relaciones simples se declaran como private Tipo var_nombre y se instancian en el constructos local de la clase que hace la relacion. En este caso, en Atencion se hace la relacion con Medico; si fuera a la inversa, Medico quedara en el aire, al obtener los datos desde Paciente. Los Tipos de Datos de las propiedades de las Clases, deben ser el equivalente al de su par en la base de datos, porque la hacer un dt.getTipo(campo) NO mostrar ningn tipo de error, pero si esto pasa en un Collection, los objetos no se coleccionaran, aun cuando se recorran n veces los objetos a coleccionar y su propiedades se llenen sin problema al mostrarlos con JOptionPane.showMessageDialog(null, cadena). Segn diagramas de clases del profesor, la primera propiedad simpre es la llave de entrada a esa clase. Las CLASES definen el comportamiento del Programa, NO el de la BASE DE DATOS.
MED A
55555555-5
Caso 2. Cuando Ficha le pasa el Motivo y Fecha (en este orden) a la clase ATENCION para el Rut de paciente 22222222-1, la clase asigna valores a sus propiedades de acuerdo a la primera ocurrencia de la condicin de bsqueda de la sentencia SQL donde se cumpla la coincidencia de Fecha y Motivo en el mismo registro; para la Fecha [10-10-2010] [15-10-2010] [16-10-2010] respectivamente por cada iteracin del ciclo while en la clase FICHA. En ste caso, la primera ocurrencia de [15-10-2010] agregando el filtro de Motivo corresponde al NUMRO_FICHA[1], MOTIVO[EXAMEN], y la ficha nmero 1 SI corresponde PRECISAMENTE al paciente Rut 11111111-1, por lo que en la segunda fila de la grilla dira: 15-10-2010 EXAMEN MED A 55555555-5 Lo que si estara bien. Anlisis En el caso de haber ms pacientes, es posible que an filtrando con Fecha y Motivo en la clase Atencin, no sean los correctos, ya que otros pacientes pueden consultar al mdico por el mismo motivo y el mismo da, pero poseer nmero de ficha diferente al ingresado en la aplicacin, no s si el profesor en su criterio de evaluacin lo tolerara, pero setFecha(String vfecha) podra recibir un segundo argumento desde la clase FICHA, segn yo sera el nmero de ficha, por lo que en ATENCION sera setFecha(String vfecha, int vnum_at) y la bsqueda de atenciones se filtrara por el nmero de ficha del paciente y la fecha. Por qu no solo el nmero de ficha? Porque coleccionaramos siempre la primera Atencin obtenida al ejecutar la sentencia SQL. Se podra buscar por otros criterios de acuerdo a los campos de la tabla ATENCION, pero hay que adaptarse al diagrama UML que define el comportamiento del programa. AHORA LA DB QUE USE
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
-- phpMyAdmin SQL Dump -- version 3.2.0.1 -- http://www.phpmyadmin.net -- Tiempo de generacin: 09-12-2011 a las 02:37:35 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; -- Base de datos: `sol2java_g_a` CREATE DATABASE `sol2java_g_a`; USE `sol2java_g_a`; -- --------------------------------------------------------- Estructura de tabla para la tabla `atencion` CREATE TABLE `atencion` ( `RUT_MEDICO` varchar(10) NOT NULL, `NUMERO_FICHA` int(11) NOT NULL, `MOTIVO` varchar(30) NOT NULL, `FECHA` varchar(10) NOT NULL, KEY `RUT_MEDICO` (`RUT_MEDICO`), KEY `NUMERO_FICHA` (`NUMERO_FICHA`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- Volcar la base de datos para la tabla `atencion` INSERT INTO `atencion` (`RUT_MEDICO`, `NUMERO_FICHA`, `MOTIVO`, `FECHA`) VALUES ('77777777-5', 1, 'RADRIOGRAFIA', '10-10-2010'), ('55555555-5', 2, 'ECOTOMOGRAFIA', '12-10-2010'), ('77777777-5', 2, 'GRIPE', '15-10-2010'), ('55555555-5', 1, 'EXAMEN', '15-10-2010'), ('77777777-5', 1, 'CONTROL', '16-10-2010'); -- --------------------------------------------------------- Estructura de tabla para la tabla `ficha` CREATE TABLE `ficha` ( `NUMERO_FICHA` int(11) NOT NULL, `RUT_PACIENTE` varchar(10) NOT NULL, PRIMARY KEY (`NUMERO_FICHA`), KEY `RUT_PACIENTE` (`RUT_PACIENTE`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- Volcar la base de datos para la tabla `ficha` INSERT INTO `ficha` (`NUMERO_FICHA`, `RUT_PACIENTE`) VALUES (1, '22222222-1'), (2, '11111111-1'); -- --------------------------------------------------------
-1-
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
-- Estructura de tabla para la tabla `medico` CREATE TABLE `medico` ( `RUT` varchar(10) NOT NULL, `NOMBRE` varchar(30) NOT NULL, `TELEFONO` varchar(16) NOT NULL, `ESPECIALIDAD` varchar(20) NOT NULL, PRIMARY KEY (`RUT`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- Volcar la base de datos para la tabla `medico` INSERT INTO `medico` (`RUT`, `NOMBRE`, `TELEFONO`, `ESPECIALIDAD`) VALUES ('55555555-5', 'MED A', '75555555', 'ESPECIAL A'), ('77777777-5', 'MED B', '77777777', 'ESPECIAL B'); -- --------------------------------------------------------- Estructura de tabla para la tabla `paciente` CREATE TABLE `paciente` ( `RUT` varchar(10) NOT NULL, `NOMBRE` varchar(30) NOT NULL, `TELEFONO` varchar(16) NOT NULL, `PREVISION` varchar(20) NOT NULL, PRIMARY KEY (`RUT`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- Volcar la base de datos para la tabla `paciente` INSERT INTO `paciente` (`RUT`, `NOMBRE`, `TELEFONO`, `PREVISION`) VALUES ('11111111-1', 'PAC 1', '71111111', 'PREV 1'), ('22222222-1', 'PAC 2', '72222222', 'PREV 2');
-2-