Relacionamentos
2o semestre 2012
Relacionamentos entre Classes
Tipos:
- Associao usa
Entre objetos
- Agregao parte de
de diferentes
classes
- Composio - parte essencial de
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
Professor Aluno
d aula para
Multiplicidade
Multiplicidade o nmero de instncias de uma classe
relacionada com uma instncia de outra classe
Muitos *
Exatamente um 1
Um ou mais 1..
*
Zero ou um 0..1
Exemplo:
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:
Exemplos:
Um carro contm portas
Uma rvore composta de folhas, tronco, razes
Um computador composto de CPU, teclado, mouse,
monitor, ...
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:
1 1 1 1
* *
Agregao *
1
Carro Motor
Composio 1
*
Empresa Departamento
Agregao vs 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
Rede de
Computadores
0..* Um computador existe
Independentemente de uma rede
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
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
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
No diagrama de classes:
A generalizao representada com uma seta do lado
da classe mais geral (classe base)
Base
Derivada
Generalizao
Exemplo:
Generalizao
Classes derivadas
Especializaes
Generalizao
Exemplo:
Generalizao
Exemplo:
Generalizao
Exemplo:
Generalizao
Exemplo:
Generalizao
primata marsupial
primata marsupial
primata marsupial
1 3..10
0..*
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
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