N�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�os
 
Jorge
 
 
-----Original Message-----
From: Sven van �t Veer [mailto:[EMAIL PROTECTED]]
Sent: sexta-feira, 16 de mar�o de 2001 18:09
To: [EMAIL PROTECTED]
Subject: Re: RE: RE: RES: [java-list] Para Alexandre: implementa��o de agrega��es e associa��es

Jorge Martins wrote:
[EMAIL PROTECTED]" type="cite">
Sven,
 
N�o � necess�rio ter uma classe que descreve a associa��o para ser uma associa��o. Ela s� � necess�ria quando o relacionamento det�m alguma informa��o ou possui algum comportamento pr�prio que precisa ser encapsulado.
 
A implementa��o em java para a associa��o tipicamente � uma refer�ncia para o objeto da outra classe. O que define como associ��o ou agrega��o � o comportamento das entidades.
 
abra�os

Jorge
 
ps: veja em ferramentas UML como o Together e perceba como o c�digo gerado para ambas as op��es s�o iguais, apenas com um coment�rio ao lado indicando o tipo do relacionamento.
Association de acordo com Rational:


Association
A relationship that models a bi-directional semantic connection among instances.

Aggregation
An association that models a whole-part relationship between an aggregate and its parts.

Por�m, quando uma classe faz parte de uma outra classe (a tem b) falamos de uma agrega��o. Ae, cualquer coisa assim:
class Professor{
   private Collection alunos;
}
ou
class Professor{
   private Aluno[] alunos;
}

� por defini��o uma agrega��o, ja que agora o aluno �faz parte do� professor. No caso de um relacionamento de professores e alunos n�o � a situa��o que vc quer. A informa��o sobre o relacionamento de professor com o aluno n�o � apropriado para ser contido dentro das classes. Um professor n�o *tem* alunos e o alnuno n�o *tem* professores, apesar do fato que eles tem *algum tipo* de relacionamento. Ai vem a Aula. O professor d� aula e os alunos recebem as aulas, portanto pode dizer que:
Uma aula *tem* zero ou varias professor(es) e *tem* zero ou varias alunas:
class Aula{
  private Collection alunos;
  private Collection professores;
}

Uma cone�ao semantica de uma classe com a outra (o professor que d� aulas aos alunos) � uma associa��o.

Testei ambos no Rose e no Together, mas infelizmente o Together nem d� para definir um �association class�, por�m esse modelo n�o pode ser modelado no Together, mas o Rose gera:
//Source file: c:\\temp\\Professor.java


public class Professor
{
 
  public Professor()
  {
  }
}
e
//Source file: c:\\temp\\Aluno.java


public class Aluno
{
 
  public Aluno()
  {
  }
}

e

//Source file: c:\\temp\\Aula.java


public class Aula
{
 
  public Aula()
  {
  }
}

No caso de uma associa��o bidirectional ae ter� que modelar ainda a agrega��o Aula-Aluno e Aula->Professor
ai gera:
//Source file: c:\\temp\\Aula.java


public class Aula
{
  public Professor theProfessor[];
  public Aluno theAluno[];
 
  public Aula()
  {
  }
}


Sven

[EMAIL PROTECTED]" type="cite">
 
 
 
-----Original Message-----
From: Sven van �t Veer [mailto:[EMAIL PROTECTED]]
Sent: sexta-feira, 16 de mar�o de 2001 09:52
To: [EMAIL PROTECTED]
Subject: Re: RE: RES: [java-list] Para Alexandre: implementa��o de agrega��es e associa��es

Jorge,

Acho que est� quase certo. Implementando assim, est� errado. A rela��o no caso do seu profesor ainda � tem. Veja o seguir:

/* modelo escola */
class Professor
{

}

class Aluno
{

}

class Aula{
private Professor p;
private Collection alunos;
}

Isso � uma associa��o. Uma associa��o � uma rela��o entre duas ou mais classes gerenciado por uma(s) outras classes. Qualquer rela��o *tem* � uma agrega��o. Por�m neste exemplo a classe Aula � o 'association class' que tem os seguintes rela��es com Aluno e Porfessor:
Uma aula *tem* um professor;
Uma aula *tem* zero ou mais alunos.
As outras rela��es:
Alunos *tem aula* de um Professor
Um professor *d� aula* a varias alunos.


