El diagrama de clases describe las clases del sistema (sus atributos, funciones, y relaciones entre objetos.)

  1. Clases

    • Una clase define un grupo de objetos que comparten características, condiciones y significado....nimal, Persona, Mensaje, Expediente, etc....
    • La clase está compuesta por tres elementos: nombre de la clase, atributos y funciones.
  2. Relaciones

    • Las relaciones se representan con una linea que une las clases, con algunos textos y símbolos para indicar el tipo de la relación.

Tipos de relaciones

Textos

  1. Nombre: ayuda a entender la relación que tienen las dos clases (suelen utilizarse verbos).
  2. Multiplicidad: número de elementos que participan en la relación (1, N).

Símbolos

  1. Asociación: representa una relación simple (dependencia semántica).
  2. Agregación: representa relaciones en las que un objeto es parte de otro.
  3. Composición: similar a la agregación, pero en un sentido más estricto de contención (es decir, cuando el elemento "contenedor" desaparece, deben desaparecer todos los elementos que lo componen).
  4. Herencia: permiten que una clase hija reciba los atributos y métodos de otra clase (interfaz).
  5. Dependencia: representar que una clase requiere de otra para ofrecer sus funcionalidades.

Realización

La realización se puede emplear en diagramas de clases y diagramas de componentes y representa a una clase que implementa una interfaz.

Generalización

La generalización ocurre cuando se usa la herencia“es un”laciones "es un", por ejemplo "Un Tigre es un Animal"“Tigre”igre" se generaliza por "Animal".

Interfaz

Las interfaces son un subconjunto estricto de clases abstractas que no pueden tener estado ni implementación.

Clase abstracta

Las clases abstractas son objetos incompletos, que proporcionan una implementación base en común para varias clases derivadas por herencia.

  1. Una clase no abstracta se llama clase concreta. Y una clase debe declararse abstracta cuando tiene uno o más métodos abstractos.

Por ejemplo, para diferentes vehículos, se podría definir una clase abstracta con el método "Conducción" para indicar que todos los hijos herederos deben implementar esta función, y que cada cual lo implemente de distinta manera.

La interfaz no es en realidad una clase. Es un tipo de contrato que puede ser satisfecho por cualquier clase que la implemente. Las interfaces no tienen ninguna propiedad, sólo declaraciones de métodos públicos que la clase que implemente la interfaz deberá implementar.

La interfaz se usa para la comunicación entre 2 clases similares o no (muy útil en APIs).

Interfaz vs Clase abstracta

  1. Las clases abstractas están destinadas a ser heredadas, y cuando una clase hereda de otra, significa que existe una fuerte relación entre las 2 clases.

!!! Por ejemplo, si tenemos una clase base abstracta llamada "Canino", cualquier clase derivada debería ser un animal que pertenezca a la familia Canina (como un Perro o un Lobo).

  1. Se puede implementar más de una interfaz en una clase. Mientras que en Java una clase solo puede derivar de una sola clase base abstracta (es decir, no permite la herencia múltiple).

  2. Una clase abstracta puede proporcionar algunos métodos con definiciones, por lo que una clase abstracta puede tener métodos ya implementados. Una clase abstracta también puede tener constructores y variables de instancia. Todo lo cual no se puede tener en una interfaz.