# data[].attributes.body
En las relaciones se habla de una clase destino y de una clase origen. La clase origen es desde la que se realiza la acción de relacionar. Es decir, desde la que parte la flecha. La clase destino es la que recibe la flecha.

# data[].attributes.attachment_link.readable_text
Existen cuatro tipos de relaciones entre los elementos de un modelo UML:

En las relaciones se habla de una clase destino y de una clase origen. La clase origen es desde la que se realiza la acción de relacionar. Es decir, desde la que parte la flecha. La clase destino es la que recibe la flecha. Las relaciones se pueden modificar con estereotipos o con restricciones.

Es una relación estructural que describe un conjunto de enlaces, los cuales son conexiones entre objetos. La asociación se representa con una línea continua, posiblemente dirigida, que a veces incluye una etiqueta. A menudo se incluyen otros elementos para indicar la multiplicidad y roles de los objetos involucrados, como podemos ver en la siguiente figura:

Una asociación es una relación estructural que especifica que los objetos de un elemento están conectados con los objetos de otro. Dada una asociación entre dos clases, se puede navegar desde un objeto de una de ellas hasta uno de los objetos de la otra, y viceversa. Es posible que la asociación se dé de manera recursiva en un objeto, esto significa que dado un objeto de la clase se puede conectar con otros objetos de la misma clase. También es posible, aunque menos frecuente, que se conecten más de dos clases, estas se suelen llamar asociaciones n-arias. Las relaciones de asociaciones se utilizan cuando se quieren representar relaciones estructurales.

Por ejemplo, una clase Biblioteca podría tener una asociación uno a muchos con una clase Libro, indicando que cada instancia de Libro pertenece a una instancia de Biblioteca. Además, dado un Libro, se puede encontrar su Biblioteca, y dada una Biblioteca se puede navegar hacia todos sus Libros. Gráficamente, una asociación se representa con una línea continua entre las mismas o diferentes clases. Las asociaciones se utilizan para mostrar relaciones estructurales.

Hay cuatro adornos básicos que se aplican a las asociaciones: nombre, rol en cada extremo de la asociación, multiplicidad en cada extremo y agregación.

Las asociaciones se representan gráficamente por una línea continua que une ambas clases.

NOMBRE Y DIRECCIÓN EN ASOCIACIONES.

Se utiliza para describir la naturaleza de la relación. Para que no exista ambigüedad en su significado se le puede dar una dirección al nombre por medio de una flecha (un pequeño triángulo negro sólido) que apunte en la dirección que se pretende que el nombre sea leído.

En el ejemplo de la Figura se puede leer la asociación como "Director manda sobre Empleado".

La multiplicidad o diversificación es uno de los aspectos importantes de las asociaciones entre objetos. Indica la cantidad de objetos de una clase que se relacionan con otro objeto en particular de la clase asociada. Por ejemplo, en un curso escolar, el curso se imparte por un solo instructor, en consecuencia, el instructor y el curso están en una asociación de uno a uno. Sin embargo, en un seminario hay diversos instructores que impartirán el curso a lo largo del semestre, por lo tanto, el curso y el instructor tienen una asociación de uno a muchos.

En muchas situaciones del modelado es conveniente señalar cuantos objetos se pueden conectar a través de una instancia de la asociación. Este "cuantos" se denomina multiplicidad del rol en la asociación y se expresa como un rango de valores o un valor explicito. Cuando se indica multiplicidad en un extremo de una asociación se está indicando que, para cada objeto de la clase en el extremo opuesto debe haber tantos objetos en este extremo. Se puede indicar una multiplicidad de exactamente uno (1), cero o uno (0..1), muchos (0..*), uno o más (1..*) e incluso un número exacto (por ejemplo, 5).

Otras notaciones:

Una línea sin símbolos de multiplicidad denota asociación uno a uno:

Para indicar el papel que juega una clase en una asociación se puede especificar un nombre de rol. Se representa en el extremo de la asociación junto a la clase que desempeña dicho rol.

