viernes, 24 de julio de 2009

Práctico 2 - Análisis - Modelado del Dominio

Ejercicio 2 (básico, imprescindible)

En la construcción de un sistema de información para el control hospitalario se relevaron los siguientes conceptos:

▪ Hospital, con los datos nombre, dirección y teléfono.
▪ Sala, con los datos número y cantidad de camas.
▪ Médico, con los datos cédula de identidad, nombre y especialidad.
▪ Paciente, con los datos cédula de identidad, nombre, dirección y fecha de nacimiento.

Por otra parte, las relaciones relevadas entre dichos conceptos son:

▪ Cada hospital tiene varias salas. Todas y cada una de ellas pertenecen a un hospital (y solo a uno).
▪ Cada médico trabaja en un único hospital. Todo hospital tiene al menos 10 médicos.
▪ Un paciente puede estar internado; si lo está, estará en una sala (y sólo en una).
▪ La capacidad máxima de camas que puede tener una sala es de cinco pacientes.
▪ Cada paciente puede ser atendido por más de un médico (pero por lo menos por uno), y a su vez cada médico puede atender varios pacientes.

Construir el Modelo de Dominio correspondiente y presentarlo en un diagrama utilizando UML.



Ejercicio 3 (básico, imprescindible)

Se tiene la siguiente información:

▪ Las personas frecuentan algún restaurante.
▪ A las personas les gustan distintas comidas.
▪ Los restaurantes sirven comidas.

Construir el Modelo de Dominio y presentarlo en un diagrama utilizando UML, teniendo en cuenta las siguientes restricciones:

▪ Un restaurante no sirve más de 10 comidas.
▪ Una persona frecuenta varios restaurantes.
▪ A una persona no le gusta una comida por sí sola sino cómo la sirven en determinados restaurantes, aunque puede no gustarle ninguna.
▪ Una comida servida por un restaurante puede no gustarle a ninguna persona.


Ejercicio 4 (básico, imprescindible)

Se cuenta con el siguiente documento de Visión del problema:

Las empresas producen productos y emplean a varios vendedores. Un vendedor trabaja para una sola empresa y vende un único producto de ésta.

El siguiente diagrama presenta el Modelo de Dominio que se ha construido.




a) ¿El Modelo de Dominio construido representa fielmente la realidad? Modificarlo para tal fin si se considera necesario.
b) Describir otras alternativas para representar la realidad anterior.
c)
Modificar el modelo considerando que existen productos que no salen a la venta.





Ejercicio 5 (básico, imprescindible)
Se desea manejar información referente a ciudades y rutas entre las mismas, en varios países. Se considera un país como el conjunto de todas sus ciudades, y una ruta como una secuencia de ciudades. De los países y ciudades interesan sus nombres, y de las rutas su número. Construir el Modelo de Dominio y presentarlo en un diagrama utilizando UML.



Ejercicio 6 (básico, imprescindible)
Se desea modelar el funcionamiento de una compañía de transporte de cargas la cual mantiene una flota de vehículos. De cada vehículo se sabe su código (que lo identifica), si está disponible y su capacidad de carga. Un vehículo puede ser:

▪ una camioneta, de las que se sabe los viajes por semana que puede hacer, y si es doble cabina o no,
▪ un camión, de los que se conoce su potencia, y ▪ un camión con remolque, de los que se sabe la capacidad de carga extra del remolque y una descripción del mismo.
Un camión (con remolque o no) puede hacer un solo viaje por semana. El modelo debe reflejar el estado de la flota en una semana particular ya que semanalmente, la compañía desea estimar la capacidad de carga total de su flota (la suma de la cantidad de carga por semana para todos sus vehículos disponibles).

Construir el Modelo de Dominio y presentarlo en un diagrama utilizando UML.



Ejercicio 7 (básico, de práctica)
Construir el Modelo de Dominio a partir del siguiente documento de Visión del problema y presentarlo en un diagrama utilizando UML.

Una automotora mantiene información sobre los coches y sus clientes. De los clientes se sabe su nombre y teléfono, mientras que de los coches se sabe su marca, modelo, precio y número de chasis. Además un coche puede ser nuevo o usado. En caso de que sea usado interesa su matrícula, año y kilometraje; siendo posible que esté a consignación (sabiéndose el nombre del dueño) o que sea propiedad de la automotora (sabiéndose el precio que pagó por él la automotora). En caso de que sea nuevo interesa saber si es “full equip”. Un cliente puede estar interesado en un coche o haber comprado uno; en este último caso se conoce la fecha y la forma de pago.





