> 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/ud3-solucions/poo-getters-and-setters-e-tostring.md).

# POO: Getters and setters e toString()

1. Videoxogos

```java
class Videoxogo {
    // Atributos
    String titulo;
    String xenero;
    String plataforma;
    double prezo;
    boolean economico;
    
    public Videoxogo() {
       this("", "" , "", 0);
    }
    
    public Videoxogo(String titulo, String xenero) {
        this(titulo, xenero, "", 0);
    }
    
    public Videoxogo(String titulo, String xenero, String plataforma, double prezo) {
        this.titulo = titulo;
        this.xenero = xenero;
        this.plataforma = plataforma;
        setPrezo(prezo);
    }
    
    String getTitulo() {
        return titulo;
    }
    
    String getXenero() {
        return xenero;
    }
    
    String getPlataforma() {
        return plataforma;
    }
    
    double getPrezo() {
        return prezo;
    }
    
    boolean isEconomico() {
        return economico;
    }
    
    void setTitulo(String titulo) {
        this.titulo = titulo;
    }
    
   void setXenero(String xenero) {
        this.xenero = xenero;
    }
    
   void setPlataforma(String plataforma) {
        this.plataforma = plataforma;
    }
    
   void setPrezo(double prezo) {
        this.prezo = prezo;
        // Actualizar atributo económico baseándose no novo prezo
        this.economico = (prezo < 30.0);
    }
    
    // Método mostrarInfo()
    public void mostrarInfo() {
        System.out.println("=== INFORMACIÓN DO VIDEOXOGO ===");
        System.out.println("Título: " + titulo);
        System.out.println("Xénero: " + xenero);
        System.out.println("Plataforma: " + (plataforma.isEmpty() ? "Non especificada" : plataforma));
        System.out.println("Prezo: " + prezo + "€");
        System.out.println("Económico: " + (economico ? "SÍ" : "NON"));
        System.out.println("================================");
    }
}
```

```java
class App {
    public static void main(String[] args) {
        
        System.out.println("Videoxogo 1 - Constructor vacío:");
        Videoxogo v1 = new Videoxogo();
        v1.setTitulo("Super Mario Odyssey");
        v1.setXenero("Aventura");
        v1.setPlataforma("Nintendo Switch");
        v1.setPrezo(49.99);
        v1.mostrarInfo();
        
        System.out.println("Videoxogo 2 - Constructor con título e xénero:");
        Videoxogo v2 = new Videoxogo("The Legend of Zelda", "Aventura");
        // Establecemos os valores faltantes con setters
        v2.setPlataforma("Nintendo Switch");
        v2.setPrezo(25.50); // Menor de 30€ → económico = true
        v2.mostrarInfo();
        
        System.out.println("Videoxogo 3 - Constructor completo:");
        Videoxogo v3 = new Videoxogo("FIFA 24", "Deportes", "PlayStation 5", 69.99);
        // Todos os atributos xa están establecidos no constructor
        v3.mostrarInfo();
    }
}
```

2. Conta bancaria

```java
public class ContaBancaria {
    // Atributos
    private String titular;
    private String numeroConta;
    private double saldo;
    private String tipoConta; 
    private int movementos;
    
    public ContaBancaria(String titular, String numeroConta, double saldo, String tipoConta, int movementos) {
        this.titular = titular;
        this.numeroConta = numeroConta;
        this.saldo = saldo;
        this.tipoConta = tipoConta;
        this.movementos = movementos;
    }
    
    public ContaBancaria() {
        this("", "", 0.0, "Corrente", 0);
    }
    
    public ContaBancaria(String titular, String numeroConta) {
        this(titular, numeroConta, 0.0, "Corrente", 0);
    }
      
    
    public String getTitular() {
        return titular;
    }
    
    public String getNumeroConta() {
        return numeroConta;
    }
    
    public double getSaldo() {
        return saldo;
    }
    
    public String getTipoConta() {
        return tipoConta;
    }
    
    public int getMovementos() {
        return movementos;
    }
    
    public void setTitular(String titular) {
        this.titular = titular;
    }
    
    public void setNumeroConta(String numeroConta) {
        this.numeroConta = numeroConta;
    }
    
    public void setSaldo(double saldo) {
        this.saldo = saldo;
    }
    
    public void setTipoConta(String tipoConta) {
        this.tipoConta = tipoConta;
    }
    
    public void setMovementos(int movementos) {
        this.movementos = movementos;
    }
   
    public void depositar(double cantidade) {
        this.saldo += cantidade;
        this.movementos++;
        System.out.println("Depositados " + cantidade + "€. Saldo actual: " + this.saldo + "€");
    }
    
    public void retirar(double cantidade) {
        if (cantidade <= this.saldo) {
            this.saldo -= cantidade;
            this.movementos++;
            System.out.println("Retirados " + cantidade + "€. Saldo actual: " + this.saldo + "€");
        } else {
            System.out.println("Erro: Non hai saldo suficiente para retirar " + cantidade + "€");
        }
    }
    
    public void aplicarComisionMensual() {
        double comision = 0.0;
        
        if (this.saldo < 0) {
            comision = 10.0;
            System.out.println("Aplicada comisión por saldo negativo: " + comision + "€");
        } else if (this.tipoConta.equalsIgnoreCase("Corrente") && this.saldo < 500) {
            comision = 5.0;
            System.out.println("Aplicada comisión por conta corrente con saldo baixo: " + comision + "€");
        } else if (this.tipoConta.equalsIgnoreCase("Aforro") && this.saldo < 100) {
            comision = 1.0;
            System.out.println("Aplicada comisión por conta aforro con saldo baixo: " + comision + "€");
        }
        
        if (comision > 0) {
            this.saldo -= comision;
            System.out.println("Comisión aplicada. Novo saldo: " + this.saldo + "€");
        } else {
            System.out.println("Non se aplicou ningunha comisión este mes.");
        }
    }
    
    public double calcularInteres(double aportacion) {
        double interes = aportacion * 0.01; // 1% de interés
        double total = aportacion + interes;
        System.out.println("Aportación: " + aportacion + "€ + Interés (1%): " + interes + "€ = " + total + "€");
        return total;
    }
    
    public void simularPlanDeAforro(double aportacion, int meses) {
        System.out.println("\n=== SIMULACIÓN PLAN DE AFORRO ===");
        System.out.println("Aportación mensual: " + aportacion + "€");
        System.out.println("Duración: " + meses + " meses");
        System.out.println("Saldo inicial: " + this.saldo + "€");
        
        double saldoSimulado = this.saldo;
        
        for (int mes = 1; mes <= meses; mes++) {
            double totalMes = calcularInteres(aportacion);
            saldoSimulado += totalMes;
            System.out.println("Mes " + mes + ": " + String.format("%.2f", saldoSimulado) + "€");
        }
        
        System.out.println("Saldo final simulado: " + String.format("%.2f", saldoSimulado) + "€");
        System.out.println("Total aforrado: " + String.format("%.2f", (saldoSimulado - this.saldo)) + "€");
    }
    
    public void mostrarInfo() {
        System.out.println("\n=== INFORMACIÓN DA CONTA ===");
        System.out.println("Titular: " + titular);
        System.out.println("Número de conta: " + numeroConta);
        System.out.println("Saldo: " + saldo + "€");
        System.out.println("Tipo de conta: " + tipoConta);
        System.out.println("Movementos realizados: " + movementos);
        System.out.println("=============================");
    }
}
```

```java
public class App {
    public static void main(String[] args) {
        System.out.println("SISTEMA BANCARIO");
        System.out.println();
        
        // 1. Conta con constructor vacío
        System.out.println("Conta 1 - Constructor vacío:");
        ContaBancaria conta1 = new ContaBancaria();
        conta1.setTitular("Ana García López");
        conta1.setNumeroConta("ES7620770024003102575761");
        conta1.setSaldo(750.0);
        conta1.setTipoConta("Corrente");
        conta1.mostrarInfo();
        
        // 2. Conta con constructor con titular e número de conta
        System.out.println("Conta 2 - Constructor con titular e número:");
        ContaBancaria conta2 = new ContaBancaria("Carlos Martínez", "ES7620770024003102575762");
        conta2.setSaldo(150.0);
        conta2.setTipoConta("Aforro");
        conta2.mostrarInfo();
        
        // 3. Conta con constructor completo
        System.out.println("Conta 3 - Constructor completo:");
        ContaBancaria conta3 = new ContaBancaria("Laura Fernández", "ES7620770024003102575763", 1200.0, "Corrente", 5);
        conta3.mostrarInfo();
        
        // Probar métodos coa conta 2
        System.out.println("PROBANDO MÉTODOS NA CONTA 2:");
        System.out.println("--- Operacións iniciais ---");
        conta2.mostrarInfo();
        
        System.out.println("\n--- Realizando depósito ---");
        conta2.depositar(200.0);
        
        System.out.println("\n--- Realizando retirada ---");
        conta2.retirar(80.0);
        
        System.out.println("\n--- Aplicando comisión mensual ---");
        conta2.aplicarComisionMensual();
        
        System.out.println("\n--- Estado final da conta ---");
        conta2.mostrarInfo();
        
        // Simular plan de aforro coa conta 3
        System.out.println("SIMULANDO PLAN DE AFORRO NA CONTA 3:");
        conta3.simularPlanDeAforro(100.0, 10);
        
        // Mostrar información final de todas as contas
        System.out.println("RESUMO FINAL DE TODAS AS CONTAS:");
        conta1.mostrarInfo();
        conta2.mostrarInfo();
        conta3.mostrarInfo();
    }
}
```

