Está en la página 1de 4

Las Relaciones simples se declaran como privadas y se acceden desde la clase donde se declara la relacin con un mtodo, por

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.

Fig. La tabla de la imagen corresponde a la tabla ATENCION.


Esta imagen es para explicar lo que aparece cuando la clase Ficha le pasa informacin a la clase Atencin. Caso 1. Cuando Ficha le pasa slo la Fecha 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; para la Fecha [10-10-2010] [15-10-2010] [16-10-2010] respectivamente por cada iteracin del ciclo while en la clase FICHA. Pero la primera ocurrencia de [15-10-2010] corresponde al NUMRO_FICHA[2], MOTIVO[GRIPE], y la ficha nmero 2 corresponde al paciente Rut 11111111-1, por lo que en la segunda fila de la grilla dira 15-10-2010 GRIPE MED B 77777777-5 En vez de lo que si corresponde que es: 15-10-2010 EXAMEN

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

C:\Documents and Settings\Administrador\Escritorio\sol2java_g_a DB_solemne_Grupo_A.sql

Viernes, 09 de Diciembre de 2011 2:10

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-

C:\Documents and Settings\Administrador\Escritorio\sol2java_g_a DB_solemne_Grupo_A.sql

Viernes, 09 de Diciembre de 2011 2:10

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-

También podría gustarte