Bom dia! Sou iniciante e quero programar o seguinte cenário.
Possuo as seguintes regras para um relacionamento entre as classes Empresa e Funcionario:
1 - Empresa só pode existir se tiver funcionário. Ou seja, em nível de código, quando uma empresa for instanciada, pelo menos 1 funcionário também deverá ser instanciado.
Obs.: Aqui enxerguei um problema: Dentro da classe empresa eu preciso ter um atributo funcionário do tipo Funcionario para atender a minha regra de que a Empresa controla o ciclo de vida de Funcionario. Só que dessa forma, só poderei criar 1 funcionario para cada empresa. A forma de resolver isso seria com um array mas devido às limitações de arrays quero trabalhar com coleções como List, por exemplo. Só que se eu usar uma List, não terei mais o atributo funcionario do tipo Funcionario na classe empresa. A partir daí, Empresa pode passar a existir sem funcionário e minha regra é quebrada. Como eu resolvo isso no código? Seria possível, escrever pra mim, por gentileza?
2 - Na minha regra, também não faz sentido existir funcionário sem empresa. Afinal de contas, funcionário trabalha em uma empresa e sem empresa não existe funcionário.
Conclusão: Possuo relacionamentos bilaterais fortes. Um controla o ciclo de vida do outro. Na UML, relações fortes entre classes é determinado como composição. Mas segundo as literaturas que estou estudando, uma inclusive é oficial para o exame da Oracle, não existe esse tipo de relacionamento forte bilateral. Esse caso seria de multiplicidade vários-para-vários.
Como resolvo essa questão a nível de código e como ficam meu diagrama com essas duas classes?