3. Libros

```java
public class Libro {
    private String titulo;
    private String autor;
    private int numPaginas;
    private String generoLiterario;
    private boolean disponible;
    
    // Constructor vacío
    public Libro() {
        this.titulo = "";
        this.autor = "";
        this.numPaginas = 0;
        this.generoLiterario = "";
        this.disponible = true;
    }
     
    // Constructor con título, autor, número de páginas y género literario
    public Libro(String titulo, String autor, int numPaginas, String generoLiterario) {
        this.titulo = titulo;
        this.autor = autor; 
        this.numPaginas = numPaginas;
        this.generoLiterario = generoLiterario;
        if (numPaginas > 500) {
            this.disponible = false;
        } else {
            this.disponible = true;
        }
    }
    
    public Libro(String titulo, String autor) {
        this(titulo, autor, 0, "", true); // Llama al constructor vacío
    }
    
    public Libro() {
         this("", "", 0, "", true);
    }
    
    // Getters
    public String getTitulo() {
        return titulo;
    }
    
    public String getAutor() {
        return autor;
    }
    
    public int getNumPaginas() {
        return numPaginas;
    }
    
    public String getGeneroLiterario() {
        return generoLiterario;
    }
    
    public boolean isDisponible() {
        return disponible;
    }
    
    // Setters
    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }
    
    public void setAutor(String autor) {
        this.autor = autor;
    }
    
    public void setNumPaginas(int numPaginas) {
        this.numPaginas = numPaginas;
        // Actualizar disponibilidad según número de páginas
        if (numPaginas > 500) {
            this.disponible = false;
        } else {
            this.disponible = true;
        }
    }
    
    public void setGeneroLiterario(String generoLiterario) {
        this.generoLiterario = generoLiterario;
    }
    
    // Métodos específicos
    
    // Prestar libro
    public void prestar() {
        if (this.disponible) {
            this.disponible = false;
            System.out.println("O libro '" + this.titulo + "' foi prestado.");
        } else {
            System.out.println("O libro '" + this.titulo + "' xa está prestado.");
        }
    }
    
    // Devolver libro
    public void devolver() {
        if (!this.disponible) {
            this.disponible = true;
            System.out.println("O libro '" + this.titulo + "' foi devolto.");
        } else {
            System.out.println("O libro '" + this.titulo + "' xa está dispoñible.");
        }
    }
    
    // Calcular tempo de lectura
    public double calcularTempoLectura() {
        // Asumiendo que se leen 50 páxinas por hora
        final int PAGINAS_POR_HORA = 50;
        return (double) this.numPaginas / PAGINAS_POR_HORA;
    }
    
    // Verificar se é coleccionable
    public boolean eColeccionable() {
        return (this.generoLiterario.equalsIgnoreCase("Fantasia") || 
               this.generoLiterario.equalsIgnoreCase("Ciencia Ficción")) &&
               this.numPaginas > 300);
    }
    
    // Método toString
    @Override
    public String toString() {
        String disponibilidad = this.disponible ? "Sí" : "Non";
        return "Libro: " + this.titulo + "\n" +
               "Autor: " + this.autor + "\n" +
               "Número de páxinas: " + this.numPaginas + "\n" +
               "Xénero literario: " + this.generoLiterario + "\n" +
               "Dispoñible para préstamo: " + disponibilidad + "\n" +
               "Tempo estimado de lectura: " + String.format("%.1f", calcularTempoLectura()) + " horas\n" +
               "É coleccionable: " + (eColeccionable() ? "Sí" : "Non");
    }
}
```

