You are on page 1of 77

2.

OBJETIVOS DEL PROYECTO. Los objetivos del proyecto realizado han sido varios. En resumidas palabras podemos decir que la idea ha sido crear un aplicativo riguroso para una empresa siguiendo los pasos principales de la Ingeniera de Software. Todo esto conlleva a la creacin de una documentacin y un estudio de los requisitos del aplicativo, un anlisis del aplicativo y un diseo del aplicativo. Un segundo objetivo ha sido la creacin de una interfaz de usuario robusta y clara que facilite al usuario el uso de dicho aplicativo. Un tercer objetivo a sido ver que un aplicativo con una misma interfaz de usuario puede estar implementada de diferentes maneras y ver las principales diferencias entre ellas, en este caso el aplicativo se ha desarrollado con tecnologa Java 1.4 usando la librera de Java SWING que es la librera de componentes visuales ms nueva que proporciona Java hasta el momento y la otra manera de implementarlo a sido usando JDBC. Como parte innovadora y de investigacin uno de los objetivos a sido la conexin de la interfaz de usuario del aplicativo usando JDBC que es el acrnimo de Java Database Connectivity, un API que permite la ejecucin de operaciones sobre bases de datos desde el lenguaje de programacin Java utilizando el dialecto SQL. Para la conectividad se ha usado un driver de Apache SQL. En resumen lo que se ha intentado con este proyecto a sido abarcar una serie de conocimientos adquiridos con las diferentes asignaturas (como Programacin 1 y 2, Lenguajes de Programacin, Bases de Datos, Ingeniera de Software y Gestin de la Informtica de la carrera de Ingeniera Informtica de Gestin).

3.

ESPECIFICACIN DEL PROYECTO. El tema del proyecto realizado ha sido la implementacin de un aplicativo Java orientado a objetos y en JDBC en el que se implementa el comportamiento de una agencia de transportes de personas. Gracias a la nueva construccin de una Terminal de transporte con pistas de avin, comunicada por autobs y tren en las afueras de Tarragona una conocida empresa de transportes de Tarragona nos a pedido la realizacin de un aplicativo para la venta de billetes, esta agencia dispone de varias pistas de aterrizaje y un tren que va desde dicha Terminal a las ciudades ms importantes de Tarragona (Reus, Tarragona, etc.) La agencia tambin dispone de un servicio de autobs para todos estos clientes ya que es ms econmico que el tren pero algo ms lento. La agencia de transportes la llamaremos Agencia de Transportes URV. En esta agencia se desarrolla una actividad de transporte de personas de un origen a un destino. La agencia dispone de dos tipos de personal el encargado y el vendedor, el encargado es la persona que se hace cargo de las altas, bajas y modificaciones de transportes que ofrece la agencia a los clientes. El encargado tambin dispone de la posibilidad de consultar los datos de una persona en concreto mediante un identificador nico de cada cliente, el resultado de esta consulta ser una lista con los datos del cliente y los viajes que ha realizado con la Agencia de Transportes URV. El vendedor es la persona que se encarga de la venta de billetes, as como de dar informacin a los clientes de los viajes disponibles en la agencia, y el vendedor tiene autorizacin para dar de alta a los clientes, modificar sus datos e incluso dar de baja de la agencia a clientes. El vendedor en todo momento puede obtener una lista de todos los clientes de la agencia. Por ltimo el cliente tambin participa en el uso del aplicativo mediante unos cajeros informatizados donde el cliente podr comprar los billetes que a l le interese sin tener que pasar por cola todo ello de forma automatizada. Los clientes podrn darse de alta pero en ningn momento modificar sus datos ni darse de baja. Todo cliente podr consultar los transportes disponibles de la agencia introduciendo un origen y un destino adems de poder comprar un billete introduciendo su identificador y el cdigo de transporte que desea Los datos que interesan a la agencia de transportes son los siguientes, de cada cliente interesa saber su DNI, su nombre y apellidos su fecha de nacimiento y los kilmetros que ha realizado en la agencia. Los datos de inters de un transporte son: el cdigo de transporte, el origen, el destino, la distancia, el precio del billete y el tipo de transporte; en este caso la agencia dispone de la venta de billetes de autobs, tren, y avin. La agencia nos ha pedido un aplicativo que permita la persistencia de datos y el control de todo el flujo de informacin comentado anteriormente.

DOCUMENTACIN DE REQUISITOS. 4. 4.1. DISEO. CONTEXTO DEL APLICATIVO. 4.1.1. Concepto de documentacin de requisitos.

Concepto: Decimos que los requisitos son la especificacin de aquello que tiene que hacer el aplicativo final o programario, son descripciones del comportamiento, propiedades y restricciones, todo esto nos tiene que ayudar a formar una idea clara del producto final. Hay que decir que la fuente de los datos de los requisitos son las entrevistas con los usuarios finales del aplicativo as como documentaciones ya existentes y sistemas parecidos. La documentacin de requisitos pretende servir como la base de un acuerdo entre el cliente que pide el aplicativo y los desarrolladores. En conclusin la parte de requisitos ha de ser un documento que puedan entender los clientes, ya que son ellos los que tendrn que revisar el documento. Una pequea dificultad aadida para los desarrolladores es que muchas veces no conocen la actividad de la empresa de la cual han de desarrollar el aplicativo, cosa que hace ms difcil entender las peticiones del cliente. Para ello existen unas tcnicas de recogida de informacin.

Principalmente observar a los usuarios desarrollando su trabajo, escucharlos y hablar con ellos ya que de esta manera podemos estar seguros de que no se nos escapa nada importante ya que gran parte de la informacin que para el desarrollador es importante puede no serlo para el cliente. Entrevistar a los usuarios con el fin de obtener mucha ms informacin como quien hace una tarea concreta, con que frecuencia se hace y con que dificultades se encuentran en su trabajo. Una tcnica importante es la recogida de documentos y listados de la empresa, ya que pueden ser con datos reales o datos ficticios para respetar la privacidad de la empresa. Estos documentos son importantes ya que en ellos estn representados los datos que se consideran ms importantes. Las visitas es una parte importante dentro de los requisitos y hay que planificarlas bien y definir bien cual es el objetivo de la visita y ante todo elegir representantes que realmente usen el aplicativo final.

La planificacin temporal es una de las partes ms espinosas ya que el cliente en algunos casos le gustara tener el producto lo antes posible y muchas veces durante el periodo de visitas y prueba se hacen falsas ideas del aplicativo ya que no es el resultado final. Muchas veces hay retrasos ya que puede ser que un programador se retire del proyecto o puede haber retrasos por muchas causas. 3

Por lo tanto podemos observar que el desarrollo de un aplicativo no es nada trivial, depende de muchos factores. 4.1.2. Modelo del dominio.

En principio sabemos que en el modelo del dominio se identifican las clases que corresponden a cosas del mundo real donde tiene lugar la actividad de la empresa y estas clases son: Cliente, Transporte y Viaje

4.1.3. 4.1.3.1.

Modelo del negocio. Diagrama de clases del negocio.

En el modelo del negocio introduciremos las clases en las cuales se maneja informacin referente al negocio partiendo de una informacin muy superficial se identifican y se describen las principales clases que son: Cliente, Transporte, Viaje, e Histrico. En este diagrama las clases llevan las funciones principales sin atributos, no es necesario poner los atributos ya que este diagrama no se usara para el desarrollo del aplicativo

4.1.3.2.

Casos de Uso del negocio.

Los casos de uso del negocio los identificaremos como toda tarea autnoma correspondiente a un actor o lo que es lo mismo un usuario, pero hay que considerar que puede haber un caso de uso que no corresponda a ninguna tarea por el motivo de que su actor no sea un usuario y por lo tanto lo consideraremos como un requisito no funcional de proceso en lugar de una parte de la interfaz de usuario. Los actores son los siguientes: Vendedor, Encargado y Cliente ya que todos estos interactuaran de alguna forma con el aplicativo final. Por lo contrario, el sistema que realiza varias tareas de actualizacin no es un usuario.

4.1.3.3

Diagramas de colaboracin de los casos de uso del negocio.

4.2.

