Beruflich Dokumente
Kultur Dokumente
Enunciado
Se pide
Representar en un diagrama de clases el vocabulario del problema (clases; asociaciones, agregaciones y
composiciones; jerarquas y atributos).
1
Solucin
Para construir el diagrama de clases del problema vamos a ir realizando las diferentes partes del
mismo en diferentes diagramas parciales que finalmente ensamblaremos en un diagrama final.
El primer diagrama que vamos a construir es el que representa la parte del enunciado que habla de
los alimentos y nutrientes.
En este diagrama aparecen las clases Alimento y Nutriente, que estn relacionadas por una
agregacin (Alimento es un agregado de Nutriente), y se describen a su vez las subclases que le
corresponden a este ltimo: Macronutriente y Micronutriente.
Aparece una clase asociacin Compone entre Alimento y Nutriente, que almacena la informacn
de la proporcin con que cada nutriente aparece en cada alimento en su atributo proporcin. A travs de
esta informacin el atributo funcionalidad principal de Alimento se puede calcular en funcin del atributo
funcionalidad principal de Nutriente, siendo el primero, pues, un atributo derivado.
Continuando con la lectura del enunciado nos describen ahora los macro y micronutrientes. Los
ltimos se pueden representar as:
2
En este diagrama se describen las jerarquas que existen entre las clases Micronutriente, Vitamina,
Mineral, (vitamina) Liposoluble y (vitamina) Hidrosoluble.
Pasando a la parte del enunciado que describe los macronutrientes, el diagrama correspondiente
quedara de la siguiente forma:
Vemos que, como se describe en el enunciado, los macronutrientes pueden ser de tres tipos,
carbohidratos, grasas y protenas, que stas a su vez estn fomadas por aminocidos (relacin de
agregacin con la multiplicidad 1..22 en el lado de los aminocidos (una protena puede estar formada por,
desde un aminocido hasta por los 22). Se trata de una agregacin porque un mismo aminocido puede
formar parte de diferentes protenas. Evidentemente las instancias de estas clases son objetos abstractos,
no entidades fsicas. Cada instancia de la clase protena no es una cadena rganica fsica, sino el concepto
de todas aquellas que tienen la misma composicin y estructura.
La clase Aminocido, a su vez tiene una subclase que es la clase Esencial. Esto ltimo se podra
haber representado tambin de la siguiente forma:
3
Lo nico destacable en este caso es que hay que describir ahora la clase Aminocido como clase
abstracta.
En el siguiente bloque de informacin, el enunciado nos da las pautas para dibujar otra parte del
diagrama:
4
En nuestro caso, diferentes dietas estn formadas por combinaciones diferentes de alimentos, cada
uno de los cuales formar parte de una o varias dietas (o quiz de ninguna). Una relacin de esta naturaleza
no es una composicin por lo que debemos representarla como una simple agregacin.
Otra clase nueva que aparece, continuando con la lectura del enunciado, es la clase Enfermedad.
Dicha clase aparece relacionada con otras dos clases: por una parte con la clase Dieta, asociacin a la que
hemos puesto como nombre cura, siendo el sujeto de dicha frase la clase Dieta y predicado la clase
Enfermedad. Por otra parte, est asociada a la clase Nutriente, con una asociacin que hemos llamado
produce (por falta), siendo el sujeto en este caso la clase Nutriente y el predicado la clase Enfermedad. En
ambas asociaciones hemos seguido la recomendacin de utilizar verbos para nombrar a las asociaciones.
Con respecto a la clase Dieta, quiz puede surgir la duda de por qu no se han incluido entre sus
atributos dos conceptos que aparecen en el texto como informacin propia de ella, como
objetivos/indicaciones y componentes bsicos. La razn de ello est basada en el principio constructivo
de los diagramas de UML, que recomienda no repetir la misma informacin como atributo y como
asociacin. Los componentes bsicos, por ejemplo, los obtenemos para una dieta a partir de la asociacin
entre la clase Dieta y la clase Alimento, por lo que si lo ponemos adems como atributo de la primera,
estamos repitiendo la infomacin.
Exactamente lo mismo ocurre con los conceptos causas, tratamiento y objetivo de la clase
Enfermedad. Las causas, como hemos visto, son la ausencia de los diferentes nutrientes, el tratamiento
ser la correspondiente dieta o dietas asociadas y el objetivo ser la reposicin o suministro al organismo
del nutriente cuya ausencia ha provocado la enfermedad. Dichos conceptos estn pues presentes en las
asociaciones entre las tres clases, por lo que no son atributos de Enfermedad.
Finalizamos el comentario sobre esta parte del diagrama explicando las multiplicidades de las
relaciones representadas. La agregacin Alimento-Nutriente ha sido ya comentada. La agregacin Dieta-
Alimento tiene multiplicidad 1..* en el lado de Alimento ya que una dieta debe estar al menos formada por
un alimento (aunque pueden ser muchos); y en el lado de Dieta 0..* , o sea, desde cero hasta un nmero
indefinido de ellas (cero si an no se ha definido una dieta que incluya un determinado alimento, pero puede
definirse en el futuro). La relacin cura tiene multiplicidad 0..* en el lado de dieta porque puede haber
enfermedades que no tengan ninguna dieta que la cure (si el nutriente que la causa no se encuentra en
ninguna todava) o que tengan varias; y en el lado de Enfermedad, 1..* porque una dieta debe al menos
curar una enfermedad (si no, no tiene razn de ser), pero puede curar varias. Finalmente, en la asociacin
produce (por falta), la multiplicidad es 1..* en ambos lados porque la falta de un nutriente produce al
menos una enfermedad, pero puede ser causa de varias, y por otro lado, una enfermedad es consecuencia
de la ausencia de al menos un nutriente (tratndose como dice el enunciado de un departamento de
nutricin, lo lgico es que la informacin que manejen est relacionada slo con la nutricin, por lo que
enfermedades relacionadas con otros problemas no figuren en el sistema), pero puede ser por la ausencia
de varios.
Para finalizar nuestro diagrama, vamos a incluir en l la informacin que se nos da en el ltimo
prrafo del enunciado, la correspondiente a los pacientes. Evidentemente, hay que definir la clase Paciente
a la que asignamos los atributos que nos dan en el texto. En este punto surge la duda de cmo se relaciona
esta informacin con la de el resto del sistema y de si la naturaleza de estas relaciones puede hacer que lo
que pensbamos que es atributo, sea en realidad una asociacin con otra clase.
La primera consideracin que vamos a hacer es sobre la naturaleza de lo que el enunciado define
como alergias e incompatibilidades. A falta de conocimientos mdicos suficientes parece que ambos
conceptos pueden tener el mismo significado, esto es, sustancias que el paciente no puede ingerir porque a
l particularmente le producen trastornos. En una primera interpretacin simplista de este enunciado, sera
vlido admitir que dichas sustancias no son alimentos o nutrientes, es decir, que no se encuentran en las
posibles dietas a administrar a un paciente (por ejemplo, que el paciente fuera alrgico a medicamentos
suplementarios del tratamiento diettico). Bajo dicha interpretacin, podemos considerar que cada
enfermedad se trata con unas u otras dietas independientemente del paciente que las sufre, en cuyo caso
tendremos un diagrama con el siguiente aspecto
5
En este caso tambin entendemos que cada enfermedad causada por la falta de un determinado
nutriente. La multiplicidad de la asociacin afecta a (con sujeto la claseEnfermedad y predicado la clase
Paciente) es 1..* en el lado de Enfermedad, pues un paciente al menos tiene que tener una enfermedad,
pero puede tener varias (varias carencias de nutrientes simultneas); y 0..* en el lado de Paciente, porque
una enfermedad puede estar en el sistema sin estar afectando a ningn paciente en ese momento, pero
puede afectar a muchos.
Sin embargo, esta simplificacin se podra considerar poco realista, por cuanto que una lectura del
texto con cierto sentido comn da a entender que se alude a alergias e incompatibilidades (a los que s que
vamos a seguir considerando sinnimos) como producidas por un determinado nutriente en un determinado
paciente. Esto implicara que habra una serie de dietas indicadas para alguna enfermedad, que no se
pueden asignar a un cliente alrgico a alguno de los nutrientes que forman parte de los alimentos incluidos
en la misma. Desde este punto de vista, el diagrama de clases quedara de la siguiente manera:
6
Como vemos, aparecen una nueva asociacin que recoge la semntica expresada en el prrafo
anterior. La primera, la hemos llamado produce alergia a y tiene multiplicidad 0..* en ambos extremos: en
el de la clase Nutriente porque un paciente puede tener alergia a ninguno o a muchos nutrientes y en el de
la clase Paciente porque un nutriente puede producir alergia en ninguno o en muchos pacientes. Ha
desaparecido ahora el atributo incompatibilidades y alergias porque la informacin que aportaban antes,
ahora se representa en la asociacin que acabamos de introducir.
Finalmente, slo queda un comentario con respecto a los ltimos diagramas. Aunque no lo pone
explcitamente en el enunciado, y por tanto no lo vamos a considerar dentro de la solucin recomendada,
parece lgico que el sistema registre qu dieta est asignada a qu paciente. Esto nos obligara a modificar
el diagrama aadiendo la asociacin asignada a que mostramos en el diagrama siguiente:
7
8
Hechas estas consideraciones, slo queda mostrar el diagrama de clases completo de todo el
problema. Lo representamos segn la interpretacin de alergias e incompatibilidades que hemos descrito en
segundo lugar (la visin ms realista) y sin considerar que el sistema lleva el registro de qu dieta est
asignada a qu paciente: