Modificando as Classes
// Titulo.java
public class Titulo implements Comparable<Titulo> { // Implementa Comparable
private String nome;
public Titulo(String nome) {
this.nome = nome;
}
public String getNome() {
return nome;
}
public void exibirInformacoes() {
System.out.println("Título: " + nome);
}
// Implementação do método compareTo para ordenar por nome
@Override
public int compareTo(Titulo outroTitulo) {
return this.nome.compareTo(outroTitulo.nome);
}
}
// Filme.java (Permanece igual)
public class Filme extends Titulo {
private int duracaoEmMinutos;
public Filme(String nome, int duracaoEmMinutos) {
super(nome);
this.duracaoEmMinutos = duracaoEmMinutos;
}
public int getDuracaoEmMinutos() {
return duracaoEmMinutos;
}
@Override
public void exibirInformacoes() {
System.out.println("Filme: " + getNome() + " (" + duracaoEmMinutos + " min)");
}
}
// Serie.java (Permanece igual)
public class Serie extends Titulo {
private int temporadas;
private int episodiosPorTemporada;
public Serie(String nome, int temporadas, int episodiosPorTemporada) {
super(nome);
this.temporadas = temporadas;
this.episodiosPorTemporada = episodiosPorTemporada;
}
public int getTemporadas() {
return temporadas;
}
public int getEpisodiosPorTemporada() {
return episodiosPorTemporada;
}
@Override
public void exibirInformacoes() {
System.out.println("Série: " + getNome() + " (" + temporadas + " temporadas, " + episodiosPorTemporada + " episódios por temporada)");
}
}
Classe Main para Testar a Ordenação
import java.util.ArrayList;
import java.util.Collections; // Importe a classe Collections
public class Main {
public static void main(String[] args) {
Filme filme1 = new Filme("Matrix", 136);
Filme filme2 = new Filme("O Senhor dos Anéis: A Sociedade do Anel", 178);
Serie serie1 = new Serie("Stranger Things", 4, 9);
Serie serie2 = new Serie("Breaking Bad", 5, 10);
Filme filme3 = new Filme("Avatar", 162); // Adicionando mais um para variar a ordem
ArrayList<Titulo> listaDeTitulos = new ArrayList<>();
listaDeTitulos.add(filme1);
listaDeTitulos.add(serie1);
listaDeTitulos.add(filme2);
listaDeTitulos.add(serie2);
listaDeTitulos.add(filme3);
System.out.println("--- Lista de Títulos Original ---");
for (Titulo item : listaDeTitulos) {
item.exibirInformacoes();
}
// Ordenando a lista de títulos
// Collections.sort() usa o método compareTo implementado na classe Titulo
Collections.sort(listaDeTitulos);
System.out.println("\n--- Lista de Títulos Ordenada por Nome ---");
for (Titulo item : listaDeTitulos) {
item.exibirInformacoes();
}
}
}