Sven


Jorge Martins wrote:
[EMAIL PROTECTED]" type="cite">
N�o � n�o, valter. Associa��o e agrega��o s�o ambos relacionamentos de
classes. Em java, voc� implementa como uma refer�ncia de um objeto ao outro.

Exemplo:


/* modelo do banco de dados */
class Table
{
private Row rows[]; /* agrega��o "tem" */
}


class Row
{
private Table table
}

/* modelo escola */
class Professor
{
private Aluno alunos[]; /* associa��o leciona */
}

class Aluno
{
private Professor professores[];
}

A implementa��o dos dois casos � id�ntica, mas o primeiro � uma agrega��o e
o segundo � uma associa��o.

A difer�n�a est� no tipo da entidade relacionada. Na agrega��o voc� se
relaciona com uma entidade fraca, que t�m a exist�ncia dela dependente a
outra. Grosso modo onde h� na descri��o o verbo ter, h� uma agrega��o. No
exemplo: "Tabela tem linhas".

A associa��o relaciona com entidades fortes, de exist�ncia independente a
outras entidades. Um professor e um aluno existem independentemente, apenas
se associam. O professor leciona aluno. Logo, o professor tem uma associa��o
lecionar com aluno.

Sacou? As diferen�as na implementa��o s�o pequenas. Todas espelham essas
diferen�as de comportamento que eu descrevi acima.

abra�os

Jorge


-----Original Message-----
From: valter vieira de camargo [mailto:[EMAIL PROTECTED]]
Sent: quarta-feira, 14 de mar�o de 2001 19:10
To: [EMAIL PROTECTED]
Subject: Re: RES: [java-list] Para Alexandre: implementa��o de
agrega��es e associa��es


Sobre as associa��es e agrega��es eu estou achando que � realmente isto:
agrega��o - atributo do tipo de outra classe
associa��o - instancia��o de uma classe dentro de algum m�todo de outra...

Quanto � abordagem do Furlan... ser� que se modelarmos um sistema
completamente
OO sem a preocupa��o com chaves, etc.... a dificuldade na implementa��o ser�
muito acentuada, voc� n�o acha ? Eu estou desenvolvendo um projeto de
mestrado e
quero fazer da maneira certa entende ? A minha outra preocupa��o � quanto ao
projeto ..... no modelo de classes de an�lise tudo bem ... mas o meu modelo
de
classes de projeto tem que ter alguma coisa relacional....


Alexandre Rodrigues Gomes wrote:

Valter,

na implementa��o acho que poder�amos resumir na seguinte forma:
para agregar, utilizaremos atributos de inst�ncia, ou seja,
"vari�veis globais" e para associa��o podemos criar apenas
vari�veis locais de m�todos. Ser� que � plaus�vel esta abordagem ?
Se bem que podemos ter atributos de classe que n�o s�o verdadeiras
agrega��es mas apenas realizam papel associativo. Acho que
isto � bem conceitual mesmo. O pessoal da lista podia dar
uma forcinha.....

Quanto �quela abordagem do Furlan, eu questiono um pouco.
Ora, temos hoje que o que se busca � a independ�ncia da fonte
de dados. Devemos abstrair a forma com que a base de informa��es
ser� implementada, nos deter apenas numa interface pr�-definida
e deixar as quest�es peculiares de cada banco com uma camada
de software que realize o mapeamento OO/Relacional. Amarrar
o seu modelo de neg�cios numa solu��o �nica de backend �
limitar seu processo de desenvolvimento � n�o escalabilidade
e evolu��o.

By Al�!

-----Mensagem original-----
De: valter vieira de camargo [mailto:[EMAIL PROTECTED]]
Enviada em: quarta-feira, 14 de mar�o de 2001 10:48
Para: [EMAIL PROTECTED]
Assunto: [java-list] Para Alexandre: implementa��o de agrega��es e
associa��es

Ok... Alexandre ...
� justamente no ponto da implementa��o a minha
preocupa��o....
              Gostei do que voc� disse e acho que realmente est� certo.