INFORMACIN RECOGIDA SOBRE LOS REQUISITOS DEL APLICATIVO. 4.2.1. Resumen del trabajo que han de realizar los usuarios. Altas, bajas y modificaciones de transportes. Una vez que el encargado recibe la lista de Orgenes y Destinos del da se encarga de introducir en la base de datos los orgenes y destinos as como la distancia en kilmetros y la hora de salida y el tipo de transporte, ya sea avin tren o autobs. Altas, bajas y modificaciones de clientes. El vendedor es el encargado de hacer las bajas altas y modificaciones de clientes, el vendedor pedir el DNI, nombre y apellidos, y har las modificaciones que el cliente le pida. Consulta de transportes. Los clientes y vendedores pueden acceder a la informacin de los desplazamientos en cualquier momento desde un Terminal introduciendo el origen y destino al que quieren llegar, si existen transportes en la agencia con esas caractersticas se mostrarn. Consulta de histrico Los encargados son los que pueden acceder a estos datos a partir del DNI del cliente ya que una vez al mes crean una estadstica con los datos obtenidos y que mandan a la empresa de transportes. Los datos que se muestran son los datos de cliente, nombre, apellido, fecha de nacimiento, y kilmetros recorridos adems de los transportes que ha utilizado en la agencia. Comprar billete Los clientes interesados pueden comprar su billete indicando su DNI y el cdigo del transporte que desean. Listado de Cliente Se trata de poder obtener una lista de todos los clientes de la agencia. 4.2.2. Los guiones.

Una vez hechas las entrevistas con los diferentes tipos de usuarios del sistema, se tienen los siguientes guiones. El guin del encargado: Cada da se le pasa al encargado una lista de los viajes disponibles en ese da, de los cuales l introduce en la base de datos el cdigo de vuelo, la distancia, el origen de partida y el destino y el tipo de transporte. l se encarga de suprimir de la base de datos los viajes o desplazamientos obsoletos. El encargado puede consultar el histrico en cualquier momento. 8

El guin de vendedor El vendedor pide la identificacin al cliente en caso de no estar introducido en la base de datos, el vendedor dar de alta al cliente poniendo su DNI, nombre, apellidos y fecha de nacimiento. Una vez introducidos los datos el cliente dir el origen y el destino al que quiere ir y de una lista de posibles resultados elegir el que ms le convenga y as efectuar la compra de su billete. El vendedor puede pedir una lista de todos los clientes de la agencia. El guin del Usuario El usuario puede comprar su billete sin necesidad de pasar por taquilla una vez est introducido en la base de datos comprando su billete por un Terminal o Internet, los datos que se le requerirn sern su DNI, y nombre, un origen y un destino y dada una lista de resultados, l podr elegir el que ms le convenga. 4.2.3. Vocabulario del dominio y del negocio.

Es bueno tener una referencia a palabras del dominio y del negocio ya que la persona o el grupo de personas que realizan el aplicativo deben tener el mximo conocimiento del funcionamiento del negocio para una correcta funcionalidad de este mismo. Cliente: Persona que hace uso del transporte para desplazarse de una ciudad a otra o dentro de la misma ciudad. Vendedor: Persona que se encarga de facilitar los billetes a los clientes y darles de alta. Encargado: Persona que se encarga de fijar los precios y los viajes disponibles de una ciudad a otra. Viaje: Desplazamiento de una ciudad a otra o dentro de la misma. Histrico: Lugar fsico donde guardar los datos del cliente y sus viajes. Agencia: Empresa dedicada al transporte de personas. Transporte: Medio de locomocin en el que se desplazarn los clientes. Hay tres tipos en la agencia: avin, autobs y tren.

4.3.

DOCUMENTACIN DE LOS REQUISITOS DE LA INTERFAZ USUARIO. 4.3.1. 4.3.1.1. Requisitos funcionales de la interfaz del usuario. Estructura de metas.

4.3.1.2.

Descripcin de las tareas.

Tareas del Encargado Crear viaje Meta: Aadir un viaje en la base de datos. El encargado da los datos del tipo de transporte (avin, tren, autobs), el cdigo identificador, los kilmetros, el origen, el destino y el precio. Tareas del Vendedor Crear cliente Meta: Aadir un cliente en la base de datos. El encargado introduce el DNI, nombre , apellidos y fecha de nacimiento del usuario. Vender viaje Meta: Realizar la venta de un viaje. El vendedor pide los datos del cliente, si no est en la base de datos crea el cliente luego selecciona el tipo de transporte, el origen y destino. El vendedor le ofrece de una lista de posibles transportes indicando su precio y distancia y el cliente elige la que ms le convenga.

10

Consulta de viajes Meta: encontrar un transporte adecuado para el cliente. El vendedor introduce un origen y un destino y el aplicativo devuelve una lista de todos los posibles transportes indicando la distancia, y el precio. Listado de clientes Meta: elaborar una lista de todos los clientes de la agencia. El vendedor puede pedir en cualquier momento una lista de clientes. Tareas del cliente Buscar viaje Meta: Encontrar el viaje que busca el cliente. El cliente puede consultar los viajes disponibles ya sea en el panel informatizado de viajes o en una Terminal. Se mostrarn los viajes disponibles para cada transporte. Comprar viaje Meta: Realizar la compra de un viaje. El cliente introduce sus datos luego selecciona el tipo de transporte, el origen y el destino. El vendedor o el Terminal le ofrece una lista de posibles opciones y el cliente elige la que ms le conviene. Crear cliente Meta: Aadir un cliente en la base de datos. El cliente introduce el DNI, nombre, apellidos y fecha de nacimiento,de esta manera queda introducido en la base de datos.

11

4.3.1.3.

Diagrama de tareas.

12

4.3.1.4.

Descomposicin de las tareas en subtareas.

Identificarse en el aplicativo. El encargado y el vendedor tienen que identificarse en el sistema antes de poder acceder al sistema ya que son ellos los que pueden modificar la informacin del aplicativo.

13

Crear, modificar y eliminar Transportes. Para poder crear modificar y eliminar un transporte, el encargado tiene que introducir una serie de datos como son: el cdigo, el origen, el destino, la distancia, el precio y el tipo de transporte entre ese origen y destino, en el caso de modificar o eliminar un transporte la precondicin es que ese transporte est creado.

14

Introducir, modificar y eliminar un cliente. Para poder introducir un cliente necesitamos los datos DNI y nombre, por lo tanto introducir cliente se descompondr en esas dos acciones. Para poder modificarlo es necesario introducir el DNI y el nombre, para eliminarlo solo bastar con el DNI y la precondicin que en la modificacin y eliminacin el cliente exista en la base de datos.

15

Consultar Origen y Destino tanto en el caso como de consulta de cliente o vendedor.

16

Crear Viaje tanto por parte del cliente como del vendedor.

17

4.3.1.5.

El Modelo de la informacin.

Diagramas de estados de los recursos de informacin Cliente, Transportes, Viaje e Histrico. Diagramas de estados del recurso de informacin Cliente.

Diagramas de estados del recurso de informacin:Viaje.

18

Diagramas de estados del recurso de informacin: Transportes.

Diagramas de estados del recurso de informacin: Histrico.

19

4.4.

DOCUMENTACIN DE LOS REQUISITOS DE PROCESO. 4.4.1. 4.4.1.1. Requisitos funcionales de proceso. Diagrama de casos de uso.

20

4.4.1.2.

Especificacin textual de los casos de uso.

Caso 1: Altas de Transportes Resumen de la funcionalidad: introduce un cdigo identificador, un origen y destino con su distancia, el tipo de transporte y precio en la base de datos. Actor: El encargado. Casos de uso relacionados: Crear Viaje, Consultar Transportes, Modificar Transportes y Eliminar Transportes. Precondicin: El cdigo de Transporte a introducir no ha de existir en la base de datos. Postcondicin: Los datos del viaje estn introducidos en la base de datos. Proceso normal principal:

El encargado introduce en la base de datos el cdigo, los datos del origen, el destino, la distancia el precio y el tipo de transporte. El sistema guarda los datos introducidos en la base de datos.

Alternativas de proceso y excepciones: 1a. El cdigo del viaje existe en la base de datos. 1a1. El sistema crea un mensaje de error y cancela la introduccin de datos. Caso 2: Modificar Transportes Resumen de la funcionalidad: introduce un cdigo identificador, un origen y destino con su distancia, tipo de transporte y precio en la base de datos. Actor: El encargado. Casos de uso relacionados: Crear Viaje, Consultar transportes. Precondicin: El Transportes tiene que existir en la base de datos. Postcondicin: Los datos del viaje estn modificados en la base de datos. Proceso normal principal:

El encargado introduce en la base de datos los datos modificados del origen, el destino, la distancia, el precio y el tipo de transporte. El sistema guarda los datos introducidos en la base de datos.

Alternativas de proceso y excepciones:

21

1a. El cdigo del viaje no existe en la base de datos: 1a1. El sistema crea un mensaje de error y cancela la introduccin de datos. Caso 3: Eliminar Transportes Resumen de la funcionalidad: introduce un cdigo identificador y el sistema se encarga de eliminar de la base de datos el Origen y Destino, el precio, distancia, etc de ese transporte en particular. Actor: El encargado. Casos de uso relacionados: Crear Viaje, Consultar transportes. Precondicin: El Transportes tiene que existir en la base de datos. Postcondicin: Los datos del viaje estn eliminados de la base de datos. Proceso normal principal:

