3.3 Objetos para todos os lados!

Falando em evoluir código, precisamos saber mais informações sobre nossos livros. Por exemplo, quem escreveu o livro? Qual o e-mail do autor? E quando foi a sua data de publicação? Todas essas informações são relevantes para nossa livraria e também para nossos clientes. Podemos adicionar essas e outras informações na classe Livro:

public class Livro {

String nome; String descricao; double valor; String isbn;

String nomeDoAutor; String emailDoAutor; String cpfDoAutor;

void mostrarDetalhes() {
System.out.println("Mostrando detalhes do livro "); System.out.println("Nome: " + nome); System.out.println("Descricao: " + descricao); System.out.println("Valor: " + valor); System.out.println("ISBN: " + isbn); System.out.println("--");

}

}

Mas repare que todas essas novas informações pertencem ao autor do

livro e não necessariamente ao livro. Se autor é um elemento importante para nosso sistema, ele pode e deve ser representado como um objeto! Vamos fazer essa alteração, basta criar a classe Autor e declarar seus atributos:

public class Autor { String nome;

String email; String cpf;

}

Portanto, podemos adicionar na classe Livro um atributo do tipo

Autor, que acabamos de criar. Uma classe pode ter outra classe como atributo, esse é um processo natural conhecido como composição. Nosso código fica assim:

public class Livro {

String nome; String descricao; double valor; String isbn; Autor autor;

void mostrarDetalhes() {
System.out.println("Mostrando detalhes do livro "); System.out.println("Nome: " + nome); System.out.println("Descricao: " + descricao); System.out.println("Valor: " + valor); System.out.println("ISBN: " + isbn); System.out.println("--");

}

}

Vamos agora criar alguns autores no CadastroDeLivros e associar ao

seu devido livro. Uma forma de fazer isso seria:

Autor autor new Autor(); autor.nome “Rodrigo Turini”;

Nesse código, apenas criamos o autor e populamos os seus atributos. Agora precisamos associar esse objeto ao seu livro. Podemos simplesmente fazer:

livro.autor autor;

Vamos fazer isso com os dois livros, nosso código completo deve ficar parecido com:

public class CadastroDeLivros {
public static void main(String[] args) {

⬅️ Capítulo Anterior | Próximo Capítulo ➡️