```java
public class AppLibro {
    public static void main(String[] args) {
        System.out.println("=== CREACIÓN DE LIBROS ===");
        System.out.println();
        
        // 1. Libro creado con constructor vacío
        System.out.println("Libro 1 - Constructor vacío:");
        Libro libro1 = new Libro();
        // Establecer atributos mediante setters
        libro1.setTitulo("El principito");
        libro1.setAutor("Antoine de Saint-Exupéry");
        libro1.setNumPaginas(96);
        libro1.setGeneroLiterario("Literatura infantil");
        System.out.println(libro1.toString());
        System.out.println();
        
        // 2. Libro creado con constructor con título y autor
        System.out.println("Libro 2 - Constructor con título y autor:");
        Libro libro2 = new Libro("Cien años de soledad", "Gabriel García Márquez");
        // Establecer atributos restantes mediante setters
        libro2.setNumPaginas(432);
        libro2.setGeneroLiterario("Realismo mágico");
        System.out.println(libro2.toString());
        System.out.println();
        
        // 3. Libro creado con constructor completo
        System.out.println("Libro 3 - Constructor completo:");
        Libro libro3 = new Libro("El señor de los anillos", "J.R.R. Tolkien", 1200, "Fantasia");
        // Este libro tendrá disponible = false automáticamente por tener más de 500 páginas
        System.out.println(libro3.toString());
        System.out.println();
        
        // Probar métodos con el libro 2
        System.out.println("=== PROBANDO MÉTODOS CON LIBRO 2 ===");
        System.out.println();
        
        System.out.println("Estado inicial do libro 2:");
        System.out.println("Dispoñible: " + (libro2.isDisponible() ? "Sí" : "Non"));
        
        // Prestar el libro
        System.out.println("\nPrestando o libro...");
        libro2.prestar();
        
        // Intentar prestarlo otra vez
        System.out.println("\nIntentando prestar o libro de novo...");
        libro2.prestar();
        
        // Devolver el libro
        System.out.println("\nDevolvendo o libro...");
        libro2.devolver();
        
        // Calcular tiempo de lectura
        System.out.println("\nCalculando tempo de lectura...");
        double tiempoLectura = libro2.calcularTempoLectura();
        System.out.println("Tempo estimado de lectura: " + String.format("%.2f", tiempoLectura) + " horas");
        
        // Verificar si es coleccionable
        System.out.println("\nVerificando se é coleccionable...");
        System.out.println("É coleccionable: " + (libro2.eColeccionable() ? "Sí" : "Non"));
        
        // Mostrar información final del libro 2
        System.out.println("\n=== INFORMACIÓN FINAL DO LIBRO 2 ===");
        System.out.println(libro2.toString());
        System.out.println();
        
        // Probar con un libro que sí es coleccionable
        System.out.println("=== EJEMPLO DE LIBRO COLECCIONABLE ===");
        Libro libro4 = new Libro("Dune", "Frank Herbert", 412, "Ciencia Ficción");
        System.out.println(libro4.toString());
        System.out.println();
        
        // Mostrar todos los libros
        System.out.println("=== RESUMEN DE TODOS OS LIBROS ===");
        System.out.println("1. " + libro1.getTitulo() + " - " + libro1.getAutor() + 
                          " (" + libro1.getNumPaginas() + " páxinas)");
        System.out.println("2. " + libro2.getTitulo() + " - " + libro2.getAutor() + 
                          " (" + libro2.getNumPaginas() + " páxinas)");
        System.out.println("3. " + libro3.getTitulo() + " - " + libro3.getAutor() + 
                          " (" + libro3.getNumPaginas() + " páxinas)");
    }
}
```

4. SerieTV

