Jorge e Leonardo,
Associacoes sao
trivialmente implementadas em Java atraves da criacao de um
atributo
(referencia). Eh obvio. Acho que nunca disso nada que negasse
isso.
Meu e-mail diz
respeito `aquele exemplo. Admito
que fui pouco explicito e
que
talvez eu tenha dado a entender que a inexistencia
de uma "association
class",
determina uma agregacao, o que
nao eh
verdade, ou que "Aula"
seria uma
"
association class", o que, de fato, depende do
entendimento do que esta sendo
modelado. Preocupei-me apenas com o exemplo Professor
-> Aluno, que na
minha opiniao nao deveria ser implementado sem uma
classe "Aula".
O que nao ficou claro em meu e-mail foi qual o papel
que a classe "Aula" teria.
Eu apenas enfoquei a importancia de sua existencia, o
que em minha opiniao
eh inquestionavel. Concordo com o que voces disseram,
eu apenas nao estava
pensando a mesma
coisa.
Te mais!
Andre Mendonca
[EMAIL PROTECTED]
Sakonnet Technology,
LLC
594 Broadway, Suite 1008
New York, NY 10012
-----Original Message-----
From: Jorge Martins [mailto:[EMAIL PROTECTED]]
Sent: Monday, March 19, 2001 12:21 PM
To: '[EMAIL PROTECTED]'
Subject: RE: [java-list] Para Alexandre: implementação de agregações e associaçõesNão duvido que seja uma modelagem muito melhor. Sem dúvida é. Meu debate com o Sven vem por ele considerar que a implementação sem a "association class" determina uma agregação. Esta explicando que não é necessário uma 'association class' numa associação e que uma referência em java não representa que um objeto de uma classe possui (agregaga) outro.Encontrei um exemplo de associação no livro Modelagem e Projetos Basados em Objetos, do Rumbaugh, que confirma isso. Este exemplo mostra que uma forma de implementar associação em C++ é colocando um ponteiro na classe. Em java, este ponteiro seria uma simples referência.valeuJorge-----Original Message-----
From: Andre Mendonca [mailto:[EMAIL PROTECTED]]
Sent: segunda-feira, 19 de março de 2001 13:34
To: [EMAIL PROTECTED]
Subject: RES: [java-list] Para Alexandre: implementação de agregações e associaçõesJorge,Eu concordo com o Sven neste caso. A existencia de uma classe "Aula" ou"Disciplina" retrata melhor o que queremos modelar. Um professor nao tem,_necessariamente_ que estar associado a um aluno. "Professor" pode, inclusiveser um titulo que o cara ostenta, sendo assim um conceito muito mais abrangentedo que simplesmente uma pessoa que da aulas (apesar de ser estranho, ehpossivel).Acho que a interpretacao do codigo nao esta errada nao. Se voce diz que umprofessor referencia um conjunto de alunos, voce esta _sim_ dizendo queos Alunos "fazem parte" do Professor. Esta associacao eh, inclusive, problematicasob o ponto de vista de implementacao. Eu explico:1. Imagine que um professor mude de disciplina no meio do semestre ou ano letivo.Com a sua modelagem teriamos que reassociar todos os alunos (centenas, talvez).Com a classe "Aula" isso seria um procedimento trivial.2. "Aula" (ou "Disciplina") eh uma entidade que independe de um professor especifico.No seu caso, como modelariamos uma disciplina que eh ensinada por mais de umprofessor? Teriamos que manter todos os conjuntos de associacoes simultaneamente,o que nao eh muito eficiente. Digamos que duas disciplinas sao ensinadas, cada uma,por tres professores e tem 100 alunos (cada). Teriamos, entao, 3 x 100 = 300 referenciaspara representar uma aula. Se os professores trocassem de turma, teriamos queatualizar 600 referencias. Um pensamento similar seria aplicado para o caso de termosalunos cancelando disciplinas (fato extremamente comum).3. Digamos que nao houve troca de professores; simplesmente o semestre acabou.Teriamos que, novamente, atualizar MILHARES de referencias, ja que neste casoTODOS os professores terao novos alunos. Em uma universidade com 50 mil alunose 5 mil professores isto pode ser um pouco caro.4. Mais: depois que o semestre terminar, onde iremos buscar as informacoes arespeito de uma determinada disciplina, ensinada em um determinado semetre?Ou se um aluno cursou esta disciplina ou quando ele a cursou? A classe "Aula"(cujo semestre faria parte de seu identificador -- o metodo equals() ajudaria) resolveo problema de uma maneira elegante.Acho que, por estas razoes, a existencia da classe "Aula" eh de fundamentalimportancia e associar um professor diretamente a um aluno nao eh muitoeficiente.Cordialmente,Andre MendoncaSakonnet Technology, LLC596 Broadway, Suite 1008New York City, NY 10012Não concordo.Um referência em java não representa que um objeto têm um outro. Este objeto não é do outro, apenas há uma referência para ele, coerente com a definição de associação.Não discordamos do conceito, seja dito. Mas sua interpretação do código está equivocada. O fato do Professor ter uma (ou mais referências) para um Aluno não representa que o Aluno faça parte do professor. E sim o comportamento destas entidades.E você pode perceber que no meu modelo está implementado uma relação bidirecional e em nenhum momento aluno faz parte de professor. Apenas não há uma classe descrevendo esta associação.Não tenho a mão o Rational Rose, mas acredito que uma associação sem "association class" será modelada como eu descrevi.De qualquer forma esta é uma boa discussão, pois trata-se da implementação e visualização de modelos em código java.abraçosJorge