Ejercicio 8 (básico, de práctica)

Se desea construir un sistema para la administración de información referente a proyectos.

Un proyecto se compone de tareas. Cada tarea tiene un identificador, una descripción textual, duración, fechas límite y real de comienzo, y fecha real de fin. Las tareas pueden ser interrumpibles o no interrumpibles. Para las tareas no interrumpibles interesa conocer el motivo por el cual no puede ser interrumpida y la fecha límite de finalización. La tareas interrumpibles no tienen fecha límite de finalización, y de las mismas interesa conocer la cantidad máxima de veces que puede ser interrumpida y la duración máxima de una interrupción.

Las tareas tienen asignados recursos. Una tarea puede tener varios recursos asignados y un recurso puede estar asignado a muchas tareas. Un recurso tiene un nombre asociado, la cantidad máxima de unidades disponibles y las cantidades mínimas y máximas que pueden asignarse del mismo a una tarea cualquiera. Cuando un recurso es asignado a una tarea (en cierta cantidad de unidades) será utilizado durante todo el período de tiempo en que dura la tarea. Los recursos pueden ser reutilizables o consumibles. Para los reutilizables se conoce la cantidad de unidades de tiempo que debe permanecer inutilizado el recurso luego de ser liberado para ser asignado a otra tarea. Para los consumibles interesa saber el costo de reposición de cada unidad del recurso.

Construir el Modelo de Dominio a partir del documento de Visión del problema presentado, y mostrarlo en uno o más diagramas utilizando UML.




Ejercicio 9 (medio, imprescindible)
Construir el Modelo de Dominio a partir del siguiente documento de Visión del problema referente a negocios inmobiliarios y presentarlo en un diagrama utilizando UML.

Una inmobiliaria tiene una carpeta de casas para mostrar, de las cuales se conoce la dirección y una descripción de sus comodidades. Las casas pueden estar a la venta o en alquiler, interesando en este último caso, si la casa está o no amueblada. Una casa puede ser mostrada por tres inmobiliarias como máximo. Los clientes pueden ver casas a través de ciertas inmobiliarias. Una inmobiliaria puede tener casas que no han sido visitadas por clientes. Dos inmobiliarias distintas pueden mostrar a un mismo cliente la misma casa. Puede darse el caso de que un cliente buscando casa, tenga la propia para venta o alquiler. De los clientes interesa su nombre y teléfono.



Ejercicio 10 (medio, de práctica)

Se quiere modelar el funcionamiento de un videoclub. El mismo maneja un conjunto de películas para alquiler, y un conjunto de socios a quien son alquiladas. De las películas interesa el código (que la identifica), el título, los actores principales y el género. Las películas pueden ser originales o copias. De las copias interesa saber su estado, pudiendo ser este “malo”, “bueno”, “muy bueno” o “excelente”. De los socios se desea saber el nombre, la dirección y el número de socio. El videoclub desea mantener las reservas de películas y aquellas que tiene en alquiler.

Construir el Modelo de Dominio a partir de la visión del problema planteado y presentarlo en un diagrama utilizando UML.




Ejercicio 11 (avanzado, de práctica)

Se desea modelar una realidad referente a un club deportivo.

El club tiene un conjunto de socios que son vitalicios, de los que interesa su antigüedad, y comunes, que se diferencian entre aquellos que pagan anualmente y aquellos que pagan mensualmente. De los primeros interesa la cuota que pagan, mientras que de los segundos, además de la cuota, interesa la fecha de aumento y el porcentaje del mismo. Hay cobradores, de los que se sabe su nombre y su zona, que cobran a los socios. De los profesores se conoce su nombre y que guían actividades, de las cuales se conoce su nombre. Toda actividad es guiada por algún profesor. Existen algunas actividades que se realizan dos o más veces por semana, conociéndose el día y hora en que el profesor guía cada actividad. El socio no sólo elije la actividad sino que también le interesa el profesor que la guía. Como hay que mantener contentos a los socios mensuales, interesa conocer qué profesor o profesores prefiere.

