Olá!
Segue minha resolução:
- Classe Mídia:
package br.com.alura.exercicios;
public abstract class Midia {
String titulo;
int anoPublicacao;
public Midia(String titulo, int anoPublicacao) {
this.titulo = titulo;
this.anoPublicacao = anoPublicacao;
}
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public int getAnoPublicacao() {
return anoPublicacao;
}
public void setAnoPublicacao(int anoPublicacao) {
this.anoPublicacao = anoPublicacao;
}
public Object criarCodigo(){
String codigo = "LIB-" + titulo.substring(0,3).toUpperCase() + anoPublicacao;
return codigo;
}
public abstract void exibirInfo();
}
- Classes Livro, Revista e Ebook:
package br.com.alura.exercicios;
public class Livro extends Midia{
String autor;
public Livro(String titulo, int anoPublicacao, String autor) {
super(titulo, anoPublicacao);
this.autor = autor;
}
@Override
public void exibirInfo() {
System.out.printf("\nCódigo: %s | Livro: %s - autor: %s",criarCodigo(), titulo,autor);
}
}
package br.com.alura.exercicios;
public class Revista extends Midia {
String edicao;
public Revista(String titulo, int anoPublicacao, String edicao) {
super(titulo, anoPublicacao);
this.edicao = edicao;
}
@Override
public void exibirInfo() {
System.out.printf("\nCódigo: %s | Revista: %s - Edição: %s",criarCodigo(), titulo,edicao);
}
}
package br.com.alura.exercicios;
public class Ebook extends Midia{
String formato;
public Ebook(String titulo, int anoPublicacao, String formato) {
super(titulo, anoPublicacao);
this.formato = formato;
}
@Override
public void exibirInfo() {
System.out.printf("\nCódigo: %s | E-book: %s - Formato: %s",criarCodigo(), titulo,formato);
}
}
- Main para rodar a aplicação:
package br.com.alura.exercicios;
public class Main {
public static void main(String[] args) {
Midia livro = new Livro("Sobrevivente", 1979, "Stephen King");
Midia revista = new Revista("National Geographic", 2015,"246");
Midia ebook = new Ebook("Clean Code", 2008,"PDF");
livro.exibirInfo();
revista.exibirInfo();
ebook.exibirInfo();
}
}
- Saída:
Código: LIB-SOB1979 | Livro: Sobrevivente - autor: Stephen King
Código: LIB-NAT2015 | Revista: National Geographic - Edição: 246
Código: LIB-CLE2008 | E-book: Clean Code - Formato: PDF