El encargado introduce el cdigo del Transporte. El sistema elimina los datos de ese Transporte.

Alternativas de proceso y excepciones: 1a. El cdigo del viaje no existe en la base de datos: 1a1. El sistema crea un mensaje de error y cancela la introduccin de datos. Caso 4: Consultar Histrico Resumen de la funcionalidad: El encargado consulta los viajes que ha hecho un cliente en concreto. Actor: El encargado. Casos de uso relacionados: Crear Viaje. Precondicin: Ninguna Postcondicin: Devuelve los datos de los viajes realizados. Proceso normal principal:

El encargado introduce el DNI del cliente a consultar. El sistema muestra todos los datos del cliente y los kilmetros que ha hecho con la agencia.

Alternativas de proceso y excepciones: 22

1a. El DNI del Cliente no existe en la base de datos: 1a1. El sistema crea un mensaje de error y cancela la introduccin de datos. Caso 5: Crear Cliente Resumen de la funcionalidad: Introducir un cliente en la base de datos. Actor: El Vendedor y el Cliente. Casos de uso relacionados: Vender Viaje, Crear Viaje. Precondicin: Cliente no introducido en la base de datos. Postcondicin: El cliente esta introducido en la base de datos. Proceso normal principal:

El vendedor o cliente introduce el DNI del cliente su nombre, apellidos y fecha de nacimiento. El sistema introduce los datos del cliente en la base de datos.

Alternativas de proceso y excepciones: 1a. El DNI del Cliente ya existe en la base de datos: 1a1. El sistema crea un mensaje de error y cancela la introduccin de datos. Caso 6: Modificar Cliente Resumen de la funcionalidad: introduce un DNI identificador, y cambiar los datos de un cliente en particular. Actor: El vendedor. Casos de uso relacionados: Crear Viaje, Consultar clientes. Precondicin: El cliente tiene que existir en la base de datos. Postcondicin: Los datos del cliente estn modificados en la base de datos. Proceso normal principal:

El vendedor introduce en la base de datos los datos modificados del cliente, el nombre y apellido. El sistema guarda los datos introducidos en la base de datos.

Alternativas de proceso y excepciones: 1a. El DNI del cliente no existe en la base de datos: 23

1a1. El sistema crea un mensaje de error y cancela la introduccin de datos. Caso 7: Eliminar Cliente Resumen de la funcionalidad: introducido un DNI identificador se elimina el cliente con ese DNI de la base de datos. Actor: El vendedor. Casos de uso relacionados: Crear Viaje, Consultar clientes. Precondicin: El cliente tiene que existir en la base de datos. Postcondicin: Los datos del cliente estn eliminados de la base de datos. Proceso normal principal:

El vendedor introduce en la base de datos el DNI del cliente. El sistema elimina a ese cliente de la base de datos.

Alternativas de proceso y excepciones: 1a. El DNI del cliente no existe en la base de datos: 1a1. El sistema crea un mensaje de error y cancela la introduccin de datos. Caso 8: Consulta de Transportes Resumen de la funcionalidad: El encargado consulta los viajes que ha hecho un cliente en concreto. Actor: El Vendedor o el Cliente. Casos de uso relacionados: Vender Viaje, Crear Viaje. Precondicin: Por lo menos un Transporte introducido en la base de datos. Postcondicin: Devuelve una lista de Transportes. Proceso normal principal:

El vendedor o cliente hace la consulta de Transportes. El sistema el sistema devuelve una lista de los transportes disponibles.

Alternativas de proceso y excepciones: 1a. No hay ningn transporte en la base de datos: 1a1. El sistema crea un mensaje de error. 24

Caso 9: Venta Billete Resumen de la funcionalidad: El Vendedor vende un billete. Actor: Vendedor. Casos de uso relacionados: Actualizar Histrico. Precondicin: Transporte deseado disponible en la base de datos y el cliente que quiere comprar el billete ha de estar introducido en la base de datos. Postcondicin: Histrico actualizado con el viaje del cliente. Proceso normal principal:

El Vendedor introduce el origen, el destino, el cdigo de transporte y el DNI del cliente. El Vendedor confirma la compra. El sistema actualiza el histrico.

Alternativas de proceso y excepciones: 1a. El fichero Histrico no se encuentra 1a1. El sistema devuelve un mensaje de error. 1b. El cliente no existe en la base de datos. 1b1. El sistema devuelve un mensaje de error. 1c. El Transporte deseado no existe. 1c1. El sistema devuelve un mensaje de error. Caso 10: Comprar Viaje Resumen de la funcionalidad: El Cliente compra un billete. Actor: Cliente. Casos de uso relacionados: Actualizar Histrico. Precondicin: Transportes deseado disponible en la base de datos y el cliente que quiere comprar el billete ha de estar introducido en la base de datos. Postcondicin: Histrico actualizado con el viaje del cliente. Proceso normal principal:

El Cliente introduce el origen, el destino, el cdigo de transporte y el DNI del cliente. El Cliente confirma la compra. El sistema actualiza el histrico.

Alternativas de proceso y excepciones: 25

1a. El fichero Histrico no se encuentra 1a1. El sistema devuelve un mensaje de error. 1b. El cliente no existe en la base de datos. 1b1. El sistema devuelve un mensaje de error. 1c. El Transportes deseado no existe. 1c1. El sistema devuelve un mensaje de error. Caso 11: Listar Clientes Resumen de la funcionalidad: El Vendedor puede obtener una lista de clientes de la base de datos. Actor: Vendedor . Casos de uso relacionados: Crear Cliente, Modificar Cliente. Precondicin: Al menos un cliente ha de estar introducido en la base de datos. Postcondicin: Ninguna. Proceso normal principal:

El Vendedor inicia el caso de uso. El sistema muestra una lista de clientes.

Alternativas de proceso y excepciones: 1a. No existe ningn cliente en la base de datos. 1a1. El sistema devuelve un mensaje de error.

4.4.2.

Requisitos no funcionales de proceso.

Cada vez que un cliente compra un viaje o un vendedor vende un viaje, el sistema tiene que actualizar el histrico con los datos de dicho viaje. 4.4.3. Glosario de los requisitos.

Encargado: es la persona que se encarga de organizar los desplazamientos posibles de personas. Vendedor: es un empleado de la empresa que ofrece un servicio de venta de billetes. Histrico: es un fichero donde se guardan los datos de los clientes que realizan vuelos con la agencia. Cdigo: cada desplazamiento posible est identificado por un cdigo para ser diferenciado de los dems.

26

Cliente: es la persona que utiliza las instalaciones de la agencia. Transporte: este trmino se refiere a los Orgenes y Destinos que estn disponibles por algn tipo de transporte disponible que hay en la agencia, ya sea tren, autobs o avin.

27

ANLISIS DE LOS REQUISITOS. 4.5. ANLISIS DE LA INTERFAZ DE USUARIO. 4.5.1. Concepto de anlisis de requisitos.

La documentacin de requisitos ha estado la base de un acuerdo entre el usuario o los usuarios y el desarrollador, cosa que implica que el documento est realizado de forma sencilla y fcil de entender. Pero el documento de requisitos no es un documento que nos sirva para comenzar a desarrollar el aplicativo ya que no estn especificados los temas ms importantes como clases, herencias y notaciones formales. Por lo tanto, una vez aceptados los requisitos (por las dos partes, cliente y desarrollador) se pasan estos requisitos a un nuevo modelo llamado modelo de anlisis de requisitos o anlisis de requisitos. Este documento, mucho ms formal, ya nos sirve para empezar a realizar la base del diseo. Los objetivos del anlisis de requisitos son elaborar la metfora, identificar las clases principales que sern la base del diseo de la implementacin del programario y la especificacin de los casos de uso en trminos de operaciones. 4.5.2. La metfora.

La metfora est constituida por objetos grficos que representan los recursos de informacin que tratar el aplicativo y las acciones que se harn sobre estos objetos grficos que representan las acciones que hace el usuario con esas entidades (clases) o recursos de informacin. Se van a mostrar los tipos de metfora para el Cliente, el Transporte y el Viaje. Metfora del cliente

28

Metfora del Transporte

Metfora de Viaje

Metfora de consultar Transporte

29

4.6.

LAS CLASES DEL ANLISIS. 4.6.1. 4.6.1.1. Las clases de entidad. Identificacin de las clases de entidad.

