CAPITULO
14
14.1.1
Principales conceptos que se abordan en este
capitulo:
1m desarrollo de una aplicacién completa
Construcciones Java que se abordan en este
capitulo
(En este capitulo no se introduce ninguna construccién nueva de Java.)
En este capitulo reunimos muchos de los principios de orientacién a objetos que hemos
introducido en este libro mediante la presentacién de un extenso estudio de caso. Empren-
deremos el estudio desde Ia fase inicial de la discusién del problema, a través del des-
cubrimiento de las clases, el disefio y un proceso iterativo de implementacién y prueba.
A diferencia de los capitulos anteriores, no es nuestra intencién introducir nuevos temas,
sino que intentamos reforzar los temas presentados en la segunda mitad del libro tales
de abstraccién, manejo de errores y diseiio de una aplicacién.
como herencia, téct
El estudio de caso
El estudio de caso que usaremos es el desarrollo de un modelo para una compaiiia de
taxis. La compaiiia estd considerando expandir sus operaciones a nuevas zonas de una
cierta ciudad. La compaitia opera con taxis y con minibuses. Los taxis dejan a sus pasa-
jeros en sus respectivos destinos antes de recoger nuevos pasajeros mientras que los mini-
buses pueden recoger varios pasajeros en distintas ubicaciones durante el mismo viaje y
trasladarlos a direcciones similares (por ejemplo, recogen varios huéspedes de distintos
hoteles y los trasladan a diferentes terminales del aeropuerto). Basado en estimaciones del
niimero de los clientes potenciales que tiene dicha zona, la compaiia desea saber si seré
beneficioso expandirse y de ser asi, cudntos taxis necesitarian para operar efectivamente.
Descripcién del problema
El siguiente parrafo presenta una descripcién informal de los procedimientos de ope-
racién de la compaiia de taxis, a la que se legé tras varios encuentros con sus inte-
grantes.450
Capitulo 14 ll Un estudio de caso
La compania opera tanto con taxis como con minibuses. Los taxis se usan para
transportar a un individuo (0 a un grupo pequeio de personas) desde una ubi-
cacién de la ciudad a otra; los minibuses se usan para recoger individuos en
distintas ubicaciones y transportarlos a sus diferentes destinos, Cuando la com-
paiiia recibe la llamada proveniente de una persona, de un hotel, de un lugar
de entretenimiento o de una organizacién turistica, trata de asignar un vehiculo
para cumplimentar el viaje solicitado, Si no tiene vehiculos disponibles, no imple-
‘menta ninguna forma de sistema de espera. Cuando un vehiculo Mega a una
determinada ubicacién de salida para recoger un pasajero, el conductor lo noti-
fica a la compania; de manera similar, cuando se deja a un pasajero en su des-
tino, el conductor también lo notifica a la compaiia
Como hemos sugerido en el Capitulo 10, uno de los objetivos comunes del modelado
es que nos ayude a aprender algo sobre la situacién que se modela, Resulta itil iden-
tificar tempranamente qué es lo que deseamos aprender porque estos objetivos pueden
tener mucha influencia sobre el disefio que producimos. Por ejemplo, si buscamos res-
ponder cuestiones relacionadas con la rentabilidad que se podria obtener operando con
Jos taxis en esa zona, debemos asegurarnos de que podremos obtener informacién a
partir del modelo que nos ayudard a evaluar la rentabilidad. Por lo tanto, debemos con-
siderar estas dos cuestiones: la frecuencia con que se pierden pasajeros potenciales
debido a que no hay vehiculos disponibles para recogerlos y en el extremo opuesto, la
cantidad de tiempo que los taxis permanecen ociosos por falta de pasajeros. Estas
influencias no se encuentran en la descripcién basica de la manera en que opera nor-
malmente la compaiiia de taxis sino que representan escenarios que tendremos que atra-
vesar en el momento en que construyamos el disefio,
Por lo tanto, podriamos agregar el siguiente parrafo a la deseripcion:
El sistema almacena informacién sobre los pedidos de los pasajeros que no se
pueden satisfacer; también proporciona informacién de la cantidad de tiempo
que invierten los vehiculos en cada una de las siguientes actividades: trasladar
pasajeros, ir a las ubicaciones en las que se solicita un taxi y estar ociosos.
Sin embargo, para desarrollar nuestro modelo nos centraremos en la deseripeién ori
ginal de los procedimientos de la compaiiia y dejaremos las caracteristicas adicionales
como ejercicios para el lector.
Ejercicio 14.1 {Considera que existe alguna informacién adicional que seria
Util obtener a partir del modelo? De ser asi, agregue estos requerimientos a las
descripciones dadas y Uselos en sus propias extensiones del proyecto.
=r Analisis y disefo
14.2.1
Tal como lo hemos sugerido en el Capitulo 13, comenzaremos tratando de identificar
las clases y sus interacciones en la descripcién del sistema, mediante el método sus-
tantivo/verbo,
Descubrir clases
Los siguientes sustantivos estin presentes en la descripcidn, en su forma singular:
compaiia, taxi, minibus, individuo, persona, ubicacién, destino, hotel, lugar de entre-14.2.2
14.2 Analisis y disefio 451
tenimiento, organizacién turistica, vehiculo, ubicacién de salida, viaje, conductor y
pasajero.
El primer punto a tener en cuenta es que seria un error armar un conjunto de clases
directamente a partir de esta lista de sustantivos; las descripciones informales raramente
se escriben de forma tal que se ajusten a esta correspondencia directa.
Generalmente, se hace necesario un primer refinamiento que consiste en identificar
algunos sindnimos en la lista de sustantivos, es decir, palabras diferentes que se usan
para nombrar la misma entidad. Por ejemplo, en este contexto, «individuo», «persona»
y «viaje» funcionan como sinénimos de pasajero.
Un segundo refinamiento es la eliminacién de aquellas entidades que realmente no es
necesario que se modelen en el sistema. Por ejemplo, la descripcién identifica varias
‘maneras en que la compafiia de taxis puede ser contactada: por individuos, por hoteles,
por lugares de entretenimiento, por organizaciones turisticas. ¢Ser realmente necesario
contemplar estas distinciones? La respuesta dependera de la informacién que queremos
obtener a partir del modelo. Seria importante distinguirlas si, por ejemplo, quisiéramos
acordar descuentos a los hoteles que proveen un gran niimero de clientes 0 enviar mate-
rial de publicidad a los lugares de entretenimiento que atin no solicitan el servicio. Si
no se requiere este nivel de detalle, podemos simplificar el modelo «inyectando» pasa-
jeros en él segiin algin patrén estadistico razonable.
eicio 14.2 Considere la simplificacién del numero de sustantivos aso-
ciados con los vehiculos. En este contexto, los sustantivos «vehiculo» y «taxin
zson sinénimos? gEs necesario la diferenciacién entre «minibus» y «taxin? ¢Qué
‘ocurre con el sustantivo «conductor»? Justifique sus respuestas.
Ejercicio 14.3 En este contexto, es posible eliminar alguno de los siguientes
sustantivos": «ubicacién», «destino», «ubicacién de salida» y considerarlos
como sinénimos?:
Ejercicio 14.4 Identifique los sustantivos de alguna de las extensiones que
agregé al sistema y realice las simplificaciones que considere necesarias.
Usar tarjetas CRC
La Figura 14.1 contiene un resumen de todos los sustantivos y los verbos asociados
que quedaron después de llevar a cabo algunas simplificaciones en la descripcién ori-
ginal. Ahora, cada uno de los sustantivos podria asignarse a una tarjeta CRC, prepa-
rada para registrar sus responsabilidades y colaboradores identificados.
A partir de este resumen, es claro que taxi y minibiis son especializaciones de una
clase més general de vehiculo. La diferencia principal entre un taxi y un minibus es
que un taxi siempre tiene el compromiso de recoger y transportar a un solo pasajero
0 @.un grupo pequeiio de pasajeros, pero un minibus trabaja simultineamente con miil-
tiples pasajeros independientes. La relacién entre estas tres clases sugiere una jerarquia
de herencia, en la que taxi y minibus representan subtipos de vehiculo.
Ejercicio 14.5 Cree tarjetas CRC concretas para los sustantivos/clases iden-
tificados en esta seccién, con el propésito de atravesar los escenarios que se
sugieren en la descripcién del proyecto.