1
resposta

[Projeto] Desafio resolvido

package com.github.aldenyjr.exercicios.gerenciamento_de_biblioteca;

public class Midia {
    private String titulo;
    private int anoPublicacao;
    private String codigo;

    public Midia(String titulo, int anoPublicacao) {
        this.titulo = titulo;
        this.anoPublicacao = anoPublicacao;
        this.codigo = this.retornaCodigo();
    }

    public String getTitulo() {
        return titulo;
    }

    public int getAnoPublicacao() {
        return anoPublicacao;
    }

    public String getCodigo() {
        return codigo;
    }

    private String retornaCodigo(){
        return "LIB-" + this.titulo.substring(0,3).trim().replaceAll(" ", "")  + this.anoPublicacao;
    }

}
package com.github.aldenyjr.exercicios.gerenciamento_de_biblioteca;

public class Livro extends Midia{
    private String autor;

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

    public void exibirInfo(){
        System.out.printf("Código: %s | Livro: %s | Autor: %s\n", this.getCodigo(), this.getTitulo(), this.autor);
    }
}
package com.github.aldenyjr.exercicios.gerenciamento_de_biblioteca;

public class Revista extends Midia{
    private String edicao;

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

    public void exibirInfo(){
        System.out.printf("Código: %s | Revista: %s | Edição: %s\n", this.getCodigo(), this.getTitulo(), this.edicao);
    }
}
package com.github.aldenyjr.exercicios.gerenciamento_de_biblioteca;

public class Ebook extends Midia{
    private String formato;

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

    public void exibirInfo(){
        System.out.printf("Código: %s | Ebook: %s | Formato: %s\n", this.getCodigo(), this.getTitulo(), this.formato);
    }
}
package com.github.aldenyjr.exercicios.gerenciamento_de_biblioteca;

public class GerenciamentoDeBiblioteca {
    public static void main(String[] args) {
        var livro = new Livro("O Guia do Mochileiro das Galáxias", 1979, "Douglas Adams");
        var revista = new Revista("National Geographic", 2023, "245");
        var ebook = new Ebook("Clean Code", 2008, "PDF");

        livro.exibirInfo();
        revista.exibirInfo();
        ebook.exibirInfo();
    }
}

Resultado:

Código: LIB-OG1979 | Livro: O Guia do Mochileiro das Galáxias | Autor: Douglas Adams
Código: LIB-Nat2023 | Revista: National Geographic | Edição: 245
Código: LIB-Cle2008 | Ebook: Clean Code | Formato: PDF
1 resposta

Oi, Aldeny! Como vai?

Gostei da sua implementação, ficou bem clara a aplicação de herança com a classe Midia e as especializações em Livro, Revista e Ebook, além da organização dos construtores usando super. Também ficou bem interessante a geração automática do código na classe base, trazendo reutilização e consistência entre os tipos.

Continue praticando essa separação de responsabilidades, isso fortalece bastante sua base em orientação a objetos.

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