Você está na página 1de 27

Relacionamentos

entre classes
Relacionamentos entre classes

Relacionamentos estruturais entre classes


Precisam ser criteriosamente definidos durante o projeto

do software
So obtidos a partir da anlise dos diagramas

de colaborao
um dos principais diagramas da UML define o

esqueleto do sistema
H trs tipos de relacionamentos entre classes:

associao, agregao e generalizao


Associao entre classes
o tipo de relacionamento mais comum e mais
importante em um sistema orientado a objetos
um relacionamento ou ligao entre duas classes

permitindo que objetos destas possam se comunicar


Objetivo essencial da associao: possibilitar a

comunicao entre objetos de duas classes


A comunicao pode ser uni ou bidirecional
Notao UML para associaes
Segmento de reta ligando as duas classes
Associao unidirecional: inclui-se uma seta na

extremidade de destino
Pode-se incluir um nome na associao

Indica a natureza ou finalidade da comunicao


Notao UML para associaes
Papis das classes
Pode-se incluir uma indicao dos papis das classes

nas associaes
No comum indicar o nome da associao e os papis

das classes para uma mesma associao opta-se


por uma ou outra
Notao UML para associaes
Cardinalidade
Especifica o nmero de objetos de cada classe

envolvidos com a associao


Quando no h especificao, entende-se que a

cardinalidade 1
Notao UML para associaes
A leitura da cardinalidade exige cuidados:
Deve-se fazer a leitura de forma distinta para os dois

sentidos da associao
Para cada um dos sentidos:

Deve-se esquecer a cardinalidade no extremo

de incio
Deve-se considerar que existe a associao de

um objeto da classe de incio com vrios objetos da


classe de destino
Notao UML para associaes

O exemplo abaixo lido como:


'Um objeto da classe CTurma se associa com 40
objetos da classe CAluno, e um objeto da classe
CAluno se associa com um nmero indefinido
(inclusive zero) de objetos da classe Cturma':
Levantamento de associaes
As associaes so criadas a partir da necessidade de
canais de comunicao entre objetos de duas classes
As necessidades so obtidas a partir do diagrama de

sequncia e de colaborao
Exemplo do levantamento de associaes a partir de

um diagrama de colaborao:
Levantamento de associaes
Agregao entre classes
Relacionamento de pertinncia entre classes
Permite a incluso de objetos de uma classe no interior

de objetos de outra classe


Relao 'parte-de', 'tem-um', 'todo-parte'

Objeto que agrega conhece o agregado mas este no

conhece aquele comunicao unidirecional


Notao UML: segmento de reta ligando a classe dos

objetos que agregam classe dos objetos agregados.


Agregao entre classes
Na extremidade da classe dos objetos que
agregam inclui-se um losango:
Agregao entre classes
Cardinalidade
Nmero de objetos envolvidos na relao

Um objeto pode incluir vrios outros mas no pode

estar contido em mais de um objeto


i.e. cardinalidade no lado da classe dos objetos que

agregam ser sempre 1


Agregao entre classes
Exemplo: um objeto da classe CCarro contm 4
objetos da classe CRoda e 5 objetos da classe CPorta:
Definio de agregaes
No existe uma tcnica precisa para de se definir as
agregaes em um sistema
Sugestes:

definio das agregaes a partir de decomposies

quando uma classe tem muitas responsabilidades,

tende-se a dividi-la. Tal diviso pode fazer com que


a classe perca sua identidade
neste contexto, as agregaes so muitos teis

porque dividem uma classe grande em outras


menores, sem que a grande perca a identidade
definio das agregaes a partir de composies

raciocnio o inverso ao da decomposio

procura-se identificar conjuntos de objetos que juntos

compem objetos maiores


Definio de agregaes
definio de agregaes a partir de partes comuns
quando se percebe dentro de duas ou mais classes

um conjunto de atributos e/ou mtodos semelhantes


se estes juntos possuem uma identidade, ento

poderia ser criada uma nova classe:


Definio de agregaes
Definio de agregaes a partir de partes comuns
Tipos de agregao
Agregao por composio
uma agregao de fato

realmente feita a criao ou alocao (esttica) de

um objeto dentro do outro


Exemplo: o objeto ender da classe CEndereco est

sendo instanciado dentro da classe CAluno


O nmero de objetos agregados fixo, uma vez que

so alocados dinamicamente
A notao um losango preenchido
Tipos de agregao
Tipos de agregao
Agregao por associao
Tem a mesma interpretao do que a agregao

por composio
Entende-se que o objeto agregado um componente

do objeto que agrega


A alocao do objeto agregado ocorre de forma esttica

fora do objeto que agrega ou de forma dinmica em


seu interior
Sua implementao ocorre atravs de associaes

So consideradas agregaes quando se realiza um

controle de escopo para os objetos agregados


Utilizada quando se deseja estabelecer uma agregao

envolvendo um nmero varivel de objetos


Tipos de agregao
Generalizao/Especializao de
Classes
Relacionamento estrutural entre duas classes
classe base (superclasse)
derivada
classe base (subclasse)

Herana (relacionamento ' um'

a derivada herda as propriedades da base


Generalizao/Especializao de
Classes
Herana Mltipla
Ocorre quando uma classe deriva de mais de uma
classe base
Herana Mltipla
Quando uma classe deriva de mais de uma classe base
Exerccio
4) Para a especificao apresentada em aula, crie a
arquitetura do software: partindo das classes
propostas no exerccio 2, verifique o relacionamento
estrutural entre elas (associaes, herana) e desenhe
o diagrama de classes.
Bibliografia
[1] STADZISZ, Paulo Czar.
Projeto de software usando a UML. Verso 2002.
CEFET-PR