Construir el Modelo de Dominio a partir del documento de Visión del problema presentado y mostrarlo en uno o más diagramas utilizando UML.





Ejercicio 12 (avanzado, de práctica)

Una empresa maneja la información respecto a sus empleados y productos en stock, realidad descrita por el documento de Visión del problema presentado a continuación.

De los productos se conoce un código, una descripción y su precio de venta. Los productos pueden ser nacionales o importados. En caso de ser nacionales, se conoce el proveedor. Para el caso de productos importados, interesa contar con el nombre del importador y el país de procedencia.

Los productos son recibidos en partidas, las cuales se componen de varias unidades de un mismo producto. Interesa entonces manejar también la información referente a las partidas: fecha de ingreso, cantidad de unidades y de qué producto, y precio global de la misma. De las partidas de productos importados, interesa además el número de expediente generado por el despachante de aduana, del cual se conoce su nombre, número de permiso y dirección. De las partidas de productos nacionales, interesa el numero de remito del distribuidor.

De los empleados se conoce que existen varias categorías:


▪ Gerentes – se conoce el nombre, el código, el sueldo mensual y el total en pesos de la comisión recibida por las ventas.
▪ Comunes – se conoce el nombre, el código, el sueldo mensual y el tiempo a descontar (el descuento es lineal sobre las horas que debe trabajar en el mes).
▪ Vendedores – se conoce el nombre, el código, sueldo mensual, tiempo a descontar y el total en pesos de la comisión recibida por las ventas.
▪ Jornaleros – se conoce el nombre, el código, la cantidad de horas trabajadas y el valor de la hora a pagar.

Los vendedores se dedican a un grupo de productos que les asigna la empresa. Estos grupos están formados sólo por productos nacionales o sólo por productos importados (ningún vendedor maneja ambos tipos de productos). La venta de un producto no esta reservada a un único vendedor.

Construir el Modelo de Dominio y presentarlo en uno o más diagramas utilizando UML.


