Anda di halaman 1dari 54

Programao Orientada a Objetos I

Relacionamentos

Profa Ana Carolina Lorena

2o semestre 2012
Relacionamentos entre Classes

Como os objetos das diferentes classes se relacionam?

Como diferentes classes se relacionam?

Vamos identificar as principais formas de conexo entre


classes
E representar esses relacionamentos no diagrama de
classes
Relaes fornecem um caminho para a comunicao
entre os objetos
Relacionamentos

Tipos:

- Associao usa

Entre objetos
- Agregao parte de
de diferentes
classes
- Composio - parte essencial de

- Generalizao - um Entre classes


Relacionamentos
Relacionamentos so caracterizados por:


nome: descrio dada ao relacionamento (faz, tem, possui,...)

usualmente um verbo

navegabilidade: indicada por uma seta no fim do relacionamento
Uni ou bidirecional

multiplicidade: 0..1, 0..*, 1, 1..*, 2, 3..7


tipos de relacionamentos: associao simples, agregao,
composio, generalizao
Nomeando Associaes
Para facilitar seu entendimento, uma associao precisa ser
nomeada

O nome representado como um rtulo colocado ao longo da


linha de associao

Um nome de associao usualmente um verbo ou uma frase


verbal

Professor Aluno
d aula para
Multiplicidade
Multiplicidade o nmero de instncias de uma classe
relacionada com uma instncia de outra classe

Para cada associao, h duas decises a fazer: uma para cada


lado da associao

Por exemplo, na conexo entre Professor e Aluno:


- Para cada instncia de Professor, podem ocorrer muitos (zero ou
mais) Alunos
- Para cada instncia de Aluno, pode ocorrer exatamente um
Professor (pensando em um curso isolado)
Tipos de Multiplicidade

Muitos *

Exatamente um 1

Zero ou mais 0..


*

Um ou mais 1..
*

Zero ou um 0..1

Faixa especificada 2..4


Tipos de Multiplicidade
Exemplos:
- Um cliente pode ter apenas um nome
- Uma turma deve ter no mnimo 5 e no mximo 100 alunos
- Uma mesa de restaurante pode ter vrios ou nenhum pedido
- Uma cotao pode ter no mnimo 1 item
Associao simples

a forma mais fraca de relacionamento entre classes


As classes que participam desse relacionamento so
independentes
Pode envolver duas ou mais classes

- Representa relacionamentos usa um


- Ex.: uma pessoa usa umcarro
- Na implementao: um objeto A usa outro objeto B chamando
um mtodo pblico de B
Associao simples

No diagrama de classes, as associaes:


So representadas como linhas conectando as classes
participantes do relacionamento
Podem ter um nome identificando a associao
Podem ter uma seta junto ao nome indicando que a
associao somente pode ser utilizada em uma nica
direo
Associao simples

Exemplo:

0..* Ministra 1..*


Professor Disciplina
1..*

Cursa
0..*

Aluno
Associao simples

Exemplo:
Associao simples

Exemplo:
Proprietrio
- nome:String
1
- endereco:String
- cnh:int

possui

1..*
Veculo
- placa: String
- cor:int
- chassis:String
Associaes - exemplo
Associao simples

Exemplo:

Imagine um sistema de avaliao de artigos


acadmicos

Temos uma relao autor | artigo


1
Note que a classe autor no compartilha atributos
da classe artigo e vice-versa
1*
Nesse caso, no existe a relao todo-parte
Agregao/Composio

Essas duas formas de associao representam


relacionamentos do tipo tem um
Relacionamento todo/parte
Uma classe formada por ou contm objetos de
outras classes

Exemplos:

Um carro contm portas

Uma rvore composta de folhas, tronco, razes

Um computador composto de CPU, teclado, mouse,
monitor, ...
Agregao vs Composio

A agregao uma forma mais fraca de composio


Composio: relacionamento todo-parte em que as
partes no podem existir independentes do todo
Se o todo destrudo as partes so destrudas
tambm
Uma parte pode ser de um todo por vez
Agregao: relacionamento todo-parte que no satisfaz
um ou mais desses critrios
A destruio do objeto todo no implica a destruio do
objeto parte
Um objeto pode ser parte componente de vrios outros
objetos
Agregao vs Composio

No diagrama de classes:
Composio: associao representada com um losango
slido do lado todo

O lado todo deve sempre ter multiplicidade 1
Todo Parte

Agregao: associao representada com um losango


sem preenchimento do lado todo
Todo Parte
Agregao vs Composio
Composio:
1 1
1 1 *
*

Um pedido composto por um ou vrios itens, mas um produto NO


item de um pedido se no existe pedido

Agregao:

1 1 1 1
* *

