Vous êtes sur la page 1sur 10

Generación automática de dietas

NOTA: La solución del siguiente ejercicio ha sido desarrollado y explicado por un colega y amigo Isidro
Hernanz. Desarrollado cuando dictábamos un asignatura de UML. Este ejercicio esta resuelto con una
versión anterior de UML, pero los conceptos e interpretaciones dan una idea clara del modelo conceptual.
También tener cuidado con las multiplicidades que al copiarlo del graficador fueron alteradas.
Comento algunas palabras usadas que podrían mal interpretarse:
Carrera=diploma
Curso=año académico, no asignatura
Academia=instituto superior
Convocatoria=la vez en que se lleva una asignatura,etc.

Enunciado

Se pretende modelar el funcionamiento de un servicio de atención médica, para llevar a cabo su


implementación en lo que se ha definido como el Proyecto SGAD (Sistema para la Generación Automática de Dietas).
Este sistema software tendrá como objetivo la ayuda a la toma de decisiones de los médicos y facultativos del
Departamento de Nutrición, tanto para su atención a pacientes como en procesos de investigación y documentación.
Para poder entender el entorno del problema que se pretende abordar, es decir, el problema de la nutrición, es
necesario conocer una serie de conceptos básicos:
 La nutrición es un proceso involuntario que comprende todos aquellos fenómenos, a través de los cuales, el
organismo recibe y utiliza los nutrientes ingeridos. Obedece únicamente a leyes fisiológicas.
 Llamamos nutriente a toda sustancia asimilable contenida en los alimentos, que permite al organismo obtener
energía, construir y reparar los tejidos, y regular los procesos metabólicos.
 Alimento puede definirse como aquella sustancia que aporta al organismo materias útiles y asimilables. Todos
los alimentos contienen las mismas sustancias nutritivas. Lo que en realidad hace diferente un alimento de otro
es la proporción en que contienen estas sustancias. Considerando estas diferencias podemos clasificar los
alimentos en los siguientes grupos según su funcionalidad principal: plásticos (reparar los tejidos), reguladores
(regular los procesos metabólicos) y energéticos (proporcionar energía).
 Todos los alimentos pueden reducirse a las siguientes sustancias nutritivas fundamentales, o nutrientes: los
macronutrientes o nutrientes energéticos (según su naturaleza se dividen en carbohidratos, grasas y proteínas)
y los micronutrientes o nutrientes no energéticos (elementos minerales y vitaminas).
 Las vitaminas son compuestos orgánicos esenciales para la vida. Cada vitamina es una agrupación específica
de elementos responsables de la regulación de nuestros procesos metabólicos vitales. Hay que distinguir entre
dos clases de vitaminas: las liposolubles, que se disuelven en grasas y aceites, y las hidrosolubles, que se
disuelven en agua.
 La proteína es una necesidad vital en la dieta del hombre y de todos los animales. Sin embargo, no es la
proteína por sí misma la que se necesita, sino los aminoácidos, que son la materia prima de las proteínas. Los
aminoácidos combinados pueden formar miles de proteínas diferentes. Los aminoácidos no son solamente
unidades para formar proteínas, sino que son también el producto final de la digestión de éstas. Hay 22
aminoácidos conocidos, y ocho de ellos son llamados aminoácidos esenciales. Esos aminoácidos esenciales
no pueden, al contrario que los otros, ser fabricados por el cuerpo humano, sino que deben ser obtenidos de la
alimentación o de los suplementos nutricionales.
El sistema posee información de los siguientes componentes: de todos los alimentos: nombre/definición, origen
y funcionalidad principal; de todos los nutrientes: nombre/definición, funcionalidad principal y el tipo y subtipo al que
pertenecen, enfermedades que produce su déficit, y las fuentes alimentarias de donde puede obtenerse; de todas las
vitaminas y los minerales: funciones asociadas, ración dietética recomendada y, sólo para los minerales, nivel sérico.
El sistema cuenta con un conjunto de dietas prediseñadas. De todas ellas guarda información sobre sus
objetivos/indicaciones, definición técnica, aporte calórico, componentes básicos, ingesta necesaria, vía de
administración recomendada, duración, dosificación, pauta y suplementos necesarios. Para simplificar, consideraremos
que la dieta se compone de un conjunto de alimentos.
El sistema cuenta con una gran colección de enfermedades relacionadas con disfunciones nutricionales,
contando para cada una de ellas con información sobre sus posibles causas, la patogenia que presentan, el modo de
diagnosis necesario, los diagnósticos diferenciales que presentan, el tipo de tratamiento más adecuado y el objetivo de
dicho tratamiento.

1
La información de la historia clínica del paciente incluye nombre, apellidos, domicilio, teléfono, número de la
seguridad social, fecha de nacimiento del paciente, peso, talla, las incompatibilidades que presenta, sus alergias, los
antecedentes familiares con los que cuenta y referencias a sus enfermedades.

Se pide
Representar en un diagrama de clases el vocabulario del problema (clases; asociaciones, agregaciones y
composiciones; jerarquías y atributos).

