Problema em cadastrar os objetos Ator e Elenco

Estou desenvolvendo um projeto para cadastrar as pessoas que trabalham em um filme segundo o convencionado abaixo.

Implemente um sistema para controle de acesso aos funcionários da Globo filmes. Dentre os funcionários temos atores, diretores, roteiristas, câmeras, cinegrafista, etc. Cada uma destas pessoas possui uma ou mais funções a depender do filme para o qual está
escalado. Deve ser possível:
a) cadastrar todos os envolvidos em um filme informando sua(s) função(ões);
b) informar a filmografia indicando sua função específica; c) informar todas as características de um dado filme (nome, diretor, roteirista, elenco, trilha sonora, ano, etc.).

Estou usando composição para criar as classes, o problema que estou encontrando é que um funcionário pode ter mais de uma função. O problema que estou encontrando é que o Ator precisa ter a filmografia que trabalhou. Filmografia depende de Filme, mas Filme depende de Elenco e Elenco depende de Ator. Criou um ciclo que não estou conseguindo resolver. Gostaria da opinião de alguém…

Minha classe principal é a seguinte:

import java.util.ArrayList;

public class GloboFilms {

	public static void main(String[] args) {
		Funcionario f;
		Filmografia filmografiaMelGibson;
		Endereco endereco;
		String filme01;
		TrilhaSonora ts;
		Musica musica;
		Filme filme;
		Elenco elenco;
		Ator ator;
		
		endereco = new Endereco("Av. Floriano Peixoto", "Malvinas", 183, "Campina Grande", "PB", 
				"Brasil", "58187-236");
	
		musica = new Musica("Survive", 1985);
		musica.addCompositor("Tina Tuner");
		ts = new TrilhaSonora();
		ts.addMusica(musica);

		filmografiaMelGibson = new Filmografia(); 
		filme = new Filme("MadMax", "George Miller", "George Miller", elenco, ts, 1985);
		filmografiaMelGibson.addFilme(filme);

		
		f = new Funcionario("123456", "Mel Gibson", "+55 83 91077850", "melgibson@gmail.com", 
				filmografiaMelGibson, "123456", 2000000.00, endereco);
		ator = new Ator(f, "789456");

		elenco.addAtor(ator);	

	}

}

As classes que estão me dando problema são as seguintes:

import java.util.ArrayList;

public class Elenco {
	
	private ArrayList<Ator> atores;

	public Elenco() {
		this.atores = new ArrayList<Ator>();;
	}

	public ArrayList<Ator> getAtores() {
		return atores;
	}

	public void setAtores(ArrayList<Ator> atores) {
		this.atores = atores;
	}
	
	public void addAtor(Ator ator) {
		atores.add(ator);
	}

}
public class Ator {
	private Funcionario funcionario;
	private String idAtor;
	
	
	public Ator(Funcionario funcionario, String idAtor) {
		this.funcionario = funcionario;
		this.idAtor = idAtor;
	}


	public Funcionario getFuncionario() {
		return funcionario;
	}


	public void setFuncionario(Funcionario funcionario) {
		this.funcionario = funcionario;
	}


	public String getIdAtor() {
		return idAtor;
	}


	public void setIdAtor(String idAtor) {
		this.idAtor = idAtor;
	}
	
	public String atuar() {
		return funcionario.getNome() + " está atuando";
	}

}
public class Funcionario {
	private String IdFuncionario;
	private String nome;
	private String telefone;
	private String Email;
	private Filmografia filmografia;
	private String CPF;
	private double salario;
	private Endereco endereco;

	public Funcionario(String idFuncionario, String nome, String telefone, String email, Filmografia filmografia,
			String CPF, double salario, Endereco endereco) {
		super();
		IdFuncionario = idFuncionario;
		this.nome = nome;
		this.telefone = telefone;
		Email = email;
		this.filmografia = filmografia;
		this.CPF = CPF;
		this.salario = salario;
		this.endereco = endereco;
	}

	public String getIdFuncionario() {
		return IdFuncionario;
	}

	public void setIdFuncionario(String idFuncionario) {
		IdFuncionario = idFuncionario;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getTelefone() {
		return telefone;
	}

	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}

	public String getEmail() {
		return Email;
	}

	public void setEmail(String email) {
		Email = email;
	}

	public Filmografia getFilmografia() {
		return filmografia;
	}

	public void setFilmografia(Filmografia filmografia) {
		this.filmografia = filmografia;
	}

	public String getCPF() {
		return CPF;
	}

	public void setCPF(String cPF) {
		CPF = cPF;
	}

	public double getSalario() {
		return salario;
	}

	public void setSalario(double salario) {
		this.salario = salario;
	}

	public Endereco getEndereco() {
		return endereco;
	}

	public void setEndereco(Endereco endereco) {
		this.endereco = endereco;
	}

}