Prova Prática Java – V6
No Banco XPTO, para o cálculo do comprometimento financeiro de uma empresa, leva-se em
conta o total de bens imóveis desta empresa e de todos os seus sócios. Escreva um método (e todas
as classes adicionais) para retornar o total do valor dos bens de uma empresa, passando como
parâmetro a sua estrutura societária.
Requisitos de Negócio:
• A estrutura societária de uma empresa é sempre composta por ao menos uma pessoa física
ou jurídica e pode ser composta por mais pessoas físicas e/ou jurídicas.
• Toda empresa possui uma estrutura societária.
• Pode haver ciclo societário, ou seja, a empresa A pode ser sócia da empresa B e a empresa B
pode vir a ser sócia da empresa A. Inclusive, a empresa A pode vir a ser sócia dela mesma.
Além disso, qualquer pessoa física ou jurídica pode ser sócia de mais de uma empresa.
• Para a contabilização do total dos bens imóveis de qualquer empresa, deve-se levar em
consideração o total de bens imóveis de todos os sócios de sua estrutura societária.
• A contabilização dos bens imóveis de uma mesma pessoa (física ou jurídica) só deve ocorrer
uma única vez.
Exemplo de uma instância do problema:
No caso da instância acima, seriam sócios da empresa A (ou seja, comporiam a estrutura societária da
empresa A): Pessoa física 1, Pessoa física 2 e Empresa D. O patrimônio destas pessoas deve ser levado
em consideração no cômputo do patrimônio da Empresa A. Ao mesmo tempo, compõe a estrutura
societária da Empresa D, Pessoa Física 4, Pessoa Física 5 e Empresa C. O patrimônio destas pessoas
deve ser levado em consideração no cômputo do patrimônio da Empresa D e, consequentemente, no
cômputo do patrimônio da Empresa A.
Requisitos Técnicos:
• Crie seu projeto utilizando algum gerenciador de dependências (ex: Maven) de maneira a
independer de qualquer IDE.
• Valide a consistência de todas suas entradas (ex: CPF/CNPJ) e instancie todos seus objetos em
estado consistente.
• Verifique com muito cuidado se seu programa não corre o risco de entrar em loop infinito
para nenhum caso de estrutura societária. Este será um dos principais pontos avaliados.
• NÃO utilize nenhuma frameworks de desenvolvimento web ou realize persistências em bases
de dados. As estruturas de dados e os algoritmos utilizados são mais relevantes. As únicas
bibliotecas autorizadas para a realização do teste são as nativas do Java e bibliotecas de testes,
como Junit, AssertJ, etc.
• NÃO utilize sites versionadores de código ou torne este enunciado ou sua solução públicos de
qualquer maneira que seja. Envie por e-mail seu teste em um arquivo compactado.
Sugestões:
• Escreva seu código utilizando todos os padrões no qual você possui conhecimento.
• Caso queira, pode utilizar a biblioteca Lombok para os seus POJOs.
• Comente os trechos de código quando achar conveniente. Lembre-se que futuramente,
outras pessoas poderão dar manutenção nele.
• Seu código será avaliado pela funcionalidade, clareza e otimização.
• Você pode criar uma aplicação no estilo "Java Console Application"
Perguntas frequentes:
1. P: O que são bens imóveis?
1.1. R: Bens fazem parte do patrimônio de uma organização. Bens imóveis são aqueles
que estão vinculados ao solo e não podem ser removidos do seu lugar sem destruição
ou dano à sua estrutura. Também podem ser chamados de bens de raiz. Edifícios,
construções, terrenos e árvores são alguns exemplos. Para o contexto do exame,
basta saber que todo bem imóvel possui um valor qualquer acima de zero e que cada
bem imóvel precisa ser contabilizado apenas uma única vez.
2. P: O comprometimento financeiro leva em conta quantos bens imóveis tem uma estrutura
societária ou algum valor patrimonial que o define?
2.1. R: O comprometimento financeiro leva em consideração diversas outras dívidas da
empresa, mas para o contexto do exame, basta somar o valor total dos bens imóveis,
não sendo necessário levar em consideração a quantidade de bens. O objetivo final é
somar o valor dos bens, não calcular o comprometimento financeiro.