19 comentarios:

  1. El ejercicio 8 no contempla el caso que una tarea no tenga asociado ningun recurso.
    La cantidad de recursos asignados no se refleja en la asociación? Es decir, en la cantidad de links que tiene tarea con recursos?

    ResponderEliminar
  2. En el ejercicio 9. Las casas no están asociadas a sus propietarios que son clientes de la inmobiliaria, la inmobiliaria no sabe quienes son dueños de las casas que vende o alquila. No?

    ResponderEliminar
  3. En la primera solución del ejercicio 10 la razón de agregar los datos de la película además de la película en sí (lo que el cliente se lleva a su casa) no se debe hacer sólamente por la repetición de los datos sino por el hecho de que si alquilan todos los ejemplares de cierta película se pierde la información de la misma y ya no se puede reservar. No se si estás de acuerdo...

    ResponderEliminar
  4. Gracias por comentar...
    Sobre el ejercicio 8, sí, asumí que toda tarea tiene que tener asignado al menos un recurso.

    Sobre la asociación, lo que pasa es que te dicen que un Recurso tiene un nombre, una cantidad máxima de unidades disponibles... entonces asumí que un recurso era "Programador", con un atributo que dice "hay 8". Una Tarea se relacionaría con EL recurso "Programador", y el atributo de la clase asociativa diría "4 unidades asignadas".

    Si tomara como que hay 8 objetos distintos de clase "Programador" y la tarea tiene links con 4 de ellos, no tendría mucho sentido el atributo "cantMaxUnidadesDisponibles"...

    No sé qué te parece?

    ResponderEliminar
  5. Sobre el 9, sí, faltaría una asociación entre Cliente (con multiplicidad 0..1) y Casa (con multiplicidad *), estás de acuerdo? O en el extremo de Cliente le pondrías multiplicidad * también, porque varios clientes distintos pueden ser dueños de la casa?

    ResponderEliminar
  6. No entiendo muy bien lo que decís pero... No sería lo mismo? en lugar de controlar que no te pases de la maxima cantidad de recursos con un atributo controlás por cantidad de links, no me queda clara la diferencia.
    En cuanto a la cantidad de recursos por tarea en la letra dice: "... Cuando un recurso es asignado a una tarea ..." Lo que me da a entender que hay tareas sin recursos asignados.

    ResponderEliminar
  7. Sobre el ejercicio 10, al alquilar una película no se elimina el objeto que la representa; tengo que conservarlo para saber que está alquilada y a qué socio (no es como el ejemplo de "si se venden todos los productos"; ahí, sí, cada vez que vendo un producto, "desaparece" de mi sistema), así que aunque se alquilaran todos los ejemplares de una película, seguiría pudiendo reservarla.

    Claro que se reservaría un ejemplar específico, lo que no es muy real que digamos...

    ResponderEliminar
  8. En el ejercicio 9 lo dejaría como decís, sería complicarlo sin sentido suponer que existen varios dueños de la misma casa (aunque pase en la realidad).

    ResponderEliminar
  9. Ej. 8:

    Es que en la forma en que lo modelé, no podés tener 4 links, porque tendrías UN ÚNICO objeto de clase "Programador" (que adentro diría "hay 8 unidades disponibles de este recurso"). Entonces, al no poder tener mas de 1 link, precisás ese atributo en la clase asociativa para decirte cuantas unidades de ese recurso tiene asignada esa tarea. ¿Se entiende?

    ResponderEliminar
  10. Y la opción de tener 8 instancias (8 objetos) de clase "Recurso", que todos dijeran "soy un Programador, somos 8 en total, como mínimo se puede asignar 1, como máximo 8", no me convence, porque repite esos 4 atributos en las 8 instancias. Además de agrandar mucho la cantidad de objetos necesaria en el sistema...

    ResponderEliminar
  11. En cuanto a las películas estoy de acuerdo en que no se eliminan pero si están todas alquiladas, el socio debería reservar una de las que fue alquiladas y sólo una. No podría reservar en general sino que debería esperar por la devolución de una de ellas. Si la persona que la alquiló no la devuelve nunca tenemos un cliente insatisfecho

    ResponderEliminar
  12. Si en la última frase la coma va después de "nunca", sí, estamos totalmente de acuerdo! :o)

    (también se podría poner después de "devuelve"... ;o) )

    ResponderEliminar
  13. Ahhh la importancia de la coma.
    Corrijo: Si la persona que la alquiló no la devuelve nunca, tenemos un cliente insatisfecho.

    ResponderEliminar
  14. En el ejercicio 2, la asociación de Persona a Sirve, la multiplicidad de sirve no seria 0.10?

    ResponderEliminar
    Respuestas
    1. Estamos hablando del ejercicio 3, verdad?

      No, porque la letra lo que te dice es:

      ▪ A una persona no le gusta una comida por sí sola sino cómo la sirven en determinados restaurantes, aunque puede no gustarle ninguna.

      Eso implica que a una persona puede no gustarle ninguna comida, pero no hay datos sobre la máxima cantidad de comidas que pueden llegar a gustarle. En otro punto dice que un restaurante sirve a lo sumo 10 comidas, pero hay "n" restaurantes, n > 1 ("Una persona frecuenta varios restaurantes."), lo que te da un máximo de 10n asociaciones "sirve", con las que potencialmente podría tener asociaciones una persona.

      Eliminar
  15. Si era el ejercicio 3, si tenes razón esta bien como lo estas pensando, gracias, pensé que no iba a tener respuesta ya que las publicaciones eran del 2009 y yo recien ahora estoy cursando Programación 4

    ResponderEliminar
  16. http://es.scribd.com/doc/128316077/Ejercicios-Modelo-de-Dominio

    ResponderEliminar
    Respuestas
    1. Hola, tu comentario era para mostrar que los 3 diagramas que tiene son idénticos, pero ABSOLUTAMENTE idénticos a los míos? Evidentemente me los "pirateó", porque los diagramas que tengo acá los hice yo en el Visio, y tengo los .vsd para probarlo (además de testigos)! :o)
      Al menos podría haber puesto de dónde los rob... eh... "tomó"... pero bueno, qué se le va a hacer, en Internet pasan estas cosas...

      Eliminar
  17. De nada! Tené cuidado porque en esos tiempos, yo leí el teórico de P4, me puse a tratar de hacer los prácticos, y armé este blog. Al año siguiente me anoté y cursé la materia, y vi que había ejercicios que acá estaban mal hechos. Eso nunca lo corregí. O sea que acá hay cosas que hoy sé que están mal.

    ResponderEliminar