Time formado por atletas, ou seja, atletas so parte de um time,


mas os atletas existem independentemente do time existir
Agregao vs Composio
Outros exemplos:
Agregao vs Composio
Outros exemplos:

Agregao *
1
Carro Motor

Composio 1
*
Empresa Departamento
Agregao vs Composio

Exemplo: objeto Pessoa


- Este objeto possui um atributo chamado corao, que por
sua vez tem os atributos: artrias, vasos, etc.
- Como uma pessoa no vive sem um corao, ento temos para a
relao pessoa-corao uma composio.
- Pessoa tambm tem um atributo chamado trabalho, que por sua
vez os atributos: localizao, cnpj, etc..
- Voc no vive sem o seu trabalho, mas ele no deixa de existir se
voc pedir demisso.
- Ento, a relao pessoa-trabalho uma agregao
Agregao/Composio
Classe todo
- a classe resultante da agregao ou composio

Classe parte
- a classe cujas instncias formam a agregao/composio

Exemplo:
- Apartamento e Garagem: um apartamento pode ter garagem
- Classe Apartamento: todo ou agregada
- Classe Garagem: parte
Exemplo: agregao

Apartamento Garagem

Classe todo Classe parte


Agregao: mais exemplos

Rede de
Computadores
0..* Um computador existe
Independentemente de uma rede

0..* Um computador pode estar ligado a mais


Computador de uma rede ao mesmo tempo
Agregao: mais exemplos

Emprstimo
1 Um emprstimo contm um livro, mas o livro
no deixa de existir no sistema da biblioteca
quando o emprstimo concludo
1
Livro
Agregao: mais exemplos

Imagine um sistema de gerenciamento de obras


e suponha as classes Casa e Tijolo
1 Caso voc deixe de construir uma casa, mesmo
assim os tijolos podero ser utilizados na
0* construo de outro tipo de obra

Perceba que uma casa feita de tijolos (relao


todo-parte).
Composio: mais exemplos

Pessoa
O endereo de contato s faz sentido
1 associado com uma pessoa.
1
Se a pessoa eliminada do sistema, no
Endereo faz sentido manter o endereo de contato.
de contato
Composio: mais exemplos
composio

rvore
1 1
1

0..* 1..* 1
Folhas Razes Tronco

Componentes
Composio: mais exemplos
Imagine um sistema de Recursos
Humanos e suponha as classes
Funcionrio e Empresa
1
No faz sentido ter funcionrios, se
1* no existir uma empresa onde eles
possam trabalhar

Se a empresa deixar de existir,


automaticamente ela deixar de ter
funcionrios

Perceba que uma empresa composta


por funcionrios (relao todo-parte).
Composio: mais exemplos

Dedo Mo
5..5
Composio: mais exemplos

class Pessoa{
String nome;
char sexo;
Data dataNasc;
-----
}
class Data{
private int dia, mes, ano;
public void alteraData(int d, int m, int a){
dia = d;
mes = m;
ano = a;
}}
Generalizao
Representa relacionamentos entre classes do tipo um
Tambm chamado de herana
Ex: Um cachorro um mamfero

Abstrao de Generalizao/ Especializao


A partir de duas ou mais classes, abstrai-se uma classe
mais genrica
Ou de uma classe geral, deriva-se outra mais especfica
Sub-classes satisfazem todas as propriedades das
classes de que elas constituem especializaes
Deve existir pelo menos uma propriedade que distingue
duas classes especializadas
Generalizao

No diagrama de classes:
A generalizao representada com uma seta do lado
da classe mais geral (classe base)

Base

Derivada
Generalizao

Exemplo:

veculo Classe base

Generalizao

carro caminho bicicleta


Especializao
(herana)

Classes derivadas
Especializaes
Generalizao

Exemplo:
Generalizao
Exemplo:
Generalizao

Exemplo:
Generalizao

Exemplo:
Generalizao

Permite organizar as classes de objetos


hierarquicamente

Forma de reutilizao de software


Novas classes so criadas a partir de classes
existentes, absorvendo seus atributos e
comportamentos e acrescendo de recursos que
as novas classes necessitem
Generalizao

Exemplo de hierarquia de classes


Animal
peso
crescer
comer

Peixe Mamfero Ave


comer comer comer
nadar andar voar
mamar

primata marsupial

homem gorila canguru


Generalizao

Exemplo de hierarquia de classes


Todos os animais crescem
do mesmo jeito
Animal
peso o mtodo s precisa
crescer
comer
aparecer na classe mais
geral

Peixe Mamfero Ave


comer comer comer
nadar andar voar
mamar

primata marsupial

homem gorila canguru


Generalizao