Se proceder a identificar las clases del aplicativo final a partir de los casos de uso. Cada caso de uso esta relacionado con una o varias clases Caso de uso 1: Caso de uso 2: Caso de uso 3: Caso de uso 4: Caso de uso 5: Caso de uso 6: Caso de uso 7: Caso de uso 8: Caso de uso 9: Caso de uso 10: Caso de uso 11: 4.6.1.2. Altas de Transporte: OrigeDestino Modificar Transporte: Transporte Eliminar Transporte: Transporte Consultar Histrico: Histrico Crear Cliente: Cliente Modificar Cliente: Cliente Eliminar cliente: Cliente Consultar Transporte: Transporte Venta de billete: Viaje Compra de billete: Viaje Listar Clientes: Cliente

Especificacin de los atributos de las clases de entidad.

Cliente: D.N.I (string), Nombre (String), Apellidos (String), Distancia (Real) Viaje: D.N.I (String), Cdigo (String) Transporte: Cdigo (String), Origen (String), Destino (String), Distancia (Real), Precio (Real) 4.6.1.3. Clases de entidad.

En el siguiente esquema se puede observar las clases de entidad del aplicativo a desarrollar.

30

4.6.1.4.

Asociaciones.

Siempre que los objetos de una clase necesitan la colaboracin de los objetos de otra clase para poder llevar a cabo sus funciones, decimos que entre las dos clases hay una asociacin tal y como podemos observar entre Transporte, Cliente y Viaje.

31

4.7.

DIAGRAMAS DE CLASES DE LOS CASOS DE USO. En el funcionamiento de cada caso de uso intervienen tres tipos de clases: las clases de entidad, las clases de frontera y las clases de control. Una manera simple de explicar la funcin de cada una de las clases es la siguiente:

Las clases de entidad contienen los datos. Las clases de frontera representan los flujos de entrada y salida E/S. Las clases de control implementan la lgica de los casos de uso. La notacin de cada clase es la siguiente:

En todos los casos de uso se introduce una clase de frontera llamada men, su funcin es crear un objeto de clase de control.

Caso de uso 1: Altas de Transporte

32

Caso de uso 2: Modificar Transporte

Caso de uso 3: Eliminar Transporte

Caso de uso 4: Consultar Histrico

33

Caso de uso 5: Crear Cliente

Caso de uso 6: Modificar cliente

Caso de uso 7: Eliminar cliente

34

Caso de uso 8: Consultar Transporte

Caso de uso 9: Venta de billete

35

Caso de uso 10: Compra de billete

Caso de uso 11: Listar Clientes

36

4.8.

ESPECIFICACIN FORMAL DE LOS CASOS DE USO. 4.8.1. Diagramas de robusteza de los casos de uso.

Un paso interesante antes de hacer los diagramas de secuencia es elaborar los diagramas de robusteza, que son en el fondo diagramas de colaboracin de la implementacin de un caso de uso en trminos de las clases de frontera de control y de entidad. La finalidad del diagrama de robusteza del caso de uso no es describir de manera formal y detallada el proceso, sino construir una base para poder hacerlo. Ese es el motivo de que una vez realizados los diagramas de secuencia estos dejen de tener utilidad. Caso de uso 1: Altas de Transporte

Caso de uso 2: Modificar Transporte

37

Caso de uso 3: Eliminar Transporte

Caso de uso 4: Consultar Histrico

38

Caso de uso 5: Crear Cliente

Caso de uso 6: Modificar cliente

Caso de uso 7: Eliminar cliente

39

Caso de uso 8: Consultar Transporte

Caso de uso 9: Venta de billete

40

Caso de uso 10: Compra de billete

Caso de uso 11: Listar Clientes

41

4.9.

DIAGRAMAS. 4.9.1. Diagramas de secuencia.

Un forma concisa de explicar que es un diagrama de secuencia, sera decir que es la implementacin de un caso de uso con un actor primario el cual manda un mensaje a una clase de frontera que es comn a todos los actores y que llamaremos (Men) a la que se le pide la ejecucin de una operacin. Esta operacin enva un mensaje que crea un objeto de clase de control la cual puede:

Enviar mensajes que creen objetos de clase de frontera. Enviar mensajes a clases de entidad, para leer o grabar objetos. Enviar mensajes que creen objetos de la clase de control ,los cuales tengan dependencias de include y extend.

Caso de uso 1: Altas de Transporte

Caso de uso 2: Modificar Transporte

42

Caso de uso 3: Eliminar Transporte

Caso de uso 4: Consultar Histrico

Caso de uso 5: Crear Cliente

43

Caso de uso 6: Modificar cliente

Caso de uso 7: Eliminar cliente

44

Caso de uso 8: Consultar Transporte

Caso de uso 9 y 10: Venta de billete y Compra de billete

El caso de uso compra de billete es igual al de venta de billete lo nico que cambia es que el actor es el cliente.

45

Caso de uso 11: Listar Clientes

4.9.1.

Diagrama de entidad completo

46

DISEO. 4.10. DISEO DE LA INTERFAZ DE USUARIO.

4.10.1.

Diagramas de estado de los mens.

En este aplicativo se considera que hay diferentes tipos de men segn el tipo de usuario que dar uso al aplicativo.

47

4.10.2.

Diagrama de estados del men del encargado.

El men del encargado corresponde a la representacin de 4 casos de uso, alta, baja, y modificacin de transporte as como la consulta de histrico, a todos estos casos de uso se llega desde el men del encargado y el botn "Aceptar" que solo se activa una vez estn todos los datos completos. La ayuda se puede consultar desde los 4 casos de uso. 48

4.10.3.

Diagrama de estados del men del cliente.

El men del cliente corresponde a la representacin de 3 casos de uso, alta de cliente, compra de billete y consulta de transporte, a todos estos casos de uso se llega desde el men del cliente y el botn "Aceptar" que solo se activa una vez estn todos los datos completos. La ayuda se puede consultar desde los 3 casos de uso. 49

4.10.4.

Diagrama de estados del men del vendedor.

50

El men del vendedor podemos decir que es el ms complejo y llegamos a l desde el men principal, est compuesto por 6 casos de uso, alta de cliente, modificacin de cliente, baja de cliente, consultar transporte, listar clientes y venta de billete. En todos estos casos de uso se puede llegar a la ayuda . 4.11. DISEO DETALLADO DE LA INTERFAZ DE USUARIO. 4.11.1. Pautas y estilo de la interfaz de usuario.

El diseo de la interfaz de usuario es la categora de diseo que crea una comunicacin entre el usuario y la mquina, una pauta del diseo es identificar los objetos y acciones de la interfaz de usuario y crear un formato de pantalla que ser la base del prototipo de interfaz de usuario. Una pauta muy importante a seguir es que si la interfaz es difcil de utilizar, si obliga a cometer errores al usuario o causa frustracin a la hora de conseguir los objetivos, lo ms probable es que no sea una interfaz de agrado para el usuario independientemente de la potencia informtica que demuestre el aplicativo, y en muchos casos puede haber un rechazo total por parte del usuario, por lo tanto, como la interfaz de usuario es la forma de percepcin del usuario tiene que estar muy bien diseada. Por lo tanto, resumidamente, las pautas que se han seguido en este aplicativo han sido la identificacin de los requisitos del usuario, de las tareas y del entorno. Una vez hecho esto, se crean las tareas, se analizan los escenarios para definir el conjunto de objetos y acciones de la interfaz. Las pautas anteriores ms la colocacin de iconos, la definicin del texto descriptivo en pantalla, los ttulos de pantalla y la especificacin de elementos principales y secundarios del men es lo que forma la base para la creacin del formato de pantalla. Para que una interfaz tenga aceptacin completa por parte de uno o varios usuarios se podra definir en tres reglas muy importantes:

Dar el control de la interfaz al usuario. Reducir la carga de memoria del usuario. Construir una interfaz consecuente con el trabajo que va a desempear.

Como ltimo apunte a modo introductorio, comentar las pautas del proceso de diseo de la interfaz de usuario de la Agencia de Transportes.Estas pautas tienen la propiedad de ser un proceso iterativo y se puede representar mediante un modelo en espiral.

Anlisis y modelado de usuarios, tareas, y entornos. Diseo de la interfaz. Implementacin de la interfaz. Validacin de la interfaz.

51

Vase un ejemplo:

4.11.2.

Diseo formal de los formatos de pantalla.

Para la insercin de un cliente en la Agencia tenemos que introducir el DNI, Nombre, Apellidos, y la Fecha de nacimiento. Hay que rellenar todos los campos ya que si no es as no podremos seguir adelante, una vez rellenados los campos, podemos dar al botn Aceptar y los datos del cliente se introducirn siempre y cuando el cliente no exista previamente en la Agencia. Si decidimos no introducir el cliente podemos cancelar la operacin en cualquier momento, adems de poder consultar la ayuda cuando sea necesario. 52

La modificacin de cliente implica varios pasos, previamente el botn Aceptar est desactivado y solo tendremos un campo activo que es el DNI. Para modificar el cliente introduciremos el DNI, buscaremos el cliente y solo si existe se mostraran los datos del cliente y los campos que antes estaban desactivados y el botn Aceptar pasarn a estar activos. El botn Buscar cliente se desactiva, de esa manera ya se pueden modificar los datos del cliente y aceptar los cambios o cancelar la operacin, una vez modificado el cliente o cancelada la modificacin el botn Aceptar de desactiva de nuevo y pasa a estar activo solo el campo DNI.

Inicialmente solo tenemos activo el campo DNI, para eliminar el cliente primero hay que buscarlo con el botn Buscar cliente, si el cliente existe se activar el botn Aceptar y se desactiva el botn Buscar cliente, se mostrarn sus datos pero en ningn momento se podrn modificar ya, una vez seguros de que queremos eliminar ese cliente podemos eliminarlo con el botn Aceptar o cancelar la eliminacin, volviendo al estado inicial.

53

Para la insercin de un transporte en la Agencia tenemos que introducir el cdigo, origen, destino, distancia, precio y tipo de transporte. Hay que rellenar todos los campos ya que si no es as no podremos seguir adelante. Una vez rellenados los campos, podemos dar al botn Aceptar y los datos del transporte se introducirn siempre y cuando el transporte no exista previamente en la Agencia. Si decidimos no introducir el transporte podemos cancelar la operacin en cualquier momento, adems de poder consultar la ayuda cuando sea necesario.

54

Modificar un transporte implica varios pasos: previamente el botn Aceptar est desactivado y solo tendremos un campo activo que es el cdigo; para modificar el transporte introduciremos el cdigo, buscaremos el transporte y solo si existe se mostrarn los datos y los campos que antes estaban desactivados y el botn Aceptar pasar a estar activo y el botn Buscar cliente se desactiva de esa manera ya se pueden modificar los datos del transporte y aceptar los cambios o cancelar la operacin. Una vez modificado el transporte o cancelada la modificacin, el botn Aceptar se desactiva de nuevo y pasa a estar activo solo el campo Cdigo.

Inicialmente solo tenemos activo el campo Cdigo. Para eliminar un transporte primero hay que buscarlo con el botn Buscar transporte, si el transporte existe se activar el botn Aceptar y se desactiva el botn Buscar transporte, se mostrarn sus datos pero en ningn momento se podrn modificar ya, una vez seguros de que queremos eliminar ese transporte podemos eliminarlo con el botn Aceptar o cancelar la eliminacin, volviendo al estado inicial.

55

La compra o venta de billete se puede hacer buscando previamente un transporte con el origen y destino deseado o directamente si ya se conoce el cdigo del transporte. Para realizar la compra o la venta hay que introducir un DNI que exista en la Agencia y un cdigo de transporte que exista en la agencia, de esa manera y apretando el botn Aceptar se hace una compra o venta de billete de transporte.

56

Para la consulta de un transporte introduciremos un origen y un destino al que se quiere llegar, apretando el botn Aceptar se muestra una lista de resultados con los transportes que hay disponibles para el origen y destino mostrando su tipo su precio y distancia adems de su cdigo de transporte. Siempre se puede cancelar la operacin y adems se puede limpiar el listado para nuevas consultas.

Inicialmente solo tenemos activo el campo DNI. Para hacer la consulta de un histrico de cliente solo tenemos que apretar el botn Aceptar y todos los datos del cliente se mostrarn en los campos correspondientes adems de la lista de transportes que ese cliente ha utilizado. En el campo distancia se mostrarn todos los kilmetros que ha realizado el cliente con la agencia

57

Pantalla modal de error.

Esta es la pantalla modal de error que nos encontraremos en los momentos que se produzca un error, esta pantalla es genrica lo que quiere decir que cada vez que se produzca el error, en el espacio de texto nos saldr una explicacin del error.

4.11.3.

Diseo de la persistencia.

Base de datos relacional. Por lo tanto las tablas sern la siguientes:

transporte - columnas:cdigo, origen, destino,distancia, precio, tipo - primary key :codigo cliente - columnas: dni, nombre, apellidos, fecha, distancia - primary key: dni

viaje -columnas: dni, cdigo - foreng key: dni, cdigo

58

5. 5.1.

DESARROLLO. DESARROLLO DEL APLICATIVO ORIENTADO A OBJETOS. Antes de empezar a construir el aplicativo orientado a objetos, se definen las clases (objetos) que representan al aplicativo que se va a realizar, la formas en que las clases interactan entre ellas, el funcionamiento interno (las operaciones internas y sus atributos) todo esto ya visto en el anlisis de requisitos. Por lo tanto: Identificar las clases (es decir, definir atributos y mtodos) que en el caso del aplicativo de la agencia de transportes son: La clase Cliente.
public class Cliente implements Serializable private String DNI; private String nombre; private String apellidos; private String fechanac; private double Kms; public Cliente(String DNI, String nombre, String apellidos, String fechanac, double Kms) { this.DNI = DNI; this.nombre = nombre; this.apellidos = apellidos; this.fechanac = fechanac; this.Kms = Kms; } public String getDNI (){ return DNI; } public String getNombre (){ return nombre; } public String getApellidos (){ return apellidos; } public String getFechanac (){ return fechanac; } public double getKms (){ return Kms; } /*Devuelve el DNI*/

/*Devuelve el Nombre*/

/*Devuelve el Apellido*/

/*Devuelve la fecha de nacimiento*/

/*Devuelve los kilometros recorridos por el cliente*/

public void acumKms (double newKms){/*Suma los kilometros acumulados*/ Kms = Kms+newKms; }

59

La Clase Transporte.
public class Transporte implements Serializable private String codiID; private String ciudadOrig; private String ciudadDest; private double distancia; private double precio; private String Tipo; public Transporte(String codiID, String ciudadOrig, String ciudadDest, double distancia, double precio, String Tipo) { this.codiID = codiID; this.ciudadOrig = ciudadOrig; this.ciudadDest = ciudadDest; this.distancia = distancia; this.precio = precio; this.Tipo= Tipo; } public String getCodiID (){ return codiID; } public String getCiudadOrig (){ return ciudadOrig; } public String getCiudadDest (){ return ciudadDest; } /*Devuelve el cdigo del Vuelo*/ /*Campos de un Vuelo*/

/*Devuelve la ciudad de origen*/

/*Devuelve la ciudad de destino*/

public boolean equalityOrig(String ciuOrig){ if (ciudadOrig==ciuOrig) { return true; }else{ return false; } } public boolean equalityDest(String ciuDest){ if (ciudadDest==ciuDest) { return true; }else{ return false; } } public double getDistancia(){ return distancia; } public double getPrecio(){ return precio; } public void introPrecio(double price){ precio=price; *Devuelve la distancia*/

/*Devuelve el precio*/

60

} public void introTipo(String tipo){ Tipo=tipo; } public String getTipo(){ return Tipo; } /*Devuelve la ciudad de origen*/

La clase Viaje.
public class Viaje implements Serializable String DNI,codiID; public Viaje(String DNI,String codiID) { this.DNI=DNI; this.codiID=codiID; }

5.2.

LA PERSISTENCIA DE DATOS. La idea principal de este aplicativo es poder conservar grandes volmenes de informacin, como los datos de los clientes, los datos de transportes y los viajes realizados por cada cliente, sabemos que el mtodo ms correcto sera usar bases de datos pero esto lo haremos en el aplicativo que usa JDBC. En este caso, usaremos un fichero de texto para introducir los datos.

5.3.

ALMACENAMIENTO DE DATOS. 5.3.1. Almacenamiento temporal.

Durante la ejecucin del aplicativo los datos se almacenan en listas, las listas son las siguientes:
ArrayList listaTransportes=new ArrayList(); ArrayList listaClientes=new ArrayList(); ArrayList listahistorico=new ArrayList();

5.3.2.

Persistencia de datos.

Para guardar lo datos se ha seguido el siguiente procedimiento: la creacin de un fichero donde guardar los datos.
FileOutputStream foo = new FileOutputStream("C:/Agencia.txt");

61

La creacin de un objeto del tipo ObjectOutputStream


ObjectOutputStream oo = new ObjectOutputStream(foo); oo.writeObject(listaClientes); oo.writeObject(listaTransportes); oo.writeObject(listahistorico); oo.close();

Por lo que respecta a la lectura de datos desde fichero, los pasos seguidos han sido la creacin de un objeto del tipo ObjectOutputStream y la posterior insercin de los valores en las listas de clientes, transportes e histrico de clientes.
ObjectInputStream oi = new ObjectInputStream(foo); listaClientes=(ArrayList) oi.readObject(); listaTransportes=(ArrayList) oi.readObject(); listahistorico=(ArrayList) oi.readObject(); oi.close();

