1
resposta

Gerenciamento de biblioteca

package Principal;

public class Principal {

    public static void main(String[] args) {
        Midia livro1 = new Livro("O Guia do Mochileiro das Galáxias", 1979,
                "Douglas Adams");

        Midia revista1 = new Revista("National Geographic", 2023, 245);

        Midia ebook1 = new Ebook("Clean Code", 2008, "PDF");


        livro1.exibirInfo();
        revista1.exibirInfo();
        ebook1.exibirInfo();
    }
}
package Principal;

public abstract class Midia {

    String titulo;
    int anoDePublicacao;
    String codigo;

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

    public abstract void exibirInfo();


    String verficarCodigo(){
        return "LIB-" + titulo.substring(0,3) + anoDePublicacao;
    }
}
package Principal;

public class Livro extends Midia{

    String autor;

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

    @Override
    public void exibirInfo(){
        System.out.printf("Codígo: %s | Livro: %s - Autor: %s\n", verficarCodigo(), titulo, autor);
    }
}

package Principal;

public class Revista extends Midia{

    int edicao;

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

    @Override
    public void exibirInfo() {
        System.out.printf("Codígo: %s | Revista: %s - Edição: %s\n", verficarCodigo(), titulo, edicao);
    }
}
package Principal;

public class Ebook extends Midia{

    String formato;

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

    @Override
    public void exibirInfo() {
        System.out.printf("Codígo: %s | Ebook: %s - formato: %s\n", verficarCodigo(), titulo, formato);
    }
}
1 resposta

Olá, João, como vai?

O seu código aplica de forma correta os conceitos de herança e polimorfismo ao utilizar uma classe abstrata como base para os diferentes tipos de mídia da biblioteca. A estrutura das subclasses Livro, Revista e Ebook respeita as regras de negócio propostas e o uso do método construtor com super garante a integridade dos dados herdados.

Como uma pequena sugestão técnica, você pode considerar o uso de modificadores de acesso como private para os atributos, aplicando o conceito de encapsulamento, e criar métodos getters para acessá-los.

Parabéns pelo excelente trabalho no desenvolvimento do exercício e por compartilhar sua solução com a comunidade. Continue praticando e postando seus avanços nos estudos de Java.

O fórum está à disposição para qualquer dúvida que surgir no decorrer do curso.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!