```java
public class SerieTV {
    private String titulo;
    private String xenero;
    private int tempadas;
    private int capitulosPorTempada;
    private int duracionCapitulo;
    private boolean finalizada;
    
    // Constructor con todos os atributos (principal)
    public SerieTV(String titulo, String xenero, int tempadas, int capitulosPorTempada, int duracionCapitulo) {
        this.titulo = titulo;
        this.xenero = xenero;
        this.tempadas = tempadas;
        this.capitulosPorTempada = capitulosPorTempada;
        this.duracionCapitulo = duracionCapitulo;
        // Establecer se está finalizada según número de tempadas
        if (tempadas > 10) {
            this.finalizada = true;
        } else {
            this.finalizada = false;
        }
    }
    
    // Constructor vacío
    public SerieTV() {
        this("", "", 0, 0, 0);
    }
    
    // Constructor con título e xénero
    public SerieTV(String titulo, String xenero) {
        this(titulo, xenero, 0, 0, 0);
    }
    
    // Getters
    public String getTitulo() {
        return titulo;
    }
    
    public String getXenero() {
        return xenero;
    }
    
    public int getTempadas() {
        return tempadas;
    }
    
    public int getCapitulosPorTempada() {
        return capitulosPorTempada;
    }
    
    public int getDuracionCapitulo() {
        return duracionCapitulo;
    }
    
    public boolean isFinalizada() {
        return finalizada;
    }
    
    // Setters
    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }
    
    public void setXenero(String xenero) {
        this.xenero = xenero;
    }
    
    public void setTempadas(int tempadas) {
        this.tempadas = tempadas;
        // Actualizar finalizada si tempadas > 10
        if (tempadas > 10) {
            this.finalizada = true;
        }
    }
    
    public void setCapitulosPorTempada(int capitulosPorTempada) {
        this.capitulosPorTempada = capitulosPorTempada;
    }
    
    public void setDuracionCapitulo(int duracionCapitulo) {
        this.duracionCapitulo = duracionCapitulo;
    }
    
    public void setFinalizada(boolean finalizada) {
        this.finalizada = finalizada;
    }
    
    // Métodos específicos
    
    // Calcular duración total en horas
    public double calcularDuracionTotal() {
        return (tempadas * capitulosPorTempada * duracionCapitulo) / 60.0;
    }
    
    // Determinar se se pode maratonar
    public boolean podeMaratonarse() {
        return calcularDuracionTotal() < 48;
    }
    
    // Categorizar por duración
    public String categoriaPorDuracion() {
        double duracionTotal = calcularDuracionTotal();
        
        if (duracionTotal < 24) {
            return "Curta";
        } else if (duracionTotal <= 72) {
            return "Media";
        } else {
            return "Longa";
        }
    }
    
    // Determinar se é de culto
    public boolean eCulto() {
        return (this.xenero != null && 
               (this.xenero.equalsIgnoreCase("Ciencia Ficción") || 
                this.xenero.equalsIgnoreCase("Fantasia")) &&
               this.tempadas > 3);
    }
    
    // Método toString
    @Override
    public String toString() {
        String estadoFinalizada = this.finalizada ? "Si" : "Non";
        double duracionTotal = calcularDuracionTotal();
        
        return "=== INFORMACIÓN DA SERIE ===\n" +
               "Título: " + this.titulo + "\n" +
               "Xénero: " + this.xenero + "\n" +
               "Tempadas: " + this.tempadas + "\n" +
               "Capítulos por tempada: " + this.capitulosPorTempada + "\n" +
               "Duración por capítulo: " + this.duracionCapitulo + " minutos\n" +
               "Finalizada: " + estadoFinalizada + "\n" +
               "Duración total: " + String.format("%.2f", duracionTotal) + " horas\n" +
               "Pode maratonarse: " + (podeMaratonarse() ? "Si" : "Non") + "\n" +
               "Categoría por duración: " + categoriaPorDuracion() + "\n" +
               "É de culto: " + (eCulto() ? "Si" : "Non");
    }
}
```