El aplicativo cada vez que se enciende carga los valores almacenados en el fichero de texto disponiendo de ellos para ser actualizados o modificados adems de posibilitar la insercin de nuevas instancias de la clase cliente, transporte o histrico.

62

5.4.

DASAROLLO DEL APLICATIVO USANDO JDBC. 5.4.1. Diseo de la base de datos.

Como parte ms importante y que marcara el aplicativo en los siguientes pasos de su desarrollo es el correcto diseo de las tablas en las que almacenaremos los datos de los Clientes, Transportes y Desplazamientos. Por lo tanto las tablas sern la siguientes: create table Transporte ( codigo varchar(40), origen varchar(40), destino varchar(40), distancia int, precio int, tipo varchar(40) , primary key(codigo) )

create table Cliente ( dni varchar(40), nombre varchar(40), apellidos varchar(40), fecha varchar(40), distanc int, primary key(dni) )

create table Viaje ( dni varchar(40), codigo varchar(40) } 5.4.2. Establecer una conexin entre Java y JDBC.

Lo primero que tenemos que hacer es establecer una conexin con el controlador de base de datos que queremos utilizar. (En el caso de la Agencia de Transportes conectaremos con los driver de una Derby de Apache SQL). En primer paso tenemos que hacer los import necesarios.
import java.sql.Connection; import java.sql.DriverManager;

63

Definimos es driver a cargar:


public String driver = "org.apache.derby.jdbc.EmbeddedDriver"; public String protocol = "jdbc:derby:";

Cargar el driver o drivers que queremos utilizar es muy sencillo y slo implica una lnea de cdigo. La documentacin del driver nos dar el nombre de la clase a utilizar.
Class.forName(driver).newInstance();

5.4.3.

Hacer la conexin.

El segundo paso para establecer una conexin es tener el driver apropiado conectado al controlador de base de datos. Por lo tanto definiramos las propiedades de la conexin que seran:
Properties props = new Properties(); props.put("user", "user1"); props.put("password", "user1"); Connection conn = null; Statement s = null;

En estas dos lneas de cdigo siguiente es donde se realiza la conexin.


conn = DriverManager.getConnection(protocol + "AgenciaDB;create=false", props); s = conn.createStatement();

Por lo tanto, ya tenemos una conexin abierta que se puede utilizar para crear sentencias JDBC que pasen nuestras sentencias SQL al controlador de la base de datos.

5.4.4.

Crear sentencias JDBC.

Para crear sentencia JDBC necesitamos un objeto Statement, es el que enva nuestras sentencias SQL al controlador de la base de datos. Simplemente creamos un objeto Statement y lo ejecutamos, suministrando el mtodo SQL apropiado con la sentencia SQL que queremos enviar. Para una sentencia SELECT, el mtodo a ejecutar es executeQuery. Para sentencias que crean el mtodo a utilizar es execute mientras que para actualizar o eliminar executeUpdate. Seguidamente, vamos a ver como se han insertado valores desde la interfaz usuario en el aplicativo de la agencia de transportes.

64

5.4.4.1

Creacin de las tablas Cliente, Transporte y Viaje.

Statement s = null; s.execute("create table Transporte ( codigo varchar(40), origen varchar(40), destino varchar(40), distancia int, precio int, tipo varchar(40) , primary key(codigo))"); s.execute("create table Cliente ( dni varchar(40), nombre varchar(40), apellidos varchar(40), fecha varchar(40), distanc int, primary key(dni))"); s.execute("create table Viaje ( dni varchar(40), codigo varchar(40))");

5.4.4.2.

Cmo insertar valores en las tablas.

Veremos el ejemplo de insertar un cliente


String insertStr=""; insertStr="insert into Cliente values (" +quotate(DNI)+"," +quotate(nombre)+"," +quotate(apellidos)+"," +quotate(fechanac)+"," +(0) +")"; try { s.execute(insertStr); } catch (SQLException ex) { new Error("Error, el cliente con D.N.I "+DNI+" ya existe").setVisible(true); }

5.4.4.3.

Cmo modificar un cliente.

