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) {