La dependencia
La dependencia es la forma de interacción más pobre semánticamente, ya que relaciona dos clases por el simple hecho de que una utiliza a otra. Por ejemplo, PruebaBombilla depende de Bombilla.

La asociación
Expresa colaboración entre clases. En UML se muestra con una línea entre las clases implicadas, indicando el tipo de relación (por ejemplo, “es propietario de”).

Multiplicidad de una asociación
Define restricciones sobre el número de objetos que participan en la relación: números fijos (1, 12), rangos (0..2) o asterisco (0..*) para indicar “cualquier número”.

Grado de una asociación
Clasificación por número de clases participantes: unaria, binaria, ternaria o n-aria.

Implementación en Java de una asociación
Ejemplo con MandoDistancia y Televisor:
public class Televisor {
private int canalActual;
private boolean encendido;
public Televisor() {
this.canalActual = 1;
this.encendido = false;
}
public void encender() {
encendido = true;
}
public void apagar() {
encendido = false;
}
public void seleccionarCanal(int nuevoCanal) {
if (encendido) {
this.canalActual = nuevoCanal;
}
}
}
public class MandoDistancia {
private Televisor tv;
public MandoDistancia(Televisor tele) {
tv = tele;
}
public void encenderTelevisor() {
tv.encender();
}
public void apagarTelevisor() {
tv.apagar();
}
public void cambiarCanalTelevisor(int nuevoCanal) {
tv.seleccionarCanal(nuevoCanal);
}
}

Las tablas en Java
Declaración y creación:
int edades[];
edades = new int[20];
El acceso es mediante índices empezando en cero. La propiedad length indica el tamaño del array.

Asociaciones todo/parte
Composición: Las partes existen solo si existe el todo. En UML se representa con un diamante relleno.

Agregación: Las partes pueden existir independientemente del todo. En UML se representa con un diamante vacío.

La herencia
En orientación a objetos la herencia es una forma de relacionarse entre dos clases en la que una (subclase o clase hija) recibe parte de las propiedades y métodos de otra (superclase o clase padre).
Sintaxis en Java:
public class Hija extends Padre { }
El modificador protected permite que los atributos y métodos sean heredados por subclases sin exponerlos públicamente.



