> For the complete documentation index, see [llms.txt](https://educacion.gitbook.io/programacion/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://educacion.gitbook.io/programacion/exercicios-java/ud4-solucions/relacions-entre-clases.md).

# Relacións entre clases

1. Usuario y autenticación: Dependencia

{% @mermaid/diagram content="classDiagram
class Autenticador {
+autenticar(Usuario usuario) boolean
}

```
class Usuario {
    -String nombre
    -String contraseña
    +getNombre() String
    +getContraseña() String
}

Autenticador ..> Usuario : usa" %}
```

2\. Pedido y LineaPedido: Composición

{% @mermaid/diagram content="classDiagram
class Pedido {
-String codigoCliente
-Date fecha
-double importeTotal
-List~~LineaPedido~~ lineas
+calcularTotal() double
}

```
class LineaPedido {
    -String codigoProducto
    -String nombreProducto
    -int cantidad
    -double importeLinea
    +calcularImporte() double
}

Pedido "1" *-- "*" LineaPedido : contiene" %}
```

3\. Curso y alumno: Asociación

{% @mermaid/diagram content="classDiagram
class Curso {
-String nombre
-List~~Alumno~~ alumnos
+matricularAlumno(Alumno a) void
}

```
class Alumno {
    -String nombre
    -List~Curso~ cursos
    +matricularEnCurso(Curso c) void
}

Curso "*" -- "*" Alumno : matriculado en" %}
```

4\. Estudiante y examen: Dependencia

{% @mermaid/diagram content="classDiagram
class Alumno {
+realiza(Examen ex) Examen
}

```
class Examen {
    
}

Alumno ..> Examen : usa" %}
```

5\. Usuario y perfiles: Herencia

{% @mermaid/diagram content="classDiagram
class Usuario {
<<abstract>>
-String nombre
-String email
+login() void
+logout() void
}

```
class Administrador {
    +gestionarUsuarios() void
    +configurarSistema() void
}

class UsuarioNormal {
    +usarFuncionalidad() void
    +consultarDatos() void
}

Usuario <|-- Administrador
Usuario <|-- UsuarioNormal" %}
```

6\. Biblioteca y Libro: Agregación

{% @mermaid/diagram content="classDiagram
class Biblioteca {
-String nombre
-String direccion
-List~~Libro~~ libros
+añadirLibro(Libro l) void
+prestarLibro(Libro l) void
}

```
class Libro {
    -String titulo
    -String autor
    -String isbn
    +getTitulo() String
    +getAutor() String
}

Biblioteca "1" o-- "*" Libro : contiene" %}
```

7\. Cliente y dirección: Composición/Agregacion. Dependiendo si se considera que la dirección se puede compartir.

{% @mermaid/diagram content="classDiagram
class Cliente {
-String nombre
-String telefono
-Direccion direccionEnvio
+realizarPedido() void
}

```
class Direccion {
    -String calle
    -String ciudad
    -String codigoPostal
    +getDireccionCompleta() String
}

Cliente "1" *-- "1" Direccion : tiene" %}
```

8\. CorreoWeb y Email: Agregación (los emails pueden existir independientemente)

{% @mermaid/diagram content="classDiagram
class CorreoWeb {
-String usuario
-List~~Email~~ bandejaEntrada
-List~~Email~~ bandejaSalida
+enviarEmail(Email e) void
+recibirEmail(Email e) void
}

```
class Email {
    -String remitente
    -String destinatario
    -String asunto
    -String cuerpo
    +enviar() boolean
    +leer() String
}

CorreoWeb "1" o-- "*" Email : gestiona" %}
```

9\. Libros con tipos específicos: Herencia

{% @mermaid/diagram content="classDiagram
class Libro {
<<abstract>>
-String titulo
-String autor
+leer()\* String
}

```
class LibroPapel {
    -int numeroPaginas
    -String editorial
    +leer() String
    +pasarPagina() void
}

class eBook {
    -String formato
    -double tamanhoMB
    +leer() String
    +cambiarTamanoLetra() void
}

Libro <|-- LibroPapel
Libro <|-- eBook" %}
```

10\. Ordenador y sus componentes: Composción

{% @mermaid/diagram content="classDiagram
class Ordenador {
-String modelo
-PlacaBase placa
-MemoriaRAM memoria
-Procesador cpu
+encender() void
+apagar() void
}

```
class PlacaBase {
    -String modelo
    -String chipset
    +gestionarComponentes() void
}

class MemoriaRAM {
    -int capacidadGB
    -String tipo
    +almacenarDatos() void
}

class Procesador {
    -String modelo
    -double velocidadGHz
    +procesarInstrucciones() void
}

Ordenador "1" *-- "1" PlacaBase : contiene
Ordenador "1" *-- "1" MemoriaRAM : contiene
Ordenador "1" *-- "1" Procesador : contiene" %}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://educacion.gitbook.io/programacion/exercicios-java/ud4-solucions/relacions-entre-clases.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