Exemplo de hierarquia de classes
Todos os animais comem, mas cada
tipo de animal come de um jeito
diferente Animal
peso
crescer
o mtodo comer uma operao comer
abstrata na classe base, e aparece
concretamente nas derivadas

Peixe Mamfero Ave


comer comer comer
nadar andar voar
mamar

primata marsupial

homem gorila canguru


Relacionamentos: qual usar?
Como saber qual relacionamento deve ser utilizado?

Existem atributos ou mtodos sendo aproveitados por


outras classes? A subclasse do tipo da superclasse?
Sim: Isso herana
No: Existe todo-parte?
Sim: A parte vive sem o todo?
Sim: Isso agregao
No: Isso uma composio
No: Isso associao
Associao vs
Agregao/Composio

Se dois objetos so altamente acoplados por um relacionamento


todo-parte

O relacionamento uma agregao ou composio

Se dois objetos so usualmente considerados como


independentes, mesmo eles estejam frequentemente ligados

O relacionamento uma associao

Curso Disciplina Aluno

1 3..10
0..*

Curso e disciplina so altamente Objetos independentes


acoplados (1 curso formado
por 1 ou mais disciplinas)
Relacionamentos: qual usar?
Exemplo:
Classes de Associao
As classes de associao so classes que fornecem um
meio para adicionar atributos e operaes a associaes

Normalmente geradas entre ocorrncias que possuem
multiplicidade muitos em todas as suas extremidades

Exemplo: Considere o relacionamento a seguir:

Turma Aluno
0..* 5..100


Queremos agora marcar a data em que o aluno foi adicionado
turma.
Classes de Associao
Obviamente, esta data no uma propriedade nem do aluno e
nem da turma

Sendo assim, criamos uma classe associativa que pode se


chamar Matrcula

Turma Aluno
0..* 5..100

Matrcula
- data: Date
Exerccios
1 - Faa a modelagem em UML de um sistema bancrio, relacionado
administrao de contas bancrias (para cada classe defina, pelo
menos, 4 atributos e 4 mtodos). Em um banco h gerentes
responsveis por um grupo de clientes.
Um gerente poder aceitar pedidos de abertura de conta, de
emprstimo, de carto de crdito, etc. Mas poder decidir por oferecer
os servios, ou no.
Cada cliente poder pedir servios para um gerente: abertura de
contas, emprstimo, carto de crdito, etc. Ele tambm poder ter
acesso sua conta bancria.
Cada conta bancria poder oferecer servios tais como: depositar,
sacar, transferir dinheiro entre contas, pagar carto de crdito, etc.
Aps a modelagem, para cada classe coloque quais servios pode
solicitar das outras classes.
Exerccios
1 - Faa a modelagem em UML de um sistema bancrio, relacionado
administrao de contas bancrias (para cada classe defina, pelo
menos, 4 atributos e 4 mtodos). Em um banco h gerentes
responsveis por um grupo de clientes.
Exerccios
2- Faa a modelagem em UML de um sistema de controle de cursos de
informtica equivalente ao mdulo de matrcula de acordo com os
seguintes fatos:
- o curso pode ter mais de uma turma, no entanto, uma turma se
relaciona exclusivamente com um nico curso.
- uma turma pode ter diversos alunos matriculados, no entanto
uma matrcula refere-se exclusivamente a uma determinada
turma. Cada turma tem um nmero mnimo de matriculas para
iniciar o curso.
- um aluno pode realizar muitas matrculas, mas cada matrcula
refere-se exclusivamente a uma turma especfica e a um nico
aluno.
Exerccios
3 - Faa a modelagem em UML de um sistema de reserva para uma
empresa area (para cada classe defina, pelo menos, 4 atributos e 4
mtodos).
Cada vo dever estar cadastrado no sistema, pois as reservas sero
relacionadas a eles. Cada vo pode informar o nmero de assentos
livres, sua tripulao, reservar acento, etc
Operadores so funcionrios da empresa responsveis pela
operacionalizao das reservas. Os operadores fazem as reservas,
cancelam reservas, informam sobre possveis atrasos, etc
Os clientes podem pedir reservas nos vos, podem cancelar reservas,
podem pagar as reservas de forma adiantada, etc
Aps a modelagem, para cada classe coloque quais servios pode
solicitar das outras classes.
Exerccios
3 - Faa a modelagem em UML de um sistema de reserva para uma
empresa area (para cada classe defina, pelo menos, 4 atributos e 4
mtodos).
Referncias e agradecimentos

Os slides dessa apresentao foram cedidos por:


- Profs Marcelo Zanchetta, Graa Marietto e Francisco
Zampirolli, UFABC
- Profa Katti Faceli, UFSCar/Sorocaba

Anda mungkin juga menyukai