1
resposta

Gerenciamento De Biblioteca

package Relatorio.gerenciamentoDeBiblioteca;

public class Midia {

private String titulo;
private int anoDePublicacao;

public Midia(String titulo, int anoDePublicacao) {
    this.titulo = titulo;
    this.anoDePublicacao = anoDePublicacao;
}

public String getTitulo() {
    return titulo;
}

public int getAnoDePublicacao() {
    return anoDePublicacao;
}

    public String gerarCodigo() {

    String prefixoTitulo = titulo.length() >= 4 ? titulo.substring(0,4) : titulo;
    prefixoTitulo = prefixoTitulo.trim().toUpperCase();

    return "LIB-" + prefixoTitulo + anoDePublicacao;
}

}

package Relatorio.gerenciamentoDeBiblioteca;

public class Livro extends Midia {
private String autor;

public Livro(String titulo, String autor, int anoDePublicacao) {
    super(titulo, anoDePublicacao);
    this.autor = autor;
}

public String getAutor() {
    return autor;
}

@Override
public String toString() {
    return "Código: " + gerarCodigo() + " | Livro: " + getTitulo() + " - Autor: " + getAutor() + " - Ano de Publicação: " + getAnoDePublicacao();
}

}

package Relatorio.gerenciamentoDeBiblioteca;

public class Revista extends Midia {
private int edicao;

public Revista(String titulo, int edicao, int anoDePublicacao) {
    super(titulo, anoDePublicacao);
    this.edicao = edicao;
}

public int getEdicao() {
    return edicao;
}

@Override
public String toString() {
    return "Código: " + gerarCodigo() + " | Revista: " + getTitulo() + " - Edição: " + getEdicao() + " - Ano de Publicação: " + getAnoDePublicacao();
}

}

package Relatorio.gerenciamentoDeBiblioteca;

public class Ebook extends Midia {
private String formato;

public Ebook(String titulo, String formato, int anoDePublicacao) {
    super(titulo, anoDePublicacao);
    this.formato = formato;
}

public String getFormato() {
    return formato;
}


@Override
public String toString() {
    return "Código: " + gerarCodigo() + " | Ebook: " + getTitulo() + " - Formato: " + getFormato() + " - Ano de Publicação " + getAnoDePublicacao();
}

}

package Relatorio.gerenciamentoDeBiblioteca;

public class Principal {
public static void main(String[] args) {

    Livro livro = new Livro("'O guia do mochileiro das galáxias'", "Douglas Adams",1979 );
    System.out.println(livro);

    Revista revista = new Revista("'National Geographic'", 245, 2023);
    System.out.println(revista);

    Ebook ebook = new Ebook("Clean Code","PDF",2008 );
    System.out.println(ebook);

}

}

1 resposta

Oi, Wanderson! Como vai?

Agradeço por compartilhar.

Muito legal como você organizou as classes usando herança e aplicou o polimorfismo com o toString(). A lógica do método gerarCodigo() ficou bem pensada, principalmente ao tratar títulos menores e padronizar com toUpperCase().

Uma dica interessante para o futuro é sobrescrever métodos como equals() e hashCode() para comparar objetos, o que ajuda bastante em coleções como listas ou sets.


public boolean equals(Object obj) {
    if (this == obj) return true;
    if (obj == null || getClass() != obj.getClass()) return false;
    Midia midia = (Midia) obj;
    return titulo.equals(midia.titulo) && anoDePublicacao == midia.anoDePublicacao;
}
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!