Minhas d�vidas eram mais quanto � implementa��o das associa��o. E tamb�m
ach
oque � assim que funciona.... isto �, dentro de uma classe , instancio uma
outra e a utilizo para cumprimento das responsabilidades da primeira.
No caso da agrega��o, um atributo da classe � do tipo de outra....
� isto, n�o � ?

Agora veja bem.

Em um livro de UML do Furlan, encontrei que para se fazer a
normaliza��o de um modelo de classes, visando o projeto � claro, deve-se
basear em algum tipo de banco de dados ser� utilizado. Se os dados do meu
sistema ser�o persistidos utilizando BD OO a normaliza��o se d� sem a
preocupa��o das chaves prim�rias e estrangeiras... mas quando o me sistema
utiliza BD relacional devo me preocupar com isso... s� que ele apenas
exemplifica a normaliza��o utilizando BD OO. Voc� sabe alguma coisa sobre
essas normaliza��es com BD relacional ?

[]'s Valter.

Alexandre Rodrigues Gomes wrote:

Valter,

no n�vel de linguagem, tanto agrega��o quando associa��o
se d�o de maneiras similiares. O que as distingue � o seu
modelo. Na UML, a associa��o � feita apenas com uma linha
ligando as classes envolvidas enquanto que a agrega��o �
uma linha com um losango na ponta da classe agregadora.

Conceitualmente, deveria-se utilizar agrega��o quando o
prop�sito de uma classe for o de encapsular o funcionamento
de algum objeto, ou seja, ele ser� parte constituinte daquela
classe. No caso da associa��o, a classe apenas tem conhecimento
de alguma outra classe e faz uso de alguma inst�ncia desta para
completude de suas responsabilidades.

No primeiro cap�tulo do livro do Gamma (Design Patterns),
ele d� uma descri��o legal sobre a utiliza��o destas duas
alternativas.

Abra�os,
By Al�!

-----Mensagem original-----
De: valter vieira de camargo [mailto:[EMAIL PROTECTED]]
Enviada em: ter�a-feira, 13 de mar�o de 2001 19:38
Para: [EMAIL PROTECTED]
Assunto: [java-list] implementa��o de agrega��es e associa��es

Visto que � comum a utiliza��o de linguagens orientadas a
objetos e banco de dados relacionais, pretendo estipular um padr�o de
implementa��o para tais casos de modelagem.
Estou desenvolvendo uma pesquisa com java e SyBase e devido as
diferen�as entre os dos paradigmas algumas d�vidas surgem.
Eu gostaria de saber a diferen�a entre a implementa��o de um
modelo de classes com agrega��o e com associa��o. Percebo que a
agrega��o � f�cil identificar, isto �, quando uma classe possui um
atributo cujo tipo � de outra classe. Mas e quando temos uma associa��o
? Como voc�s implementam uma associa��o sendo fiel � documenta��o ?

Valter

------------------------------ LISTA SOUJAVA
----------------------------
http://www.soujava.org.br  -  Sociedade de Usu�rios Java da Sucesu-SP
d�vidas mais comuns: http://www.soujava.org.br/faq..htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para
[EMAIL PROTECTED]
-------------------------------------------------------------------------
------------------------------ LISTA SOUJAVA
----------------------------
http://www.soujava.org.br  -  Sociedade de Usu�rios Java da Sucesu-SP
d�vidas mais comuns: http://www.soujava.org.br/faq..htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para
[EMAIL PROTECTED]
-------------------------------------------------------------------------
------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br - Sociedade de Usu�rios Java da Sucesu-SP
d�vidas mais comuns: http://www.soujava.org.br/faq..htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------

------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br - Sociedade de Usu�rios Java da Sucesu-SP
d�vidas mais comuns: http://www.soujava.org.br/faq..htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------


------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br - Sociedade de Usu�rios Java da Sucesu-SP
d�vidas mais comuns: http://www.soujava.org.br/faq..htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------

------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br - Sociedade de Usu�rios Java da Sucesu-SP
d�vidas mais comuns: http://www.soujava.org.br/faq..htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------




Responder a