```java
public class AppSerieTV {
    public static void main(String[] args) {
        System.out.println("=== CREACIÓN DE SERIES DE TV ===");
        System.out.println();
        
        // 1. Serie creada con constructor vacío
        System.out.println("Serie 1 - Constructor vacío:");
        SerieTV serie1 = new SerieTV();
        // Establecer atributos mediante setters
        serie1.setTitulo("Friends");
        serie1.setXenero("Comedia");
        serie1.setTempadas(10);
        serie1.setCapitulosPorTempada(24);
        serie1.setDuracionCapitulo(22);
        System.out.println(serie1.toString());
        System.out.println();
        
        // 2. Serie creada con constructor con título e xénero
        System.out.println("Serie 2 - Constructor con título e xénero:");
        SerieTV serie2 = new SerieTV("The Mandalorian", "Ciencia Ficción");
        // Establecer atributos restantes mediante setters
        serie2.setTempadas(3);
        serie2.setCapitulosPorTempada(8);
        serie2.setDuracionCapitulo(40);
        System.out.println(serie2.toString());
        System.out.println();
        
        // 3. Serie creada con constructor completo
        System.out.println("Serie 3 - Constructor completo:");
        SerieTV serie3 = new SerieTV("Game of Thrones", "Fantasia", 8, 10, 55);
        System.out.println(serie3.toString());
        System.out.println();
        
        // Probar métodos específicos con la serie 3
        System.out.println("=== PROBANDO MÉTODOS ESPECÍFICOS CON SERIE 3 ===");
        System.out.println();
        
        System.out.println("Información inicial da serie 3:");
        System.out.println("Título: " + serie3.getTitulo());
        System.out.println("Xénero: " + serie3.getXenero());
        System.out.println("Tempadas: " + serie3.getTempadas());
        System.out.println();
        
        // Calcular duración total
        System.out.println("1. Calculando duración total...");
        double duracionTotal = serie3.calcularDuracionTotal();
        System.out.println("   Duración total: " + String.format("%.2f", duracionTotal) + " horas");
        System.out.println();
        
        // Verificar si se puede maratonar
        System.out.println("2. Verificando se se pode maratonar...");
        boolean podeMaratonarse = serie3.podeMaratonarse();
        System.out.println("   Pode maratonarse: " + (podeMaratonarse ? "Si" : "Non"));
        System.out.println();
        
        // Obtener categoría por duración
        System.out.println("3. Obtendo categoría por duración...");
        String categoria = serie3.categoriaPorDuracion();
        System.out.println("   Categoría: " + categoria);
        System.out.println();
        
        // Verificar si es de culto
        System.out.println("4. Verificando se é de culto...");
        boolean eCulto = serie3.eCulto();
        System.out.println("   É de culto: " + (eCulto ? "Si" : "Non"));
        System.out.println();
        
        // Mostrar información final de la serie 3
        System.out.println("=== INFORMACIÓN FINAL DA SERIE 3 ===");
        System.out.println(serie3.toString());
        System.out.println();
        
        // Ejemplo de serie con más de 10 temporadas (se marca como finalizada automáticamente)
        System.out.println("=== EJEMPLO DE SERIE CON MÁIS DE 10 TEMPADAS ===");
        SerieTV serie4 = new SerieTV("The Simpsons", "Comedia", 34, 22, 22);
        System.out.println("Serie: " + serie4.getTitulo());
        System.out.println("Tempadas: " + serie4.getTempadas());
        System.out.println("Finalizada (automático por ter >10 tempadas): " + (serie4.isFinalizada() ? "Si" : "Non"));
        System.out.println("Duración total: " + String.format("%.2f", serie4.calcularDuracionTotal()) + " horas");
        System.out.println();
        
        // Resumen de todas las series
        System.out.println("=== RESUMEN DE TODAS AS SERIES ===");
        System.out.println("1. " + serie1.getTitulo() + " - " + serie1.getXenero() + 
                          " (" + serie1.getTempadas() + " tempadas)");
        System.out.println("2. " + serie2.getTitulo() + " - " + serie2.getXenero() + 
                          " (" + serie2.getTempadas() + " tempadas)");
        System.out.println("3. " + serie3.getTitulo() + " - " + serie3.getXenero() + 
                          " (" + serie3.getTempadas() + " tempadas)");
        System.out.println("4. " + serie4.getTitulo() + " - " + serie4.getXenero() + 
                          " (" + serie4.getTempadas() + " tempadas)");
        
        // Comparativa de duraciones
        System.out.println("\n=== COMPARATIVA DE DURACIÓNS ===");
        System.out.println(serie1.getTitulo() + ": " + String.format("%.1f", serie1.calcularDuracionTotal()) + " horas - " + serie1.categoriaPorDuracion());
        System.out.println(serie2.getTitulo() + ": " + String.format("%.1f", serie2.calcularDuracionTotal()) + " horas - " + serie2.categoriaPorDuracion());
        System.out.println(serie3.getTitulo() + ": " + String.format("%.1f", serie3.calcularDuracionTotal()) + " horas - " + serie3.categoriaPorDuracion());
        System.out.println(serie4.getTitulo() + ": " + String.format("%.1f", serie4.calcularDuracionTotal()) + " horas - " + serie4.categoriaPorDuracion());
    }
}
```


---

# 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/ud3-solucions/poo-getters-and-setters-e-tostring.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.
