Escreva um programa que:
- Crie uma classe chamada Livro com atributos titulo (String) e autor (String).
- Crie uma classe derivada de Livro chamada Apostila, com atributos titulo (String) e autor (String).
- Crie um vetor de 3 objetos Apostila e preencha-o com dados.
- Imprima os titulos e autores de todos as Apostilas do vetor.
Passo 1
Beleza, então o enunciado pede pra gente:
- Criar uma classe chamada Livro com dois atributos (título e autor).
- Fazer uma classe Apostila que estende (herda de) Livro.
- Montar um vetor (array) de 3 objetos Apostila e preencher com dados.
- Imprimir título e autor de cada uma.
Conteúdo envolvido: Programação Orientada a Objetos (POO) em Java, mais especificamente construção de classes, herança, arrays e loops para impressão. Vamos precisar entender como definir atributos, construtor, o conceito de “extends” pra herdar comportamento, e depois um for pra imprimir tudo.
Passo 2
Primeiro a base: classe Livro.
Em POO, uma classe é um molde (blueprint) que descreve objetos; ela tem atributos (variáveis) e métodos (funções).
Aqui a gente vai criar atributos privados
Em POO, uma classe é um molde (blueprint) que descreve objetos; ela tem atributos (variáveis) e métodos (funções).
Aqui a gente vai criar atributos privados
titulo
e autor
, um construtor pra inicializar esses campos e getters para permitir acesso.public class Livro {
private String titulo;
private String autor;
// Construtor: método especial que roda na hora de criar o objeto
public Livro(String titulo, String autor) {
this.titulo = titulo;
this.autor = autor;
}
// Getters: jeitos seguros de ler os atributos lá de fora
public String getTitulo() {
return titulo;
}
public String getAutor() {
return autor;
}
}
Passo 3
Agora a classe Apostila que herda de Livro.
Herança (a tal da palavra-chave
Se quisermos, podemos criar um construtor em Apostila que chama o construtor da classe-mãe usando
Herança (a tal da palavra-chave
extends
) significa que Apostila vai “ganhar” tudo que Livro já tem (atributos e métodos), sem copiar código.Se quisermos, podemos criar um construtor em Apostila que chama o construtor da classe-mãe usando
super(...)
.public class Apostila extends Livro {
// A gente não precisa declarar titulo e autor de novo,
// porque elas já vêm da classe Livro.
// Construtor da Apostila: passa titulo/autor pra classe Livro.
public Apostila(String titulo, String autor) {
super(titulo, autor);
}
}
Passo 4
Agora vamos montar um vetor com 3 objetos Apostila.
Em Java, um vetor (array) de Apostila se declara assim:
Em Java, um vetor (array) de Apostila se declara assim:
Apostila[] vetor = new Apostila[3];
Depois a gente preenche cada posição com um
new Apostila(...)
.vetor[0] = new Apostila("Java Básico", "Maria Silva");
vetor[1] = new Apostila("Orientação a Objetos", "João Souza");
vetor[2] = new Apostila("Estruturas de Dados", "Ana Pereira");
Passo 5
Por fim, para imprimir os títulos e autores de todas as apostilas, usamos um loop
Em cada iteração, pegamos o objeto na posição
for
.Em cada iteração, pegamos o objeto na posição
i
e chamamos seus getters getTitulo()
e getAutor()
.for (int i = 0; i < vetor.length; i++) {
System.out.println("Apostila " + (i+1) + ":");
System.out.println(" Título: " + vetor[i].getTitulo());
System.out.println(" Autor : " + vetor[i].getAutor());
System.out.println();
}
Resposta
Segue o programa completo em Java:
// Classe-pai
public class Livro {
private String titulo;
private String autor;
public Livro(String titulo, String autor) {
this.titulo = titulo;
this.autor = autor;
}
public String getTitulo() {
return titulo;
}
public String getAutor() {
return autor;
}
}
// Classe derivada
public class Apostila extends Livro {
public Apostila(String titulo, String autor) {
super(titulo, autor);
}
}
// Classe com método main para testar
public class Main {
public static void main(String[] args) {
// Passo de criação do vetor
Apostila[] vetor = new Apostila[3];
vetor[0] = new Apostila("Java Básico", "Maria Silva");
vetor[1] = new Apostila("Orientação a Objetos", "João Souza");
vetor[2] = new Apostila("Estruturas de Dados", "Ana Pereira");
// Impressão dos dados
for (int i = 0; i < vetor.length; i++) {
System.out.println("Apostila " + (i+1) + ":");
System.out.println(" Título: " + vetor[i].getTitulo());
System.out.println(" Autor : " + vetor[i].getAutor());
System.out.println();
}
}
}