package com.github.lucasdevrj.exercicios.gerenciamentodebiblioteca;
import java.time.Year;
public abstract class Midia {
private String titulo;
private Year anoDeLancamento;
public Midia(String titulo, Year anoDeLancamento) {
this.titulo = titulo;
this.anoDeLancamento = anoDeLancamento;
}
public String getTitulo() {
return titulo;
}
public String getCodigo() {
String nomenclaturaPadrao = "LIB-";
String tresPrimeirosCaracteresDoTitulo = titulo.substring(0, 3);
return nomenclaturaPadrao.concat(tresPrimeirosCaracteresDoTitulo).concat(String.valueOf(anoDeLancamento));
}
public abstract void exibirInfo();
}
package com.github.lucasdevrj.exercicios.gerenciamentodebiblioteca;
import java.time.Year;
public class Livro extends Midia {
private String autor;
public Livro(String titulo, Year anoDeLancamento, String autor) {
super(titulo, anoDeLancamento);
this.autor = autor;
}
@Override
public void exibirInfo() {
System.out.printf("Código: %s | Livro: %s - Autor: %s\n", getCodigo(), getTitulo(), autor);
}
}
package com.github.lucasdevrj.exercicios.gerenciamentodebiblioteca;
import java.time.Year;
public class Revista extends Midia {
private int edicao;
public Revista(String titulo, Year anoDeLancamento, int edicao) {
super(titulo, anoDeLancamento);
this.edicao = edicao;
}
@Override
public void exibirInfo() {
System.out.printf("Código: %s | Revista: %s - Edição: %d\n", getCodigo(), getTitulo(), edicao);
}
}
package com.github.lucasdevrj.exercicios.gerenciamentodebiblioteca;
import java.time.Year;
public class Ebook extends Midia {
private String formato;
public Ebook(String titulo, Year anoDeLancamento, String formato) {
super(titulo, anoDeLancamento);
this.formato = formato;
}
@Override
public void exibirInfo() {
System.out.printf("Código: %s | Ebook: %s - Formato: %s\n", getCodigo(), getTitulo(), formato);
}
}
/**
* Imagine que você está desenvolvendo um sistema para uma biblioteca que precisa catalogar
* diferentes tipos de mídias: livros, revistas e e-books. Cada mídia possui informações
* específicas, como título e ano de publicação, mas algumas têm características únicas,
* como autor (livros), edição (revistas) ou formato (e-books). Seu programa deve ser
* capaz de exibir esses dados para facilitar a consulta pelos bibliotecários.
*
* Crie um programa que:
*
* Defina uma classe Midia com os atributos título e ano de publicação.
* Defina um método que gere um código no formato “LIB- + os três primeiros caracteres do
* título + ano de publicação”, por exemplo:
* Código: LIB-O H1937 | Livro: "O Hobbit" - Autor: J.R.R. Tolkien
* Crie as classes Livro, Revista e Ebook, todas herdando de Midia, adicionando:
* Livro: atributo autor.
* Revista: atributo edição.
* Ebook: atributo formato.
* Cadastre uma mídia de cada tipo.
* Exiba o código e os detalhes de cada mídia usando o método exibirInfo.
* Exemplo de entrada:
*
*
* livro.exibirInfo();
* revista.exibirInfo();
* ebook.exibirInfo();
*
* Saída esperada:
*
*
* Código: LIB-O G1979 | 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
*/
package com.github.lucasdevrj.exercicios.gerenciamentodebiblioteca;
import java.time.Year;
public class Principal {
public static void main(String[] args) {
Livro livro = new Livro("Ensaio sobre a Cegueira", Year.of(1995), "José Saramago");
Revista revista = new Revista("Nintendo Power", Year.of(1998), 1);
Ebook ebook = new Ebook("Java 8 Prático", Year.of(2014), "PDF");
livro.exibirInfo();
revista.exibirInfo();
ebook.exibirInfo();
}
}

beleza?