Ficou assim a minha resolução para a exercício do Gerenciamento de Biblioteca. Alguma melhoria poderia ser aplicada?
Main
public class Ex003 {
public static void main(String[] args) {
Livro livro = new Livro("O Guia do Mochileiro das Galáxias", 1979,"Douglas Adams");
Revista revista = new Revista("National Geographic", 2023, 245);
Ebook ebook = new Ebook("Clean Code", 2008, "PDF");
livro.exibirInfo();
revista.exibirInfo();
ebook.exibirInfo();
Midia
package ClassesAbstratasInterfaceHeranca.ex003;
public abstract class Midia {
public String titulo;
public Integer anoPublicacao;
public Midia(String titulo, Integer anoPublicacao) {
this.titulo = titulo;
this.anoPublicacao = anoPublicacao;
}
public String gerarCod(){
return "LIB-" + titulo.substring(0,3) + anoPublicacao;
}
public abstract void exibirInfo();
}
Livro
package ClassesAbstratasInterfaceHeranca.ex003;
public class Livro extends Midia{
private String autor;
public Livro(String titulo, Integer anoPublicacao, String autor) {
super(titulo, anoPublicacao);
this.autor = autor;
}
@Override
public void exibirInfo() {
System.out.printf("Código: %s | Livro: %s - Autor: %s \n", this.gerarCod(), this.titulo, this.autor);
}
}
Revista
package ClassesAbstratasInterfaceHeranca.ex003;
public class Revista extends Midia{
private int edicao;
public Revista(String titulo, Integer anoPublicacao, int edicao) {
super(titulo, anoPublicacao);
this.edicao = edicao;
}
@Override
public void exibirInfo() {
System.out.printf("Código: %s | Revista: %s - Edição: %s \n", this.gerarCod(), this.titulo, this.edicao);
}
}
Ebook
package ClassesAbstratasInterfaceHeranca.ex003;
public class Ebook extends Midia{
private String formato;
public Ebook(String titulo, Integer anoPublicacao, String formato) {
super(titulo, anoPublicacao);
this.formato = formato;
}
@Override
public void exibirInfo() {
System.out.printf("Código: %s | Ebook: %s - Formato: %s \n", this.gerarCod(), this.titulo, this.formato);
}
}