# data[].attributes.body
- Relaciones de asociación: se basan en la idea de observar o entender un objeto como una composición de otros objetos.

- Relaciones de agregación: dos (o más) clases tiene una relación de asociación cuando una de ellas tenga que requerir o utilizar alguno de los servicios (es decir, acceder a alguna de las propiedades o métodos) de las otras.

- Especialización/generalización: (o de herencia) entre dos clases. Esta relación se considera propia de los lenguajes de POO. Una relación de herencia de la clase B (subclase, o clase hija) con respecto a A (superclase o clase base) nos permite decir que la clase B obtiene todos los métodos y atributos de la clase A, y que luego puede añadir algunas características propias. De este modo podemos crear jerarquías de clases que comparten ciertas propiedades de una forma más ágil.

# data[].attributes.body
Las relaciones de clases son las que nos indican la manera en las que se comunican los objetos que pertenecen a distintas clases. Esta relación indica cómo se comparten los datos.

Existen varias relaciones:
- Generalización (herencia): agrupa en una estructura los comportamientos comunes de las clases, es una sola clase general.

- Asociación: es una relación  estructural que describe la conexión entre objetos.

- Agregación: es una forma de asociación en la que existe una relación entre una clase llamada todo y las demás denominadas partes.

- Composición: tipo de asociación en la cual las partes solo existen si se asocian al todo.

# data[].attributes.body
Existen distintos tipos de relaciones:
- Asociación (conexión entre clases)
- Dependencia (relación de uso)
- Generalización/especialización (relaciones de herencia)

- Asociación (conexión entre clases):
Bidireccional / Unidireccional
Dentro de la asociación tenemos la multiplicidad de las asociaciones (foto)

- Dependencia: Se trata de la relación entre un objeto que solicita un servicio (cliente) y un objeto que provee el servicio solicitado (servidor)

- Generalización/especialización (relaciones de herencia): Se trata de la relación entre una superclase y sus subclases.

# data[].attributes.body
Las relaciones entre clases nos indican como se comunican las clases entre si.

-Asociación: Conexión entre objetos. De un objeto se puede ir a otro.

-Dependencia: relación de jerarquía, en la que una clase hijo tiene ciertos atributos y métodos que ha heredado de una clase padre.

-Generalización: es una relación entre dos clases de modo que una se considera como forma especializada de la otra

# data[].attributes.body
Hay 3 distintas relaciones entre clases:
- Asociación: Relación estructural que describe una conexión entre objetos. Suelen ser bidireccionales.

- Dependencia: 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.

- Generalización: factorizar las propiedades en común de un conjunto de clases en una clase más general.

# data[].attributes.body
La cardinalidad de una relación es el número de filas relacionadas de cada uno de los objetos en la relación. (ya que existen relaciones entre dos asuntos de consulta o entre tablas dentro de un asunto de consulta) Las filas se relacionan mediante la expresión de la relación; normalmente, esta expresión hace referencia a las claves principal y foránea de las tablas subyacentes.

Entre los tipos de relaciones, encontramos:
-Asociación: Conexión entre objetos.
-Generalización: Superclase y subclases.
-Dependencia: Relación de uso (más débil que una asociación)

# data[].attributes.body
Una clase es un tipo de dato definido por el usuario, y la crear instancias de una clase hace relación a la creación de objetos de ese tipo y existen varios tipos de relaciones: asociación(que es una conexion entre los objetos), dependencia(es mas debil) y generalizacion.

# data[].attributes.body
Las relaciones existentes entre las distintas clases indican como se están comunicando las clases entre sí. Existen distintos tipos de relaciones:

-Asociación: conexión entre objetos de clases. Las instancias de las clases implicadas en una asociación estarán probablemente comunicándose en el momento de ejecución.

-Dependencia: relación de uso, más débil que la asociación

-Generalización: consiste en factorizar las propiedades comunes de un conjunto de clases en una clase más general.

# data[].attributes.body
Existen  relaciones de agregación, asociación, composición y herencia.
La relaciones entre agregación y composición son similares, pero la diferencia radica en que las clases que forman la de composición no tienen sentido la una sin la otra, lo que indica una relación fuerte. Mientras que las de agregación el sistema permite no tener objetos al otro lado de la relación.

# data[].attributes.body
Tipos de relaciones:
- Asociación: define una conexión entre objetos.
- Dependencia: es más débil que una asociación. Es una relación de uso.
- Generalización/especialización (relación de herencia). Es la relación entre una superclase y sus subclases. Esto es: diferentes clases pueden tener atributos y comportamientos similares.

# data[].attributes.body
Existen varios tipos de relaciones entre clases:
- Asociación: conexión entre objetos. Hay unidireccionales y bidireccionales.
*Multiplicidad de asociaciones: determina cuantos objetos de cada tipo intervienen en la relación. Cada asociación tiene 2 multiplicidades, una para cada extremo.
*Agregación y composición: cuya relación esta entre un todo y sus partes.
Ej.:(Imagen superior)

- Dependencia: relación más débil que una asociación que muestra la relación entre un cliente y el proveedor.
Ej.: recurrir a una función de una clase en específico.

- Generalización: gestionar complejidad ordenando taxonomicamente clases(de las más generales a las más específicas). Se obtiene usando el método de abstracción, factorizando las propiedades comunes de un conjunto de clases en una general.
Ej.: clase padre - clase hija, clase base - clase derivada.

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

# data[].attributes.body
Las relaciones de agregación son relaciones en las cuales una serie de clases aparecen como tipos de los atributos de otra clase. Estas relaciones se conocen también como relaciones “todo - partes”. El “todo” está representado por la clase que aglutina a las  a las otras clases, y las “partes” están dadas por las diversas clases que aparecen.

La mejor forma de identificar si nos encontramos ante una relación de agregación es preguntarnos si la clase que queremos definir “tiene un” (en inglés, “has - a”) atributo de la otra clase que estemos usando.

# data[].attributes.body
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.