2
Solución

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 están relacionadas por una
agregación (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 asociación “Compone” entre Alimento y Nutriente, que almacena la informacíón
de la proporción con que cada nutriente aparece en cada alimento en su atributo “proporción”. A través de
esta información el atributo “funcionalidad principal” de Alimento se puede calcular en función 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í:

3
En este diagrama se describen las jerarquías 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
quedaría de la siguiente forma:

Vemos que, como se describe en el enunciado, los macronutrientes pueden ser de tres tipos,
carbohidratos, grasas y proteínas, que éstas a su vez están fomadas por aminoácidos (relación de
agregación con la multiplicidad “1..22” en el lado de los aminoácidos (una proteína puede estar formada por,
desde un aminoácido hasta por los 22). Se trata de una agregación porque un mismo aminoácido puede
formar parte de diferentes proteínas. Evidentemente las instancias de estas clases son “objetos abstractos”,
no entidades físicas. Cada instancia de la clase proteína no es una cadena órganica física, sino el concepto
de todas aquellas que tienen la misma composición y estructura.
La clase Aminoácido, a su vez tiene una subclase que es la clase Esencial. Esto último se podría
haber representado también de la siguiente forma:

4
Lo único destacable en este caso es que hay que describir ahora la clase Aminoácido como clase
abstracta.
En el siguiente bloque de información, el enunciado nos da las pautas para dibujar otra parte del
diagrama:

De este diagrama hay algunos puntos que merecen ser comentados:


En primer lugar vemos la relación de agregación entre Alimento y Dieta. Según dice el enuciado,
“...consideraremos que la dieta se compone de un conjunto de alimentos”. A pesar de que el texto utilice la
palabra “compone”, no quiere decir que la relación que hay entre ambas clases sea una composición. De
hecho no lo es. Hay que recordar que el texto utiliza el lenguaje natural, que no tiene por qué coincidir en los
términos técnicos con el lenguaje UML. Así pues, cuando en un texto se utilice la palabra “composición”, en
el lenguaje de la orientación a objetos se podrá interpretar como una composición o como una agregación,
dependiendo de su naturaleza.

5
En nuestro caso, diferentes dietas están formadas por combinaciones diferentes de alimentos, cada
uno de los cuales formará parte de una o varias dietas (o quizá de ninguna). Una relación de esta naturaleza
no es una composición por lo que debemos representarla como una simple agregación.
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, asociación 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 asociación 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 recomendación 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 información propia de ella, como
“objetivos/indicaciones” y “componentes básicos”. La razón de ello está basada en el principio constructivo
de los diagramas de UML, que recomienda no repetir la misma información como atributo y como
asociación. Los componentes básicos, por ejemplo, los obtenemos para una dieta a partir de la asociación
entre la clase Dieta y la clase Alimento, por lo que si lo ponemos además como atributo de la primera,
estamos repitiendo la infomación.
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 reposición o suministro al organismo
del nutriente cuya ausencia ha provocado la enfermedad. Dichos conceptos están 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 agregación Alimento-Nutriente ha sido ya comentada. La agregación 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 número
indefinido de ellas (cero si aún no se ha definido una dieta que incluya un determinado alimento, pero puede
definirse en el futuro). La relación “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 todavía) o que tengan varias; y en el lado de Enfermedad, “ 1..*” porque una dieta debe al menos
curar una enfermedad (si no, no tiene razón de ser), pero puede curar varias. Finalmente, en la asociación
“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 (tratándose como dice el enunciado de un departamento de
nutrición, lo lógico es que la información que manejen esté relacionada sólo con la nutrición, 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 información que se nos da en el último
párrafo 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 cómo se relaciona
esta información con la de el resto del sistema y de si la naturaleza de estas relaciones puede hacer que lo
que pensábamos que es atributo, sea en realidad una asociación con otra clase.
La primera consideración que vamos a hacer es sobre la naturaleza de lo que el enunciado define
como “alergias” e “incompatibilidades”. A falta de conocimientos médicos 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 interpretación simplista de este enunciado, sería
válido 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 alérgico a medicamentos
suplementarios del tratamiento dietético). Bajo dicha interpretación, 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

6
En este caso también entendemos que cada enfermedad causada por la falta de un determinado
nutriente. La multiplicidad de la asociación “afecta a” (con sujeto la clase·Enfermedad 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 simultáneas); y “0..*” en el lado de Paciente, porque
una enfermedad puede estar en el sistema sin estar afectando a ningún paciente en ese momento, pero
puede afectar a muchos.
Sin embargo, esta simplificación se podría considerar poco realista, por cuanto que una lectura del
texto con cierto sentido común da a entender que se alude a alergias e incompatibilidades (a los que sí que
vamos a seguir considerando sinónimos) como producidas por un determinado nutriente en un determinado
paciente. Esto implicaría que habría una serie de dietas indicadas para alguna enfermedad, que no se
pueden asignar a un cliente alérgico a alguno de los nutrientes que forman parte de los alimentos incluidos
en la misma. Desde este punto de vista, el diagrama de clases quedaría de la siguiente manera:

7
Como vemos, aparecen una nueva asociación que recoge la semántica expresada en el párrafo
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 información que aportaban antes,
ahora se representa en la asociación que acabamos de introducir.
Finalmente, sólo queda un comentario con respecto a los últimos diagramas. Aunque no lo pone
explícitamente en el enunciado, y por tanto no lo vamos a considerar dentro de la solución recomendada,
parece lógico que el sistema registre qué dieta está asignada a qué paciente. Esto nos obligaría a modificar
el diagrama añadiendo la asociación “asignada a” que mostramos en el diagrama siguiente:

8
9
Hechas estas consideraciones, sólo queda mostrar el diagrama de clases completo de todo el
problema. Lo representamos según la interpretación de alergias e incompatibilidades que hemos descrito en
segundo lugar (la visión más realista) y sin considerar que el sistema lleva el registro de qué dieta está
asignada a qué paciente:

10