Como se observa en los ejemplos, los roles se colocan en la parte inferior de la línea que conectan dos clases (asociación en este caso. Debe aclararse que no precisamente en todos los casos se podrán identificar roles, por ejemplo cuando se cuente con una clase cliente y otra pedido esta asociación no cuenta con roles.

Un rol describe las propiedades estructurales y de comportamiento de un objeto en un objeto. Un objeto juega uno o más roles a lo largo de su existencia y un mismo rol puede ser jugado por diferentes objetos.

Una clase implementará uno o más roles y un rol podrá ser implementado por una o más clases.

ASOCIACIONES REFLEXIVAS (Involutivas).

En ocasiones una clase es una asociación consigo misma, cuando una clase puede desempeñar diversos roles o papeles. Una persona por ejemplo puede ser Conductor o pasajero, para representar estas asociaciones se realiza de la siguiente manera.

Una clase asociación es aquella que modela los atributos u operaciones implícitas en una asociación esta se realiza colocando el nombre de la asociación en la línea que une las clases y agregando la clase asociación mediante una línea discontinua, esta clase asociación puede tener asociaciones con otras clases.

Tanto la línea como el rectángulo de clase representan el mismo elemento conceptual: la asociación. Por tanto ambos tienen el mismo nombre, el de la asociación. Cuando la clase asociación sólo tiene atributos el nombre suele ponerse sobre la línea (como ocurre en el ejemplo de la Figura). Por el contrario, cuando la clase asociación tiene alguna operación o asociación propia, entonces se pone el nombre en la clase asociación y se puede quitar de la línea.

Ejemplo un jugador tiene una asociación de "Participa en" una clase equipo pero a su vez existe una clase asociación de contrato que tiene una asociación " Negociado por" una clase DirectorGeneral.
EJEMPLO DE ROL APLICANDO ASOCIACION REFLEXIVA
Ejemplo de Clase Asociación

En el caso de una asociación en la que participan más de dos clases, las clases se unen con una línea a un diamante central. Si se muestra multiplicidad en un rol, representa el número potencial de tuplas de instancias en la asociación cuando el resto de los N-1 valores están fijos. En la siguiente figura se ha impuesto la restricción de que un jugador no puede jugar en dos equipos distintos a lo largo de una temporada, porque la multiplicidad de "Equipo" es 1 en la asociación ternaria.

Un elemento derivado es aquel cuyo valor se puede calcular a partir de otros elementos presentes en el modelo, pero que se incluye en el modelo por motivos de claridad o como decisión de diseño. Se representa con una barra "/" precediendo al nombre del elemento derivado.

Como su nombre lo indica la agregación en UML permite representar una relación entre una clase y sus elementos agregados, esto quiere decir que las clases agregadas no afectan el funcionamiento directo de la clase que las contiene. El símbolo de agregación es un diamante colocado en el extremo en el que está la clase que representa el "todo".

Por ejemplo sabemos que a una computadora portátil se le pueden agregar elementos como micrófono, cámara web e impresora; sin embargo la ausencia de estos elementos no repercute en el funcionamiento básico de dicha portátil. El símbolo de agregación es un diamante vacio colocado en el extremo de la clase que contiene las clases agregadas.

En este tipo de asociación, la clase hija puede sobrevivir sin su clase padre.

Es posible que en una agregación se presenten restricciones, por ejemplo una computadora puede contar con una cámara web o micrófono e impresor, lo que indica que existe una restricción en la que solamente puede agregarse uno de esos dos elementos (cámara o micrófono).

COMPOSICIÓN

La composición a diferencia de la agregación representa una clase que está compuesta por otras clases que son indispensables para que esta funcione. Por ejemplo podríamos decir que la laptop citada en el ejemplo anterior funciona si le quitamos la cámara web; sin embargo no funcionará si le faltase la pantalla, por lo que podemos decir que una laptop está compuesta básicamente de una pantalla y su unidad de procesamiento (CPU).

Para representar la composición también se utiliza un rectángulo de la misma forma que una agregación con la diferencia que este no está vacío.
RESTRICCIONES DE AGREGACIÓN
Como se puede observar en el ejemplo la clase computadora tienen tanto clases de composición como de agregación ya que una computadora puede funcionar ya sea con ratón o con teclado pero no puede funcionar si le falta el monitor y el CPU, a su vez el CPU también está compuesto por clases de composición y agregación puesto que puede funcionar ante la ausencia de una unidad de lectura (DVD-ROOM) pero no ante la falta de la motherboard, procesador, disco duro y memoria.

El diagrama de contexto nos permite englobar en un entorno en común la agregación y asociación de elementos para poder utilizarlo en un ámbito más general, básicamente podemos detallar el contexto de una clase bajo la representación de un rectángulo y relacionar este contexto con otras clases. Enfoca la atención en una clase específica dentro de un sistema.

Es una relación semántica entre dos elementos en la cual un cambio a un elemento (el elemento independiente) puede afectar a la semántica del otro elemento (elemento dependiente).

Declara que un cambio en la especificación de una clase puede afectar a otra que la utiliza.

Se representa como una línea discontinua que a veces incluye una etiqueta.

HERENCIA (POO) O GENERALIZACIÓN (UML)

Uno de las características principales de la orientación a objetos es poder asociar a los objetos (clases en UML) con características y operaciones que puedan heredarse entre ellos, siempre y cuando estos estén ligados a un entorno en común, por ejemplo se no es fácil determinar que un radio, televisor y lavadora tienen atributos y operaciones en común como poseer un interruptor, un cable de energía eléctrica, operaciones de encendido y apagado que los identifican como parte de la superclase Electrodomésticos. La orientación a objetos se refiere a esto como herencia y en UML se denomina generalización la cual está representada por una línea continua que va desde la clase subordinada hasta la clase principal o clase "padre" conectada por un rectángulo vacio, como puede observarse en la figura.
Agregación es una relación débil.
Se dice que una herencia múltiple se presenta cuando una clase subordinada proviene de varias clases principales. Así por ejemplo si tenemos una clase padre e hijo ambos pueden estar contenidos en otra clase alumno.
Composición es una relación fuerte.
Una clase es abstracta cuando no puede ser instanciada o que no proveen objetos, la abstracción se utiliza cuando se desea englobar objetos de distintos tipos en clases que únicamente sirven para definir subclases. La abstracción en UML se representa colocando el nombre de la clase en cursiva.

Una clase abstracta no tiene atributos, solo tiene métodos dentro de ella.

Se usa nombre en cursiva para la clase abstracta. Posee métodos abstractos (sin implementación). Las subclases implementan los métodos abstractos definidos. No tiene atributos, solo métodos dentro de ella.

Es una relación semántica entre clasificadores, donde un clasificador especifica un contrato que otro clasificador garantiza que cumplirá. Se pueden encontrar relaciones de realización en dos sitios: entre interfaces y las clases y componentes que las realizan, y entre los casos de uso y las colaboraciones que los realizan. La realización se representa como una mezcla entre la generalización y la dependencia, esto es, una línea discontinua con una punta de flecha vacía.

INTERFAZ (Forma abreviada)

Una interfaz es aquella que contiene una colección de operaciones y se utiliza para especificar los servicios de una clase o de un componente. La interfaz en UML se representa también como un círculo conectado con una línea continua, como se puede ver en la figura.
NOTA: En una generalización no hay multiplicidad ni roles.

Para entender mejor la función de una interfaz y como se implementa mediante realización se plantea el siguiente ejemplo.

Un caballo de carreras puede considerarse como una interfaz. La interfaz se compone de diferentes métodos: correr, detenerse, etc.
Las carreras al galope o al trote se realizan solo con caballos entrenados específicamente para un tipo u otro de carrera. Para los caballos de galope correr significa galopar. Para los caballos de trote (trotadores), correr significa trotar. Ambos responden a la interfaz Caballo_Carrera pero con diferentes clases debido al resultado de su entrenamiento.
HERENCIA MULTIPLE
La visibilidad se aplica en los atributos y operaciones de una clase o interfaz, estableciendo la proporción en la que otras clases podrán utilizar estos atributos u operaciones. La visibilidad se establece en tres niveles:

Nivel público: la funcionabilidad se extiende a otras clases (para su representación en UML se utiliza el signo +)

Nivel protegido: La funcionabilidad se otorga solo a las clases que se heredan de la clase original (para su representación en UML se utiliza el signo #)

Nivel privado: solo la clase original puede utilizar el atributo u operación (Para su representación en UML se utiliza el signo -)

La visibilidad se implementa en casos en los que algunas operaciones son transparentes al usuario o no son necesarias que el usuario las conozca por ejemplo en una clase Automóvil las operaciones acelerar() y Frenar() son públicas y las operación ActualizarKilometraje() es protegido.

# data[].attributes.attachment_link.description
Existen cuatro tipos de relaciones entre los elementos de un modelo UML: En las relaciones se habla de una clase destino y de una clase origen. La clase origen es desde la que se realiza la acción de relacionar. Es decir, desde la que parte la flecha.

# data[].attributes.attachment_link.title
Así terminará la humanidad, según Stephen Hawking

# data[].attributes.attachment_link.description
Conoce las tres amenazas que, según el físico y matemático, podrían aniquilar la civilización humana. Las predicciones de Stephen Hawking. Las predicciones de Stephen Hawking, el reconocido físico y teórico no sólo ha aportado teoremas acerca de los agujeros negros y las singularidades espaciotemporales, sino que ha dado a conocer abiertamente sus ideas acerca de [...]

# data[].attributes.body
See

# data[].attributes.body
Tipos de Relaciones

Asociación (conexión entre clases)

Dependencia (relación de uso)

Generalización/especialización (relaciones de herencia)

Asociación

Una asociación es una relación estructural que describe una conexión entre objetos.
Pueden ser :

Bidireccionales

Unidireccionales

Dependencia
Es una relación más débil que una asociación que muestra la relación entre un cliente y el proveedor de un servicio usado por el cliente. Los conceptos que hacen parte una relación de dependencia son Cliente y Servidor.

Cliente: Es el objeto que solicita un servicio.

Servidor: Es el objeto que provee el servicio.

Generalización
Son relaciones de herencia entre una superclase y sus subclases. Podemos usarlas cuando objetos de distintas clases pueden tener atributos similares y exhibir comportamientos parecidos (animales, mamíferos..)

# data[].attributes.body
En las relaciones se habla de una clase destino y de una clase origen. La clase origen es desde la que se realiza la acción de relacionar. Es decir, desde la que parte la flecha. La clase destino es la que recibe la flecha.

# data[].attributes.attachment_link.readable_text
Existen cuatro tipos de relaciones entre los elementos de un modelo UML:

En las relaciones se habla de una clase destino y de una clase origen. La clase origen es desde la que se realiza la acción de relacionar. Es decir, desde la que parte la flecha. La clase destino es la que recibe la flecha. Las relaciones se pueden modificar con estereotipos o con restricciones.

Es una relación estructural que describe un conjunto de enlaces, los cuales son conexiones entre objetos. La asociación se representa con una línea continua, posiblemente dirigida, que a veces incluye una etiqueta. A menudo se incluyen otros elementos para indicar la multiplicidad y roles de los objetos involucrados, como podemos ver en la siguiente figura:

Una asociación es una relación estructural que especifica que los objetos de un elemento están conectados con los objetos de otro. Dada una asociación entre dos clases, se puede navegar desde un objeto de una de ellas hasta uno de los objetos de la otra, y viceversa. Es posible que la asociación se dé de manera recursiva en un objeto, esto significa que dado un objeto de la clase se puede conectar con otros objetos de la misma clase. También es posible, aunque menos frecuente, que se conecten más de dos clases, estas se suelen llamar asociaciones n-arias. Las relaciones de asociaciones se utilizan cuando se quieren representar relaciones estructurales.

Por ejemplo, una clase Biblioteca podría tener una asociación uno a muchos con una clase Libro, indicando que cada instancia de Libro pertenece a una instancia de Biblioteca. Además, dado un Libro, se puede encontrar su Biblioteca, y dada una Biblioteca se puede navegar hacia todos sus Libros. Gráficamente, una asociación se representa con una línea continua entre las mismas o diferentes clases. Las asociaciones se utilizan para mostrar relaciones estructurales.

Hay cuatro adornos básicos que se aplican a las asociaciones: nombre, rol en cada extremo de la asociación, multiplicidad en cada extremo y agregación.

Las asociaciones se representan gráficamente por una línea continua que une ambas clases.

NOMBRE Y DIRECCIÓN EN ASOCIACIONES.

Se utiliza para describir la naturaleza de la relación. Para que no exista ambigüedad en su significado se le puede dar una dirección al nombre por medio de una flecha (un pequeño triángulo negro sólido) que apunte en la dirección que se pretende que el nombre sea leído.

En el ejemplo de la Figura se puede leer la asociación como "Director manda sobre Empleado".

La multiplicidad o diversificación es uno de los aspectos importantes de las asociaciones entre objetos. Indica la cantidad de objetos de una clase que se relacionan con otro objeto en particular de la clase asociada. Por ejemplo, en un curso escolar, el curso se imparte por un solo instructor, en consecuencia, el instructor y el curso están en una asociación de uno a uno. Sin embargo, en un seminario hay diversos instructores que impartirán el curso a lo largo del semestre, por lo tanto, el curso y el instructor tienen una asociación de uno a muchos.

En muchas situaciones del modelado es conveniente señalar cuantos objetos se pueden conectar a través de una instancia de la asociación. Este "cuantos" se denomina multiplicidad del rol en la asociación y se expresa como un rango de valores o un valor explicito. Cuando se indica multiplicidad en un extremo de una asociación se está indicando que, para cada objeto de la clase en el extremo opuesto debe haber tantos objetos en este extremo. Se puede indicar una multiplicidad de exactamente uno (1), cero o uno (0..1), muchos (0..*), uno o más (1..*) e incluso un número exacto (por ejemplo, 5).

Otras notaciones:

Una línea sin símbolos de multiplicidad denota asociación uno a uno:

Para indicar el papel que juega una clase en una asociación se puede especificar un nombre de rol. Se representa en el extremo de la asociación junto a la clase que desempeña dicho rol.

Como se observa en los ejemplos, los roles se colocan en la parte inferior de la línea que conectan dos clases (asociación en este caso. Debe aclararse que no precisamente en todos los casos se podrán identificar roles, por ejemplo cuando se cuente con una clase cliente y otra pedido esta asociación no cuenta con roles.

Un rol describe las propiedades estructurales y de comportamiento de un objeto en un objeto. Un objeto juega uno o más roles a lo largo de su existencia y un mismo rol puede ser jugado por diferentes objetos.

Una clase implementará uno o más roles y un rol podrá ser implementado por una o más clases.

ASOCIACIONES REFLEXIVAS (Involutivas).

En ocasiones una clase es una asociación consigo misma, cuando una clase puede desempeñar diversos roles o papeles. Una persona por ejemplo puede ser Conductor o pasajero, para representar estas asociaciones se realiza de la siguiente manera.

Una clase asociación es aquella que modela los atributos u operaciones implícitas en una asociación esta se realiza colocando el nombre de la asociación en la línea que une las clases y agregando la clase asociación mediante una línea discontinua, esta clase asociación puede tener asociaciones con otras clases.

Tanto la línea como el rectángulo de clase representan el mismo elemento conceptual: la asociación. Por tanto ambos tienen el mismo nombre, el de la asociación. Cuando la clase asociación sólo tiene atributos el nombre suele ponerse sobre la línea (como ocurre en el ejemplo de la Figura). Por el contrario, cuando la clase asociación tiene alguna operación o asociación propia, entonces se pone el nombre en la clase asociación y se puede quitar de la línea.

Ejemplo un jugador tiene una asociación de "Participa en" una clase equipo pero a su vez existe una clase asociación de contrato que tiene una asociación " Negociado por" una clase DirectorGeneral.
EJEMPLO DE ROL APLICANDO ASOCIACION REFLEXIVA
Ejemplo de Clase Asociación

En el caso de una asociación en la que participan más de dos clases, las clases se unen con una línea a un diamante central. Si se muestra multiplicidad en un rol, representa el número potencial de tuplas de instancias en la asociación cuando el resto de los N-1 valores están fijos. En la siguiente figura se ha impuesto la restricción de que un jugador no puede jugar en dos equipos distintos a lo largo de una temporada, porque la multiplicidad de "Equipo" es 1 en la asociación ternaria.

Un elemento derivado es aquel cuyo valor se puede calcular a partir de otros elementos presentes en el modelo, pero que se incluye en el modelo por motivos de claridad o como decisión de diseño. Se representa con una barra "/" precediendo al nombre del elemento derivado.

Como su nombre lo indica la agregación en UML permite representar una relación entre una clase y sus elementos agregados, esto quiere decir que las clases agregadas no afectan el funcionamiento directo de la clase que las contiene. El símbolo de agregación es un diamante colocado en el extremo en el que está la clase que representa el "todo".

Por ejemplo sabemos que a una computadora portátil se le pueden agregar elementos como micrófono, cámara web e impresora; sin embargo la ausencia de estos elementos no repercute en el funcionamiento básico de dicha portátil. El símbolo de agregación es un diamante vacio colocado en el extremo de la clase que contiene las clases agregadas.

En este tipo de asociación, la clase hija puede sobrevivir sin su clase padre.

Es posible que en una agregación se presenten restricciones, por ejemplo una computadora puede contar con una cámara web o micrófono e impresor, lo que indica que existe una restricción en la que solamente puede agregarse uno de esos dos elementos (cámara o micrófono).

COMPOSICIÓN

La composición a diferencia de la agregación representa una clase que está compuesta por otras clases que son indispensables para que esta funcione. Por ejemplo podríamos decir que la laptop citada en el ejemplo anterior funciona si le quitamos la cámara web; sin embargo no funcionará si le faltase la pantalla, por lo que podemos decir que una laptop está compuesta básicamente de una pantalla y su unidad de procesamiento (CPU).

Para representar la composición también se utiliza un rectángulo de la misma forma que una agregación con la diferencia que este no está vacío.
RESTRICCIONES DE AGREGACIÓN
Como se puede observar en el ejemplo la clase computadora tienen tanto clases de composición como de agregación ya que una computadora puede funcionar ya sea con ratón o con teclado pero no puede funcionar si le falta el monitor y el CPU, a su vez el CPU también está compuesto por clases de composición y agregación puesto que puede funcionar ante la ausencia de una unidad de lectura (DVD-ROOM) pero no ante la falta de la motherboard, procesador, disco duro y memoria.

El diagrama de contexto nos permite englobar en un entorno en común la agregación y asociación de elementos para poder utilizarlo en un ámbito más general, básicamente podemos detallar el contexto de una clase bajo la representación de un rectángulo y relacionar este contexto con otras clases. Enfoca la atención en una clase específica dentro de un sistema.

Es una relación semántica entre dos elementos en la cual un cambio a un elemento (el elemento independiente) puede afectar a la semántica del otro elemento (elemento dependiente).

Declara que un cambio en la especificación de una clase puede afectar a otra que la utiliza.

Se representa como una línea discontinua que a veces incluye una etiqueta.

HERENCIA (POO) O GENERALIZACIÓN (UML)

Uno de las características principales de la orientación a objetos es poder asociar a los objetos (clases en UML) con características y operaciones que puedan heredarse entre ellos, siempre y cuando estos estén ligados a un entorno en común, por ejemplo se no es fácil determinar que un radio, televisor y lavadora tienen atributos y operaciones en común como poseer un interruptor, un cable de energía eléctrica, operaciones de encendido y apagado que los identifican como parte de la superclase Electrodomésticos. La orientación a objetos se refiere a esto como herencia y en UML se denomina generalización la cual está representada por una línea continua que va desde la clase subordinada hasta la clase principal o clase "padre" conectada por un rectángulo vacio, como puede observarse en la figura.
Agregación es una relación débil.
Se dice que una herencia múltiple se presenta cuando una clase subordinada proviene de varias clases principales. Así por ejemplo si tenemos una clase padre e hijo ambos pueden estar contenidos en otra clase alumno.
Composición es una relación fuerte.
Una clase es abstracta cuando no puede ser instanciada o que no proveen objetos, la abstracción se utiliza cuando se desea englobar objetos de distintos tipos en clases que únicamente sirven para definir subclases. La abstracción en UML se representa colocando el nombre de la clase en cursiva.

Una clase abstracta no tiene atributos, solo tiene métodos dentro de ella.

Se usa nombre en cursiva para la clase abstracta. Posee métodos abstractos (sin implementación). Las subclases implementan los métodos abstractos definidos. No tiene atributos, solo métodos dentro de ella.

Es una relación semántica entre clasificadores, donde un clasificador especifica un contrato que otro clasificador garantiza que cumplirá. Se pueden encontrar relaciones de realización en dos sitios: entre interfaces y las clases y componentes que las realizan, y entre los casos de uso y las colaboraciones que los realizan. La realización se representa como una mezcla entre la generalización y la dependencia, esto es, una línea discontinua con una punta de flecha vacía.

INTERFAZ (Forma abreviada)

Una interfaz es aquella que contiene una colección de operaciones y se utiliza para especificar los servicios de una clase o de un componente. La interfaz en UML se representa también como un círculo conectado con una línea continua, como se puede ver en la figura.
NOTA: En una generalización no hay multiplicidad ni roles.

Para entender mejor la función de una interfaz y como se implementa mediante realización se plantea el siguiente ejemplo.

Un caballo de carreras puede considerarse como una interfaz. La interfaz se compone de diferentes métodos: correr, detenerse, etc.
Las carreras al galope o al trote se realizan solo con caballos entrenados específicamente para un tipo u otro de carrera. Para los caballos de galope correr significa galopar. Para los caballos de trote (trotadores), correr significa trotar. Ambos responden a la interfaz Caballo_Carrera pero con diferentes clases debido al resultado de su entrenamiento.
HERENCIA MULTIPLE
La visibilidad se aplica en los atributos y operaciones de una clase o interfaz, estableciendo la proporción en la que otras clases podrán utilizar estos atributos u operaciones. La visibilidad se establece en tres niveles:

Nivel público: la funcionabilidad se extiende a otras clases (para su representación en UML se utiliza el signo +)

Nivel protegido: La funcionabilidad se otorga solo a las clases que se heredan de la clase original (para su representación en UML se utiliza el signo #)

Nivel privado: solo la clase original puede utilizar el atributo u operación (Para su representación en UML se utiliza el signo -)

La visibilidad se implementa en casos en los que algunas operaciones son transparentes al usuario o no son necesarias que el usuario las conozca por ejemplo en una clase Automóvil las operaciones acelerar() y Frenar() son públicas y las operación ActualizarKilometraje() es protegido.

# data[].attributes.attachment_link.description
Existen cuatro tipos de relaciones entre los elementos de un modelo UML: En las relaciones se habla de una clase destino y de una clase origen. La clase origen es desde la que se realiza la acción de relacionar. Es decir, desde la que parte la flecha.

# data[].attributes.body
Link a video donde se explican relaciones en Python

https://www.youtube.com/watch?v=lt0vliz1z_s

# data[].attributes.attachment_link.title
Relaciones entre Clases en Python (Dependencia entre Clases) | Curso Python 3 🐍 # 40

# data[].attributes.headline
  Agregación / Composición (todo-parte//tiene-un // parte-de).Esta relación se presenta entre una clase TODO y una clase PARTE que es componente de TODO. La implementación de este tipo de relación se consigue definiendo como atributo un objeto de la otra clase que es parte-de.                   Los objetos de la clase TODO son objetos contenedores. Un objeto contenedor es aquel que contiene otros objetos.En la agregación, las clases contienen objetos, y no otras clases.    

# data[].attributes.subject
  Agregación / Composición (todo-parte//tiene-un // parte-de).Esta relación se presenta entre una clase TODO y una clase PARTE que es componente de TODO. La implementación de este tipo de relación se consigue definiendo como atributo un objeto de la otra clase que es parte-de.                   Los objetos de la clase TODO son objetos contenedores. Un objeto contenedor es aquel que contiene otros objetos.En la agregación, las clases contienen objetos, y no otras clases.    

# data[].attributes.headline
En las relaciones se habla de una clase destino y de una clase origen. La clase origen es desde la que se realiza la acción de relacionar. Es decir, desde la que parte la flecha. La clase destino es la que recibe la flecha. Las relaciones se pueden modificar con estereotipos o con restricciones.

# data[].attributes.subject
En las relaciones se habla de una clase destino y de una clase origen. La clase origen es desde la que se realiza la acción de relacionar. Es decir, desde la que parte la flecha. La clase destino es la que recibe la flecha. Las relaciones se pueden modificar con estereotipos o con restricciones.

# data[].attributes.headline
Las clases, al igual que los objetos, no existen de modo aislado. La Orientación a Objetos (POO) intenta modelar aplicaciones del mundo real tan fielmente como sea posible y por lo tanto debe reflejar estas relaciones entre clases y objetos.Según G. Booch [Booch, 94] existen tres clases básicas de relaciones entre los objetos:           .- Agregación / Composición                   .- Asociación                                         .- Generalización / Especialización. HERENCIA.                                            .- Herencia Simple.                                                                              .- Herencia Múltiple        

# data[].attributes.subject
Las clases, al igual que los objetos, no existen de modo aislado. La Orientación a Objetos (POO) intenta modelar aplicaciones del mundo real tan fielmente como sea posible y por lo tanto debe reflejar estas relaciones entre clases y objetos.Según G. Booch [Booch, 94] existen tres clases básicas de relaciones entre los objetos:           .- Agregación / Composición                   .- Asociación                                         .- Generalización / Especialización. HERENCIA.                                            .- Herencia Simple.                                                                              .- Herencia Múltiple        

# data[].attributes.body
Existen distintos tipos de relaciones entre clases, como:

Asociación (conexión entre clases)

Dependencia (relación de uso)

Generalización/especialización (relaciones de herencia)

# data[].attributes.headline
Adolfo / Relaciones entre objetos (entre clases)

# data[].attributes.subject
Adolfo / Relaciones entre objetos (entre clases)

# data[].attributes.body
El primer y más importante concepto de la POO es la distinción entre clase y objeto.

Una clase es una plantilla. Define de manera genérica cómo van a ser los objetos de un determinado tipo. Por ejemplo, una clase para representar a animales puede llamarse ‘animal’ y tener una serie de atributos, como ‘nombre’ o ‘edad’ (que normalmente son propiedades), y una serie con los comportamientos que estos pueden tener, como caminar o comer, y que a su vez se implementan como métodos de la clase (funciones).

Un ejemplo sencillo de un objeto, como decíamos antes, podría ser un animal. Un animal tiene una edad, por lo que creamos un nuevo atributo de ‘edad’ y, además, puede envejecer, por lo que definimos un nuevo método. Datos y lógica. Esto es lo que se define en muchos programas como la definición de una clase, que es la definición global y genérica de muchos objetos.

# data[].attributes.headline
Las relaciones existentes entre las distintas clases nos indican cómo se comunican los objetos de esas clases entre sí.

# data[].attributes.subject
Las relaciones existentes entre las distintas clases nos indican cómo se comunican los objetos de esas clases entre sí.

# data[].attributes.body
Existen tres clases básicas de relaciones entre los objetos:

Agregación / Composición: Esta relación se presenta entre una clase TODO y una clase PARTE que es componente de TODO

Asociación: Es una relación entre clases. Implica una dependencia semántica. Son relaciones del tipo «pertenece_a» o «está_asociado_con». Se da cuando una clase usa a otra clase para realizar algo.

Generalización / Especialización:La relación de herencia es una relación entre clases que comparten su estructura y el comportamiento.

Fuente: https://bit.ly/3IXnQ94

# data[].attributes.body
Se encontraron que hay 2 tipos de jerarquías de objetos de interés especial: – Enlaces – Agregación

# data[].attributes.body
1. Asociación. Indica relaciones de mandato bidireccionales (Punteros ocultos en C++). Conlleva dependencia semántica y no establece una dirección de dependencia. Tienen cardinalidad.

2. Herencia. Por esta relación una clase (subclase) comparte la estructura y/o comportamiento definidos en una (herencia simple) o más (herencia múltiple) clases, llamadas superclases.

Representa una relación del tipo "es un" entre clases.

Una subclase aumenta o restringe el comportamiento o estructura de la superclase (o ambas cosas).

Una clase de la que no existen ejemplos se denomina {\it abstracta}.

C++ declara como virtuales todas aquellas funciones que quiere modificar en sus subclases.

3. Agregación. Representa una relación del tipo "tener un" entre clases. Cuando la clase contenida no existe independientemente de la clase que la contiene se denomina agregación por valor y además implica contenido físico, mientras que si existe independientemente y se accede a ella indirectamente, es agregación por referencia.

4. Uso. Es un refinamiento de la asociación donde se especifica cual es el cliente y cual el servidor de ciertos servicios, permitiendo a los clientes acceder sólo a las interfaces públicas de los servidores, ofreciendo mayor encapsulación de la información.

5. Ejemplificación Se usa en lenguajes que soportan genericidad (declaración de clases parametrizadas y argumentos tipo template). Representa las relaciones entre las clases parametrizadas, que admiten parámetros formales, y las clases obtenidas cuando se concretan estos parámetros formales, ejemplificados o inicializados con un ejemplo.

6. Metaclases Son clases cuyos ejemplos son a su vez clases. No se admiten en C++.

http://fpsalmon.usc.es/genp/doc/cursos/poo/clases.html#REC

# data[].attributes.attachment_link.title
Programacion orientada a objetos: Clases y objetos

# data[].attributes.attachment_link.description
El estado de un objeto abarca todas las propiedades del objeto, y los
valores actuales de cada una de esas propiedades. Las propiedades de los
objetos suelen ser estáticas, mientras los valores que toman estas
propiedades cambian con el tiempo.

# data[].attributes.body
La relación entre 2 objetos cualesquiera, abarca las suposiciones que cada uno realiza acerca del otro, incluyendo: – qué operaciones pueden realizarse y, – qué comportamiento se obtiene

# data[].attributes.body
las relaciones entre ellas pueden ser de diferentes tipos:
1 a 1
1 a Muchos
Muchos a Muchos

# data[].attributes.body
Las relaciones existentes entre las distintas clases indican como se están comunicando las clases entre sí. Una asociación es una conexión estructural simple entre clases. Las instancias de las clases implicadas en una asociación estarán probablemente comunicándose en el momento de ejecución.

# data[].attributes.body
sfsfdsf

# data[].attributes.body
Dependencias
Es una relación de significado entre dos elementos, donde cualquier cambio a un elemento independiente, puede afectar el significado de otro elemento dependiente.
Las dependencias generalmente representan relaciones de uso que manifiestan que un cambio en la especificación de un elemento puede afectar a otro que la utiliza, pero no necesariamente a la inversa.
Las clases o paquetes utilizan en su mayoría en su contexto, para indicar que una clase utiliza a otra como argumento en la asignatura de una operación.

Generacionales
Esta hace referencia a la relación de una súper clase o clase padre con una subclase o clase hija. La generalización significa que los objetos hijos se pueden emplear en cualquier clase donde pueda aparecer el padre, pero no a la inversa. Es decir, el hijo puede sustituir al padre, pero el padre no puede sustituir al hijo. Estas son sus características:
El hijo hereda atributos y operaciones del padre.El hijo puede agregar atributos y operaciones.Puede tener operaciones polimórficas
La generalización se llama a veces relación “es-un-tipo-de”: un elemento (clase Animal mamífero) es-un-tipo-de un elemento más general (clase Animal).

Asociaciones
Es una relación estructural que especifica que los objetos de un elemento están conectados con los objetos de otro. Permitiendo a una asociación entre dos clases se puede pasar de un objeto de una clase hasta un objeto de otra clase.
Podemos encontrar una característica especial entre las asociaciones y las dependencias ya que estas pueden ser reflexivas.

Realización
Es una relación semántica entre clasificadores donde este especifica unas normas o un reglamento con otro clasificador que garantiza que se cumplirá.
Se encuentran relaciones de realización: entre interfaces, clases y componentes que las realizan y entre los casos de uso y las colaboraciones que los realizan.
Si confrontamos las relaciones de la dependencia, la generalización y la asociación notamos que la realización es diferente a las otras relaciones mencionadas y así poderla trabajar como un tipo aparte de relación. Pero semánticamente la realización es una mezcla entre dependencia y generalización.

Relaciones

Cuando diferentes objetos trabajan en función a una meta o propósito y se logra por medio de la colaboración entre las partes a través de las relaciones.
En pocas palabras se define como la conexión entre elementos.
Para diferenciar las distintas relaciones se utilizan una Simbología con base en varios tipos de líneas.

# data[].attributes.body
Las relaciones entre las clases definen el como se comunican las clases entre si. Los tipos: Asociacion, Dependencia y generalizacion

# data[].attributes.body
Las clases se relacionan de diferentes formas como: una dependencia o una relación asociada.

# data[].attributes.body
*Asociacion (conexión entre clases)
*Dependencia (relación de uso)
*Generalizacion (relaciones de herencia)/especializacion

Pueden ser relaciones Bidireccionales o Unidireccionales

# data[].attributes.body
Las relaciones existentes entre las distintas clases indican como se están comunicando las clases entre sí. Una asociación es una conexión estructural simple entre clases. Las instancias de las clases implicadas en una asociación estarán probablemente comunicándose en el momento de ejecución.

Existen distintos tipos de forma de relaciones entre las clases: Asociación (conexión entre clases), dependencia, y generalización/especialización (relaciones de herencia).

# data[].attributes.body
Las relaciones existentes entre las distintas clases nos indican cómo se comunican los objetos de esas clases entre sí: Los mensajes “navegan” por las relaciones existentes entre las distintas clases. Una asociación es una relación estructural que describe una conexión entre objetos.

# data[].attributes.body
Investigar acerca de las relaciones entre clases y los tipos de relaciones que existen.