# Class Administrador

java.lang.Object
Modelo.Usuario
Modelo.Administrador

public class Administrador extends Usuario
Representa un usuario con privilegios de administración en el sistema.

Extiende `Usuario` sin añadir atributos adicionales; la distinción respecto a un usuario normal se establece mediante el tipo de objeto (polimorfismo). Un `Administrador` tiene acceso al panel de gestión de usuarios y a las estadísticas globales del sistema.

Version:
  1.0
Author:
  Adrián

- ## Field Summary

  ### Fields inherited from class Usuario

  `passwordHash, username`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Administrador(String username, String password)`
  Crea un nuevo administrador con las credenciales indicadas.
  `Administrador(String username, String passwordHash, boolean yaEsHash)`
  Constructor de carga para reconstruir un `Administrador` desde fichero.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `String`
  `toArchivo()`
  Serializa el administrador en una línea CSV para su almacenamiento en fichero.
  `String`
  `toString()`
  Devuelve una representación legible del administrador para depuración y logs.

  ### Methods inherited from class Usuario

  `getUsername, verificarPassword`

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- ## Constructor Details

  - ### Administrador

    public Administrador(String username, String password)
    Crea un nuevo administrador con las credenciales indicadas.
    Parameters:
      `username` - nombre de usuario único; no debe estar vacío ni contener espacios.
      `password` - contraseña en texto plano asociada a esta cuenta.

  - ### Administrador

    public Administrador(String username, String passwordHash, boolean yaEsHash)
    Constructor de carga para reconstruir un `Administrador` desde fichero.

    Usar exclusivamente en cargarUsuarios() cuando el hash de la contraseña ya está almacenado en disco. Pasar `true` en `yaEsHash` evita que la contraseña sea hasheada una segunda vez, lo que corrompería las credenciales y haría imposible iniciar sesión.

    Parameters:
      `username` - nombre de usuario tal como aparece en el fichero
      `passwordHash` - hash SHA-256 de la contraseña, leído directamente del fichero
      `yaEsHash` - `true` si `passwordHash` ya es un hash y no debe procesarse; `false` si es texto plano y debe hashearse
    See Also:
      - `Usuario(String, String, boolean)`

- ## Method Details

  - ### toString

    public String toString()
    Devuelve una representación legible del administrador para depuración y logs.
    Specified by:
      `toString` in class `Usuario`
    Returns:
      cadena con el formato `Administrador{username='<username>'}`

  - ### toArchivo

    public String toArchivo()
    Serializa el administrador en una línea CSV para su almacenamiento en fichero.

    El campo `esAdmin` se escribe como `true` para distinguir este registro de los usuarios normales al cargar el fichero.

    Specified by:
      `toArchivo` in class `Usuario`
    Returns:
      cadena con el formato `username;password;true`