Olá pessoal,
Estou modelando um sistema aqui mas cheguei numa parte q naum consigo pensar em nenhuma solução plausível.
Eu tenho o seguinte cenário:
Relacional:
|Cliente| -1-----|Conta_Fundo|-----1-|Fundo|-1------|Movimento|
|-1--------------------------------------------------------------------*|
Ou seja, o meu cliente possui uma lista de fundos onde ele investe, e cada fundo possui N movimentos para cada cliente.
Meu objetivo era chegar em algo do tipo:
Cliente.Fundos(0).getMovimentos()
E receber como retorno todos os movimentos daquele cliente naquele fundo.
Mas realmente naum estou conseguindo. Por isso acredito q seja algum erro de conceito meu.
Acho que não entendi muito bem a dúvida, mas lá vai:
Então kara, sua modelagem está perfeita, agora na codificação você poderia criar uma classe Cliente que teria uma coleção de Fundo e a classe Fundo por sua vez teria uma Coleção de Movimento.
Que teria como resultado algo parecido com isso:
classe Cliente
public class Cliente {
private Collection<Fundo> fundos;
//set e get para o atributo acima
}
classe Fundo
public class Fundo {
private Collection<Movimento> movimentos;
//set e get para o atributo acima
}
classe Fundo
public class Movimento {
//atributos
}
método qualquer, acessando os movimentos de um Cliente:
public void logDosMovimentosDoPrimeiroFundo(Cliente cliente) {
Collection<Movimento> movimentos = cliente.getFundos(0);
for (Movimento movimento : movimentos) {
System.out.println(movimento);
}
}
É essa a dúvida?
Falows
amigo,
Não sei se estou certo mas, movimento deve estar relacionado com conta não? (aí depende do seu problema real)
E ciclos só são bem vindos quando realmente são necessários, e neste caso não parece ser.
Opa, e ae blz!
Entaum, a estrutura q eu quero montar eh essa q vc mando ai msm!
Mas o meu problema eh tipo assim, o meu objeto Movimento tem q ter duas visualizações diferentes.
A primeira seria tipo assim
Fundo fundo = new Fundo(10);
Collection<Movimentos> movimentos = fundo.getMovimentos(); //Retorna todos os movimento daquele fundo
E a segunda:
Cliente cliente = new Cliente(1);
Collection<Movimentos> movimentos = cliente.fundo(0).getMovimentos() //Retorna todos os movimentos daquele fundo e daquele cliente
Ai oq eu naum to conseguindo pensar é como fazer o segundo caso.
Eu naum estou conseguindo visualizar um jeito de fazer o getMovimentos identificar que aquele fundo a quem ele pertence esta dentro de um cliente x.
Mas pra que você quer saber de qual Cliente o Fundo é?
Mas bem, primeiro:
Pra você conseguir pegar o fundo fazendo desse jeito “(0)”, você vai ter que fazer algo como:
Desse jeito você pega o primeiro item da sua collection.
Agora, pra você manter a referência do Cliente no Fundo, é só colocar um atributo no Fundo do tipo Cliente.
public class Fundo {
private Collection<Movimento> movimentos;
private Cliente cliente;
//set e get para o atributo acima
}
Ixi kara, acabei esquecendo a hora aqui, tenho que ir, vê se consegui entender o problema, se não por favor me corrija.
Falows
Eh entaum, eu pensei nisso! Mas ai eu acho q sai do conceito!
Pq um Fundo não tem um cliente como um atributo!
Isso q ta me torrando o cérebro
Entendi.
Então, fica tranqüilo que também estará certo fazendo desse modo (Fundo com um atributo de Cliente), não fica correto vendo por outras questões, mas diante a OOP, é um modo (correto também).
Mas em que momento no fluxo do seu negócio que o sistema iria receber um Fundo, e sua aplicação diante dele teria que saber de qual Cliente ele é?
Bem… depois posta ai como acabou fazendo, e se atendeu ou não.
E ae!
Entaum, acredito q era um erro de conceito msm! Estava conversando com mais gente, e percebi q fundo não é agregação de Cliente.
Por isso minhas informações de movimentos devem vir da classe Fundo.