String insertStr=""; insertStr="update Cliente set nombre=" +quotate(nombre)+","+"apellidos=" +quotate(apellidos)+","+"fecha=" +quotate(fechanac)+","+"distanc=" +(dist)+"where dni="+quotate(DNI); try { bol = s.executeUpdate(insertStr); ... ...

65

5.4.4.4.

Cmo eliminar un cliente.

String insertStr=""; insertStr="delete from Cliente where dni="+quotate(DNI); try { bol=s.executeUpdate(insertStr); } catch (SQLException ex) { new Error("Error, a la hora de eliminar el cliente").setVisible(true); } if(bol==0){ new Error("Error, no existe ningun cliente con el D.N.I. "+DNI).setVisible(true); }

Comentar que la instruccin executeUpdate devuelve un booleano true si se ha podido ejecutar la instruccin y false si no ha podido. 5.4.4.5. Cmo recuperar valores de una tabla. (Instruccin Select).

JDBC devuelve los resultados en un objeto ResultSet, por eso necesitamos declarar un ejemplar de la clase ResultSet para contener los resultados. Para acceder a los nombres y los precios, iremos a la fila y recuperaremos los valores de acuerdo con sus tipos. El mtodo next mueve el cursor a la siguiente fila y hace que esa fila (llamada fila actual) sea con la que podamos operar. Como el cursor inicialmente se posiciona justo encima de la primera fila de un objeto ResultSet, primero debemos llamar al mtodo next para mover el cursor a la primera fila y convertirla en la fila actual.
ResultSet ressultset = null; String insertStr=""; insertStr="select * from Transporte where origen=" +quotate(ciudadOrig)+" and "+"destino=" +quotate(ciudadDest); try { ressultset = s.executeQuery(insertStr); } catch (SQLException ex) { new Error("Error, no se ha podido hacer ejecutar la consulta").setVisible(true); } try { while (ressultset.next()) { try { bol=true; String cod=ressultset.getString(1); String orig=ressultset.getString(2); String dest=ressultset.getString(3); ... ...

66

5.4.5.

Unin de los mtodos del aplicativo a la interfaz de usuario.

Una vez identificados e implementados los mtodos pasamos a unir los mtodos a la interfaz mediante un evento actionPerformed. 5.4.5.1. Entrada de flujo de datos.

En este aplicativo hay dos maneras posibles de introducir datos el primero mediante el elemento de interfaz de usuario de la librera Swing jTextField. En este elemento el usuario introduce un dato, ya sea String, Integer o Double, el mtodo es el que se encarga de recoger el valor mediante getText(), o GetInt().
String codiID=jTextField5.getText();

El segundo es mediante un jComboBox, este elemento permite desplegar mediante un scroll vertical una serie de valores ya introducidos previamente. En este aplicativo se ha usado a la hora de elegir, un da del ao o un mes, o elegir un tipo de transporte.
String Tipo = (String)jComboBox1.getSelectedItem();

5.4.5.2.

Salida de flujo de datos.

La salida de flujo de datos se muestra en este aplicativo de dos maneras. La primera en elementos de reas de texto textArea, es aqu donde mostraremos las listas de datos de clientes como de trasportes y as como los datos histricos de los clientes. La segunda es mediante elementos jTextField ya que adems de recoger el valorde un campo tambin puede devolverse un valor en l.
jTextField18.setText(ressultset.getString(1));

5.5.

ACTIVACIN DE LOS CASOS DE USO. Una vez que tenemos los mtodos preparados para ejecutarse tenemos, que indicar a la interfaz como ejecutar el mtodo. Para eso hemos usado un tipo de elemento de la librera Swing llamado jButton al que le hemos asignado que ejecute el mtodo al ser pulsado, adems, con este tipo de elemento tambin podemos cancelar acciones, limpiar listados, etc, todo previamente implementado en un mtodo o funcin y asignado a un jButton.

67

6.

EVALUACIN. Para poder hacer una correcta evaluacin de todo el aplicativo vamos a analizar el correcto funcionamiento de todos los casos de uso. 6.1. 6.1.1.

Casos de uso del Cliente. Alta de cliente. Intentamos insertar un cliente en la agencia que no est repetido, y el aplicativo reacciona correctamente. Intentamos introducir un cliente en la agencia con el mismo identificador que un cliente que ya existe, el aplicativo responde generando un mensaje de error y mostrando el dato errneo. Intentamos insertar un cliente sin rellenar todos sus campos y el aplicativo responde mostrando un mensaje de error por pantalla. Compra de Billete. Intentamos comprar un billete con el identificador de un cliente no existente en la agencia, el aplicativo responde correctamente mostrando un mensaje de error diciendo que dicho cliente no existe en la agencia. Intentamos comprar un billete de un transporte que no existe, el sistema reacciona correctamente mostrando un mensaje de error dicindonos de que dicho transporte no existe. Un cliente que no existe intenta comprar un billete de transporte de un transporte que no existe, el sistema reacciona correctamente mostrando un mensaje de error diciendo que el transporte y el cliente no existen en la agencia. Casos de uso del Vendedor. Alta de Cliente. Intentamos insertar un cliente en la agencia que no esta repetido, y el aplicativo reacciona correctamente. Intentamos introducir un cliente en la agencia con el mismo identificador que un cliente que ya existe, el aplicativo responde generando un mensaje de error y mostrando el dato errneo. Intentamos insertar un cliente sin rellenar todos sus campos y el aplicativo responde mostrando un mensaje de error por pantalla. Modificacin de Cliente. Intentamos modificar un cliente que no existe y el aplicativo responde mostrando un mensaje de error por pantalla diciendo que el cliente no existe en la agencia y por lo tanto no se puede modificar. Intentamos modificar un cliente de la agencia que existe y el sistema responde correctamente una vez modificado cambiando los valores anteriores. Al modificar un cliente dejamos los campos modificables iguales, el sistema reacciona correctamente no alterando los datos de un cliente. 68

6.1.2.

6.2. 6.2.1.

6.2.2.

Al modificar un cliente dejamos los campos en blanco sin poner ningun valor, el sistema responde correctamente mostrando un mensaje de error diciendo que los datos no han sido rellenados. Eliminacin de Cliente. Intentamos eliminar un cliente que no existe en la agencia, el aplicativo responde correctamente mostrando un mensaje de error dicindonos que tal usuario con ese identificador no puede ser borrado ya que no existe. Intentamos eliminar un cliente que existe en la agencia de transportes y el sistema acta correctamente eliminando los datos de ese cliente de la agencia. Venta de Billete. Intentamos vender un billete con el identificador de un cliente no existente en la agencia, el aplicativo responde correctamente mostrando un mensaje de error diciendo que dicho cliente no existe en la agencia. Intentamos vender un billete de un transporte que no existe, el sistema reacciona correctamente mostrando un mensaje de error dicindonos de que dicho transporte no existe. Un cliente que no existe intenta comprar un billete de transporte de un transporte que no existe, el sistema reacciona correctamente mostrando un mensaje de error diciendo que el transporte y el cliente no existen en la agencia. Casos de uso de Encargado. Alta de Transporte. Intentamos insertar un transporte en la agencia que no est repetido, y el aplicativo reacciona correctamente. Intentamos introducir un transporte en la agencia con el mismo identificador que un transporte que ya existe, el aplicativo responde generando un mensaje de error y mostrando el dato errneo. Intentamos insertar un transporte sin rellenar todos sus campos y el aplicativo responde mostrando un mensaje de error por pantalla. Modificacin de Transporte. Intentamos modificar un transporte que no existe y el aplicativo responde mostrando un mensaje de error por pantalla diciendo que el transporte no existe en la agencia y por lo tanto no se puede modificar. Intentamos modificar un transporte de la agencia que existe y el sistema responde correctamente una vez modificado cambiando los valores anteriores. Al modificar un transporte dejamos los campos modificables iguales, el sistema reacciona correctamente no alterando los datos de un transporte. Al modificar un transporte dejamos los campos en blanco sin poner ningn valor, el sistema responde correctamente mostrando un mensaje de error diciendo que los datos no han sido rellenados.

6.2.3.

6.2.4.

6.3. 6.3.1.

6.3.2.

69

6.3.3.

Eliminacin de Transporte. Intentamos eliminar un transporte que no existe en la agencia, el aplicativo responde correctamente mostrando un mensaje de error dicindonos que ese transporte con ese cdigo no puede ser borrado ya que no existe. Intentamos eliminar un transporte que existe en la agencia de transportes y el sistema acta correctamente eliminando los datos de ese transporte de la agencia. Consulta de Histrico de Clientes. Si introducimos el D.N.I de un cliente que existe el sistema, nos muestra los datos de dicho cliente y adems nos muestra la suma de kilmetros del cliente que ha realizado con la agencia adems de todos los transportes que ha usado. Si introducimos el D.N.I de un cliente que no existe el sistema nos muestra un mensaje de error dicindonos que el cliente con ese D.N.I no existe en la agencia.

6.3.4.

6.4.

CASO DE USO COMN A LOS DEMS ACTORES. 6.4.1.

Consulta de transporte. Para consultar un transporte es necesario introducir un origen y un destino de un transporte que estn en la agencia, por lo tanto, el origen y destino han de coincidir con algn transporte indiferentemente del tipo de transporte. Si introducimos orgenes y destinos existentes en la agencia, el aplicativo muestra los datos del transporte. Si introducimos un origen y destino inexistente el aplicativo nos avisa mediante un mensaje de que no existe ningn transporte con esas caractersticas.

70

7.

CONCLUSIONES. Como conclusin al proyecto y al trabajo que he ido realizando en el aplicativo de la agencia he podido extraer como conclusin varias cosas: La elaboracin de un aplicativo algo complejo en muchos casos no es algo trivial ya que por el camino van surgiendo pequeos problemas que hacen que el aplicativo tenga retrasos. Esto es un problema grande ya que estos pequeos retrasos pueden afectar a la empresa que desarrolle un aplicativo, ya que puede ser que no cumpla con el plazo de entrega establecido Esto siempre genera en el usuario final o la persona que compra el aplicativo un grado de desconfianza. Tambin es importante elaborar una planificacin temporal y seguimiento del proyecto. Para m esta es una de las parte ms importantes del desarrollo de la agencia de transportes, esto es debido a que en este caso si el aplicativo no se entregara a tiempo se deducira en un suspenso, pero si realmente esto fuera una empresa que desarrolla aplicativos un retraso se deducira en perdidas econmicas, desconfianza por parte del usuario, y ms factores negativos. En el caso de una empresa un aplicativo se desarrolla entre un grupo de personas que pueden ser ms o menos inexpertas en el tema, en mi caso el aplicativo ha sido desarrollado con solo una persona, por lo tanto en la planificacin temporal he dejado un buen margen de error para evitar esos posibles retrasos ya que esas pequeas dificultades a la hora de elaborar el aplicativo sin duda alguna han surgido. Una conclusin extrada por mi parte y que considero vital es un correcto juego de pruebas. En este caso, como es el desarrollo de la agencia el correcto funcionamiento de la agencia es importante ya que esto es un proyecto realizado con fin didctico y se intenta que el funcionamiento sea correcto y corregir los errores con el fin de aprender bien a elaborar un aplicativo. Pero una empresa desarrolla un aplicativo con fines econmicos y es importante que un aplicativo funcione bien ya que si no es as y no se ha elaborado un buen juego de pruebas pueden surgir problemas cuando este aplicativo est funcionando y causar grandes perdidas econmicas a la empresa o particular que est haciendo uso del aplicativo, ya que desde mi punto de vista cada vez que usamos un aplicativo en el fondo lo estamos probando.

71

8.

RECURSOS UTILIZADOS. Bibliografa. S. Pressman, Roger. Ingeniera del Software. Un enfoque prctico 5 edicin . MacGraw-Hill, 2002. Bruce Ecke. Thinking in Java. Prentice-Hall, December 2002. Jim Melton, Andrew Eisenberg. SQL y Java, Gua para SQL, JDBC y tecnologas relacionadas. Editorial ra-ma, 2002. John Lewis, Joseph Chase. Estructuras de datos con Java, Diseo de estructuras y algoritmos. Editorial Pearson, 2004. John Crupi, Dan Malks. J2EE Patterns, Best practices a desing satrategies. Prentice-Hall, 2001. Stewart Birnam, Java 2 distribuido, desarrollo de bases de datos. Prentice-Hall, 2003 Pginas Web consultadas. GUI Building Adding Functionality to Buttons Creating a Derby Data base Connecting a GUI to a Derby Database with NetBeans IDE JavaTM 2 Platform Standard Edition 5.0 API Specification Wikipedia Java DataBase Connectivity Programario utilizado. MagicDraw UML v10.5. Programario utilizado para la construccin de los esquemas UML de los requisitos, anlisis y diseo del aplicativo. Pgina Web : Magic Draw UML NetBeans 5.5 Programario gratuito para la implementacin del aplicativo. Pgina Web : NetBeans

72

9. 9.1.

MANUAL. INSTALACIN. Hay dos maneras de ejecutar el aplicativo: La primera es usando NetBeans 5.5 siguiendo las siguientes indicaciones: File Open Proyect y escogemos el proyecto que deseemos. Tenemos que indicar donde est el driver .jar que queremos cargar. La segunda manera es directamente desde el Smbolo del Sistema.(MS-2) Antes que nada hay que instalar Java 1.4 o Java 1.5 definir y el Path de Java y el del Driver SQL Instalar Java 1.5 o 1.4 Copiar el driver de Apache en el disco duro, en mi caso los sets quedan de la siguiente manera; set JAVA_HOME=D:\j2sdk1.4.2_13 set PATH=%PATH%;%JAVA_HOME%\bin set DERBY_INSTALL=D:\Apache\db-derby-10.1.2.1-bin setCLASSPATH=%DERBY_INSTALL%\lib\derby.jar;% DERBY_INSTALL%\lib\derbytools.jar; Y ejecutar el programa: Java Agencia

73

9.2.

USO DEL APLICATIVO. Este aplicativo est enfocado a tres usuarios (actores) diferentes por lo tanto el aplicativo est dividido en tres aplicativos diferentes y todos tienen en comn el mismo almacn de datos, tambin existe el aplicativo que abarca todos los usuarios, esto quiere decir que desde ese aplicativo se controlan todos los casos de uso, por lo tanto tenemos:

El aplicativo del encargado, con el que se pueden hacer altas de transportes, modificaciones de transportes, eliminaciones de transportes y consulta del histrico de los clientes. El aplicativo del vendedor, con el que el vendedor puede hacer altas de cliente, modificaciones de cliente, eliminacin de clientes, consultas de transportes y ventas de billete. Por ltimo el aplicativo del cliente, en este aplicativo que est orientado a estar en Terminales en la misma agencia de transportes por los que el usuario o cliente podr hacer sus consultas de transportes, darse de alta en el sistema y tambin podr comprar billetes de transporte. Por lo tanto este manual est enfocado a los tres usuarios del aplicativo y se trataran de forma independiente.

74

APLICATIVO DEL CLIENTE. Alta de un cliente: Tenemos que introducir su DNI que es su identificador nico, su nombre, sus apellidos y su fecha de nacimiento posteriormente apretar el botn Aceptar o Cancelar si no queremos introducir esos datos. En el momento de la creacin del cliente el sistema se encarga de poner a cero el contador de kilmetros del cliente y lo introduce en la base de datos. En el caso de que ese cliente ya exista el aplicativo nos mostrar por pantalla un mensaje de error dicindonos que el cliente ya existe en la base de datos. Para poder introducir un cliente es necesario que todos los campos de un cliente estn introducidos, de no ser as, el sistema nos mostrar un mensaje de error dicindonos que no se han introducido correctamente los datos. Consulta de desplazamientos: Tenemos que introducir un origen y un destino y apretar el botn Aceptar para poder hacer la consulta o, Cancelar en el caso contrario. Si obtenemos resultados el aplicativo nos los mostrar por pantalla pero si no hay resultados nos mostrar un mensaje avisndonos de que no existen resultados para esa bsqueda. Es necesario introducir un origen y un destino ya que si no el sistema nos mostrar un mensaje de error dicindonos que no hemos introducido correctamente los datos. Compra de billete: Es opcional introducir el origen y el destino si previamente ya se conoce el cdigo del transporte. Si no es as, podemos usar la consulta de desplazamiento. Para poder comprar un billete tenemos que introducir el cdigo de transporte y el DNI del comprador, apretar el botn Aceptar si deseamos comprar el billete, o Cancelar si no deseamos comprar el billete. En caso de no introducir el cdigo y el DNI, el sistema nos dir que faltan datos por introducir; si no existe ese cdigo de transporte el sistema tambin nos avisara del error y si no existe el cliente el sistema tambin nos avisar con un mensaje de error. APLICATIVO DEL ENCARGADO. Alta de un transporte: Tenemos que introducir su cdigo que es su identificador nico, un origen , un destino , la distancia y el precio del billete, posteriormente apretar el botn Aceptar o Cancelar si no queremos introducir esos datos. En el caso de que ese transporte ya exista el aplicativo nos mostrar por pantalla un mensaje de error dicindonos que el transporte ya existe en la base de datos. Para poder introducir un transporte es necesario que todos los campos de un transporte estn introducidos, de no ser as, el sistema nos mostrar un mensaje de error dicindonos que no se han introducido correctamente los datos. Modificacin de un transporte: Para modificar un transporte antes hay que buscarlo para comprobar que realmente es ese el transporte que queremos modificar, por lo tanto tenemos que introducir el cdigo del transporte y buscarlo en la base de datos, si existe 75

se mostrarn sus datos y se podrn modificar todos sus datos menos el cdigo que pasar a estar desactivado. Una vez realizados los cambios se pueden aceptar los cambios o dejarlo como estaba. Si no introducimos el cdigo el aplicativo nos dir que no se ha introducido el cdigo del transporte, si el transporte no existe, el aplicativo nos dir que ese transporte con ese cdigo no existe. Eliminacin de un transporte: Para eliminar un transporte antes hay que buscarlo para comprobar que realmente es ese el transporte que queremos eliminar por lo tanto, tenemos que introducir el cdigo del transporte y buscarlo en la base de datos si existe se mostrarn sus datos y se podr eliminar apretando el botn Aceptar, o cancelar la eliminacin apretando el botn Cancelar. Si no introducimos el cdigo el aplicativo nos dir que no se ha introducido el cdigo del transporte, si el transporte no existe el aplicativo nos dir que ese transporte con ese cdigo no existe. Consulta de Histrico: Para hacer la consulta de un histrico de cliente es necesario introducir el DNI del cliente y apretar el botn Aceptar para consultar o Cancelar, para lo contrario, el sistema nos mostrar los datos del cliente y si ha realizado algn desplazamiento con la agencia adems nos dir el nmero total de kilmetros realizados con la agencia. En caso de que no exista el cliente, el sistema nos mostrar un mensaje de error dicindonos que tal usuario no existe y si no introducimos el DNI el sistema nos dar un error dicindonos que no se ha introducido ningn DNI. APLICATIVO DEL VENDEDOR. Alta de un cliente: Tenemos que introducir su DNI que es su identificador nico, su nombre, sus apellidos y su fecha de nacimiento posteriormente apretar el botn Aceptar o Cancelar si no queremos introducir esos datos. En el momento de la creacin del cliente el sistema se encarga de poner a cero el contador de kilmetros del cliente y lo introduce en la base de datos. En el caso de que ese cliente ya exista, el aplicativo nos mostrar por pantalla un mensaje de error dicindonos que el cliente ya existe en la base de datos. Para poder introducir un cliente es necesario que todos los campos de un cliente estn introducidos, de no ser as el sistema nos mostrar un mensaje de error dicindonos que no se han introducido correctamente los datos. Modificacin de un cliente: Para modificar un cliente inicialmente hay que buscarlo para comprobar que realmente es ese el cliente que queremos modificar por lo tanto tenemos que introducir el DNI del cliente y apretar el botn Aceptar o Cancelar en el caso contrario, si existe en la base de datos se mostrarn sus datos y se podrn modificar todos sus datos menos el DNI que pasara a estar desactivado. Una vez realizados los cambios se pueden aceptar los cambios o dejarlo como estaba. Si no introducimos el DNI el aplicativo nos dir que no se ha introducido el DNI del cliente, 76

si el cliente no existe el aplicativo nos dir que ese cliente con ese DNI no existe. Eliminacin de un cliente: Para eliminar un cliente inicialmente hay que buscarlo, para comprobar que realmente es ese el cliente que queremos eliminar por lo tanto tenemos que introducir el DNI del cliente y buscarlo en la base de datos si existe se mostrarn sus datos y se podr eliminar apretando el botn Aceptar, o cancelar la eliminacin apretando el botn Cancelar. Si no introducimos el DNI el aplicativo nos dir que no se ha introducido el DNI del cliente, si el cliente no existe el aplicativo nos dir que ese cliente con ese DNI no existe. Listar clientes: Para listar los clientes que hay en la agencia registrados lo nico que hay que hacer es dar al botn Listar clientes, tambin hay un botn Limpiar listado que nos sirve para limpiar los clientes que se muestran por pantalla. Esto es debido a que la lista de clientes pueden sufrir modificaciones en cualquier momento debido a que los clientes se pueden modificar y eliminar. En caso de no haber cliente el sistema manda un aviso diciendo que no hay clientes en la agencia. Venta de billete: Es opcional introducir el origen y el destino si previamente ya se conoce el cdigo del transporte, si no es as, podemos usar la consulta de desplazamiento. Para poder vender un billete tenemos que introducir el cdigo de transporte y el DNI del comprador, apretar el botn Aceptar si deseamos comprar el billete, o Cancelar si no deseamos comprar el billete. En caso de no introducir el cdigo y el DNI, el sistema nos dir que faltan datos por introducir, si no existe ese cdigo de transporte el sistema tambin nos avisara del error y si no existe el cliente el sistema tambin nos avisara con un mensaje de error.

77

You might also like