Baixe o app para aproveitar ainda mais
Prévia do material em texto
import java.util.Collections; import java.util.List; import java.util.ArrayList; public class Departamento { private int codigo; private String nome; private final List<Funcionario> funcionarios = new ArrayList<Funcionario>(); public Departamento(int codigo, String nome) { this.codigo = codigo; this.nome = nome; } public List<Funcionario> getFuncionarios() { return (List<Funcionario>) Collections.unmodifiableCollection(this.funcionarios); } public int getCodigo() { return codigo; } public void setCodigo(int codigo) { this.codigo = codigo; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public boolean isFuncionario(Funcionario f) { return this.funcionarios.contains(f); } public int size() { return this.funcionarios.size(); } public boolean remove(Funcionario f ) { if(this.equals(f.getDepartamento())) f.setDepartamento(null); return this.funcionarios.remove(f); } public boolean add(Funcionario f) { if(f==null) return false; if(this.equals(f.getDepartamento())) { if(!this.isFuncionario(f)) return this.funcionarios.add(f); else return false; } return f.setDepartamento(this); } public void imprimeFuncionarios() { System.out.println("Funcionarios do departamento " + this.nome + ":"); for (Funcionario funcionario : funcionarios) { System.out.println(" "+funcionario); } } @Override public String toString() { return this.codigo+":"+this.nome; } @Override public boolean equals(Object obj) { if(obj instanceof Departamento) { Departamento dp = (Departamento) obj; if(dp.getCodigo()==this.getCodigo()) return true; } return false; } } public class Funcionario { private int matricula; private String nome; private String atribuicao; private Departamento departamento = null; public Funcionario(int matricula, String nome, String atribuicao) { this.matricula = matricula; this.nome = nome; this.atribuicao = atribuicao; } public int getMatricula() { return matricula; } public void setMatricula(String nome) { this.matricula = matricula; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getAtribuicao() { return atribuicao; } public void setAtribuicao(String atribuicao) { this.atribuicao = atribuicao; } public Departamento getDepartamento() { return departamento; } public boolean setDepartamento(Departamento departamento) { if(departamento!=null) { if(!departamento.equals(this.departamento)) { if(this.departamento!=null) this.departamento.remove(this); this.departamento = departamento; return this.departamento.add(this); } } else if(this.departamento!=null) { Departamento dp = this.departamento; this.departamento = null; dp.remove(this); return true; } return false; } @Override public String toString() { if(this.departamento!=null) return this.matricula+"."+this.nome+" "+this.departamento.getNome(); else return this.matricula+"."+this.nome+" Dpto: null"; } } public class Main { public static void main(String[] args) { Departamento computacao = new Departamento(1, "Computacao"); Departamento fisica = new Departamento(2, "Fisica"); Funcionario joao = new Funcionario(1,"Joao", "Professor"); Funcionario maria = new Funcionario (2, "Maria","Pesquisadora"); joao.setDepartamento(computacao); maria.setDepartamento(computacao); System.out.println(joao); System.out.println(maria); System.out.println(computacao); System.out.println(fisica); computacao.imprimeFuncionarios(); } } Resolução das questões: Recebe valores de variáveis e retorna os mesmo em forma de String. Em ambas as classes o “equals” é um atributo que exerce a comparação, se um objeto é igual a outro “==”. O add, quando executado, adiciona um item a lista “array”. No caso do setDepartamento o add irá adicionar um departamento ao funcionário. Não seria o mesmo, porque “computação” é um atributo e joão quem recebe os atributos, se fosse contrário daria inconsistência.
Compartilhar