Escolar Documentos
Profissional Documentos
Cultura Documentos
O detalhe importante é o seguinte: insira nos métodos adicionar e remover chamadas para os
métodos correspondentes da outra classe. Por exemplo: no método adicionarAutor, da classe
Livro, chame o método adicionarLivro da classe Autor. Já no método adicionarLivro da classe
Autor, chame o método adicionarAutor da classe Livro. Para evitar um loop infinito,
teste antes se o objeto já não foi incluído ou removido da coleção.
[source language='java']
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public Livro() {
super();
this.autores = new HashSet();
}
public Livro(String titulo){
this.titulo = titulo;
this.autores = new HashSet();
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public String getTitulo() {
return titulo;
}
public void setAutores(Set autores) {
Iterator iterator = autores.iterator();
while (iterator.hasNext()){
Autor autor = (Autor)iterator.next();
this.adicionarAutor(autor);
}
}
public Set getAutores() {
return Collections.unmodifiableSet(this.autores);
}
public void adicionarAutor(Autor autor){
if (!this.getAutores().contains(autor)){
this.autores.add(autor);
autor.adicionarLivro(this);
}
}
public void removerAutor(Autor autor){
if (!this.getAutores().contains(autor)){
this.autores.remove(autor);
autor.removerLivro(this);
}
}
}
[/source]
Mais uma vez, observe os métodos adicionarLivro e removerLivro. Veja como eles invocam os
métodos correspondentes da classe Livro, adicionarAutor e removerAutor, respectivamente.
[source language='java']
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public Autor() {
super();
this.livros = new HashSet ();
}
public Autor(String nome){
this.nome = nome;
this.livros = new HashSet ();
}
[source language='java']
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
autor01.setLivros(livros);
autor02.setLivros(livros);
É isso, pessoal.