Refêrencia de Classes

Porque eu sempre tenho que fazer um List de uma classe dentro da daquele que eu referencio?
Tipo, eu tenho duas classes, Projeto e Requisito, dentro de Requisito eu tenho um projCodigo que é a referencia da Classe Projeto, e dentro da Projeto eu coloco um List/Collection de Requisito?
Por que se deve fazer isso?

Boa noite flaviotomazio!

Caso eu não tenha acertado a resposta,
coloca o código para entendermos melhor a pergunta ou dê mais detalhes.

o porque…

Quando você abstrai uma informação para fazer um programa, um dos passos principais é estabelecer a relação entre as classes que pode ser assossiação, agragação, composição (…). Podemos tambem especificar se essa relação é uni-direcional ou bi-direcional.

exemplo:

Unidirecional
Tenho as classes Projeto e Requisito “classes citas na questão”, se for uni-direcional, da classe Projeto para Requisito, quer dizer que Projeto tem uma referência requisito e Requisito não tem uma a projeto, porém, a classe Requisito não pode acessar os metodos da classe Projeto.

Bidirecional
Imagine os seguintes atributos.

1ª classe
Projeto

  • dataProjeto
  • numeroProjeto

2ª classe
Requisito

  • tempoMínimo

3ª classe
Usuario

  • ref. Requisito

Agora se eu tenho uma referência projeto em Requisito e uma referência requisito em Projeto posso atraves de projeto saber qual o requisito que é o tempoMínimo.
Agora se eu tenho uma terceira classe usuario que tem Requisito, como este tem uma referencia projeto, posso saber atraves dele qual a data do projeto e qual o número do projeto.

outro exemplo, as classes Loja e Produto, na loja tem acesso a um List produto, mas, não há razão para o produto ter acesso a loja, então não precisa fazer um list loja em produto a não ser que você queira saber em quantas lojas o produto foi adicionado e quais os dados das lojas.

A grosso modo:
Porta tem relação com maçaneta, atraves da porta posso escolher qual a cor, modelo e tamanho da maçaneta.
quer dizer que Porta tem uma referencia a maçaneta e maçaneta não tem referencia a porta, fica um pouco estranho se tivesse, mas, pode ter não é proibido.

Agora respondendo diretamenta a pergunta, Requisito tem projCodigo, relacinamento uni-direcional, não precisa colocar um List/Collection de requisito não.
A não ser que você faça um relacionamento bidirecional, depende qual abstração foi foi feita.

Espero ter ajudado…

Então com isso teria como exibir os requisitos que apenas estivessem referenciando o objeto X da Classe Projeto?

Como a classe Requisito está relacionada com projeto, através da classe requisito posso excutar os métodos de projeto ou getAtributo de projeto somento pelo meu objeto projeto que está em requisito, já os métodos de requisito, posso acessar diretamente.

[code]
public class Requisito{
private Projeto meuProjeto;//tem como eu saber o numProj através de getNumProj()

}

class Projeto{
privete int numProj;

  public int getNumProj(){
       return this.numProj;
  }

}[/code]