Você está na página 1de 17

Modelagem de Dados com

UML
Modelagem de Dados com
! Aspectos tratados pelos Diagramas de
UML Classe: Dados e Funções
Eventos

Diagrama de Classes
Funções
Dados

Sistema

Modelagem de Dados com Modelagem de Dados com


UML UML
! Diagrama de Classes ! Diagrama de Classe
! Representação dos dados manipulados e ! Notação
armazenados pelos programas de acordo com os
conceitos de Orientação a Objetos Nome da classe

! Notação fortemente baseada no Diagramas Atributo


Entidade-Relacionamento de Peter Chen atributo: tipo de dado
atributo: tipo de dado = valor inicial
! Deve-se observar que o Diagrama de Classes
privilegia a descrição segundo o paradigma OO Operação
Opcionais Operação(lista de argumentos):
(fornecidos somente após tipo do resultado
um melhor entendimento
do sistema)
Modelagem de Dados com Modelagem de Dados com
UML UML
! Diagrama de Classe ! Diagrama de Classes
! Atributos ! Associações
Multiplicidade da associação
Pessoa
Nome: Str
Endereço: { Livro escrito por
Pessoa
Logradouro: Str, 0..* 1..*
Bairro: Str,
Cidade: Str. }
Telefones: Array of Int Obs: Atributos compostos e
Multivalorados são
permitidos pelo modelo de
dados OO Rótulo da associação

Modelagem de Dados com Modelagem de Dados com


UML UML
Obs: recomenda-se
! Diagrama de Classes ! Diagrama de Classes sempre incluir
o nome da associação ou
! Associações ! Atributos e Métodos um papel.
O papel é útil p/ o
Multiplicidade da associação código-fonte gerado
por ferramentas CASE
Conta Bancária
Pessoa Pessoa
Livro número
Nome: Str Nome: Str
escrito por saldo
Endereço: { * 1 Endereço: {
Título: Str 0..* 1..* Logradouro: Str, dataAbertura
Logradouro: Str,
ISBN: Int Bairro: Str, titular Bairro: Str,
criar()
Editora: Str Cidade: Str. } Cidade: Str. }
bloquear()
Telefones: Array of Int Telefones: Array of Int
desbloquear()
creditar()
debitar()
Rótulo da associação Papel da classe na associação
Modelagem de Dados com Modelagem de Dados com
UML UML
! Diagrama de Classes ! Diagrama de Classes
! Associações entre objetos (Exemplos) ! Associações entre objetos
! Navegabilidade
Associação Unária Funcionário 1 Departamento
0..* trabalha Associação Binária
João *
Funcionário
Funcionário trabalha em Departamento
supervisiona 0..1
Supervisiona
João Financeiro

Funcionário Funcionário Departamento


É supervisionado por

Modelagem de Dados com Modelagem de Dados com


UML UML
! Diagrama de Classes ! Diagrama de Classes
! Associações entre objetos ! Associações entre objetos
! Navegabilidade: descreve como as associações
! Navegabilidade devem ser navegadas.
Funcionário Departamento ! Unidirecional, só é possível navegar em uma direção.
0..* trabalha
Por exemplo, a partir de um Funcionário pode-se
determinar o Departamento para o qual ele trabalha,
mas o inverso não é possível.
João Financeiro ! Bidirecional, navega-se em ambas as direções. A
partir Funcionário determina-se o Departamento e
vice-versa.
Funcionário Departamento
Modelagem de Dados com Modelagem de Dados com
UML UML
! Diagrama de Classes ! Diagrama de Classes
! Multiplicidade ! Decisões de cardinalidade expõem muitas
Multiplicidade Significado suposições, antes ocultas sobre o
0..1 Zero ou um problema que está sendo modelado.
1 Somente 1 (opcional) ! Exemplos: qual o correto?
0..* Maior ou igual a zero ministra
* Maior ou igual a zero Professor Curso
1..* Maior ou igual a 1
1..15 (m..n) De 1 a 15 (m a n), inclusive
Um professor pode estar indisponível?
Um curso pode ter 2 professores?

Modelagem de Dados com Modelagem de Dados com


UML UML
! Diagrama de Classes ! Diagrama de Classes
! Exemplos: qual o correto? ! Exemplos
Funcionário Departamento
1 trabalha 0..1 trabalha
* 1
Funcionário Departamento
Funcionário Departamento
0..* trabalha
gerente 0..1

Funcionário Departamento
0..* trabalha 1..*

(adaptado de BEZ02)
Modelagem de Dados com Modelagem de Dados com
UML UML
! Exemplos ! Diagrama de Classe
! Classes associativas
financia realizada por
! Informação que surge a partir da associação
Financeira 0..1 * Venda * Vendedor de duas outras classes
código data número
casamento
nome hora nenha Data
nívelAutorização Regime
esposa 0..1
Pessoa
Nome
Endereço: {
Logradouro; 0..1
Bairro; marido
Cidade. }
Sexo

Modelagem de Dados com Modelagem de Dados com


UML UML
! Diagrama de Classe ! Diagrama de Classe
! Classes associativas ! Classes associativas
! Conceito não é uma característica de Aluno e ! Usar quando existem atributos que não pertencem
nem uma característica de Disciplina, e sim às classes comuns ou quando estas classes
uma propriedade do relacionamento existente podem participar de associações com outras
entre ambos. classes
financia realizada por
* matriculado * Financeira Venda Vendedor
Aluno Disciplina 0..1 * *
código data número
nome hora nenha
nívelAutorização
Financiamento
conceito registroAprovação
semestre dataAprovação
Modelagem de Dados com Modelagem de Dados com
UML UML
! Diagrama de Classe ! Diagrama de Classe
! Classes associativas ! Classes associativas
! Observação importante: o conceito de “Classe ! Classe associativa substituída por normal
Associativa” não é permitido em todas as Funcionário Departamento
* possui comissão 0..1
linguagens de programação e sistemas de
banco de dados OO Função Comissionada
gratificação
! Assim, em muitos casos as classes dataInício
associativas encontradas em Análise são Exercício: definir a multiplicacidade para manter o mesmo significado
substituídas por classes regulares em Projeto do modelo acima
Função Comissionada
Funcionário Departamento
? ? ? ?
Gratificação
dataInício

Modelagem de Dados com Modelagem de Dados com


UML UML
! Diagrama de Classe ! Diagrama de Classe
! Classes associativas - Exercício ! Agregação
1. Explique o modelo abaixo. ! Associa de todo/parte
2. Substitua as classes associativas por classes ! Ação realizada sobre todo atinge as partes
comuns. ! Tipo especial de associação
0..* 0..*
chefe Trabalha para Documento composto-por Parágrafo composto-por Sentença
Funcionário Empresa
gerencia
trabalhador
salário
título do cargo
grau de desempenho 0..* 0..*
Documento Parágrafo Sentença
Modelagem de Dados com Modelagem de Dados com
UML UML
! Agregação vs Composição
! Diagrama de Classe
! Composição é um tipo especial de agregação (por
! Agregação valor)
! Exemplo ! Semanticamente equivalente a um atributo
composição

Associação 0..* 0..* Pessoa Pessoa Endereço


! afiliada
Equipe Jogador
Esportiva nome nome logradouro
endereço: { sexo bairro
logradouro; cidade
bairro;
cidade. } CPF
cpf
sexo número
validaCPF: bool

Modelagem de Dados com Modelagem de Dados com


UML UML
! Composição ! Composição
! A remoção do todo implica na remoção ! Exemplo (adaptado de [HEU00])

das partes
! O acesso às partes é restrito ao todo Objeto
externo Produto ItemVenda Venda
Pessoa Endereço * *
código
nome logradouro pessoa descrição
quantidade data
sexo bairro hora
cidade
endereço cpf
CPF Uso inadequado de composição:
número Partes de uma composição não podem ser referenciadas
validaCPF: bool por objetos externos
Modelagem de Dados com Modelagem de Dados com
UML UML
! Composição ! Generalização/Especialização
! Exemplo

Produto * ItemVenda * Venda


código data
quantidade
descrição hora

Uso adequado de composição

Modelagem de Dados com Modelagem de Dados com


UML UML
! Generalização/Especialização ! Generalização/Especialização
! Herança de propriedades ! Polimorfismo: não há necessidade de se criar
! Associação do tipo “é um” uma associação entre Venda e subclasses de
Cliente
Super-classe Cliente
Cliente
nome
* realiza *
nome Compra

PessoaFísica PessoaJurídica
Sub-classes PessoaFísica PessoaJurídica
CPF CGC
RG
(herdeiras) CPF CGC
RazãoSocial
Sexo RG RazãoSocial
DataNascimento Sexo
DataNascimento
Modelagem de Dados com Modelagem de Dados com
UML UML
! Generalização/Especialização ! Generalização/Especialização
Classes Abstratas
! Se atributos de uma classe que foram (não é usada para
Empregado {abstrata} gerar objetos)
identificados só podem ser aplicados em recebido durante o ano
tipos específicos da classe, esta é uma calcular pagamento
boa indicação de que a herança deve ser
utilizada [Coad, 1992].
! Exemplo: classe Imóvel, atributo número Empregado Horista Empregado Assalariado Empregado Autônomo
taxa horária
de quartos, num. de suítes, etc. taxa por hora extra
taxa semanal taxa mensal
calcular pagamento calcular pagamento calcular pagamento

Modelagem de Dados com Modelagem de Dados com


UML UML
! Generalização/Especialização ! Generalização/Especialização
! Deve-se analisar as especializações para ! Desta forma, não deve-se criar as
verificar quais delas estão no domínio do
subclasses. Pode-se substituir a
problema. As que não estão presentes não
devem ser representadas. generalização / especialzação por uma
atributo na classe Empregado que
! Por exemplo, a modelagem de Homen e
Mulher não precisa ser feita, o pagamento descreve o sexo do empregado e associar
do salário de um funcionário não é uma restrição: {Sexo=M ou Sexo=F}.
influenciado pelo sexo do mesmo.
Modelagem de Dados com
UML Erros comuns
! Generalização/Especialização ! Usar classes ou associações para
! Herança Múltipla Veículo
representar consultas ou operações do
sistema que não devem ser registradas
Conceito pouco usado na prática:
•Não é suportado por todas as ! Exemplo 1
linguagens de programação
•Adiciona maior complexidade ao Veículo Veículo
modelo terrestre aquático consulta
Usuário Acervo

Veículo
anfíbio

Erros Comuns Erros Comuns


! Usar classes ou associações para ! Identificar métodos nas classes sem ter
representar consultas ou operações do feito a modelagem temporal
sistema que não devem ser registradas;
! As associações devem refletir características
permanentes entre classes, e não situações
temporárias.
! Exemplo 2

faz * O que é sintonizar?


Usuário Consulta
-Quem usa?
-Quais os parâmetros?
Erros Comuns Erros Comuns
! Inserir atributos quando o ideal é criar ! Usar herança quando a quantidade de
uma classe tipos é grande ou dinâmica
Canal
*
EstiloMusical
Refere-se a EstiloMusical

Nome: string
EstiloMusical
Pagode Rock Axé

Erros Comuns Dicas


! Inserir chaves-estrangeiras no ! Não comece a projetar diretamente o
diagrama de classes diagrama de classes. Primeiro entenda o
problema;
! As associações são suficientes
! Tente manter sempre simples o modelo de
Chave primária? Usar OID!
objetos. Evite complicações
desnecessárias;
Funcionário Depto
trabalha ! Escolha os nomes cuidadosamente. Uma
codFunc
codDepto
* codDepto
...
heurística simples é que se você não
consegue escolher um bom nome, isto
indica uma classe mal projetada;
Chave estrangeira? Redundante!
Dicas Dicas
! Não é necessário utilizar todos os conceitos ! Tente evitar associações ternárias. A maioria
da UML. delas pode ser decomposta em associações
binárias usando-se atributos de ligação.
! Evite árvores de herança muito profundas,
pois elas aumentam a probabilidade de
cometer erros e tornam as classes profundas Projeto Linguagem
mais complexas.
Vôo
Pessoa data
número

Passageiro Poltrona
nome número

Modelagem de Dados com Modelagem de Dados com


UML UML
! Exercício ! Exercícios:
! Modelar a biblioteca do CCEN que permite ! Preparar um diagrama de classes mostrando
alunos, professores e funcionários da UFPA relacionamentos entre as seguintes classes de
emprestarem e fazerem reserva de livros. objetos. Incluir associações, agregações e
! Na primeira iteração, considere somente as generalizações. Acrescentar também atributos.
classes; ! Hotel, hóspede, funcionário, lavanderia, sauna, boate,
restaurante, bar, piscina, reserva.
! Na segunda iteração, considere também os
! Escola, playground, diretor, conselho escolar, sala de
atributos das classes; aula, livro, aluno, professor, sala de repouso,
computador, carteira, cadeira, porta, biblioteca.
Modelagem de Dados com
UML
! Exercício
! Usar classes e associações para definir o glossário do sistema

“Jogo de Futebol” descrito de seguida: “O jogo de futebol é


realizado por duas equipes de jogadores. Cada equipe é
composta por 11 jogadores, com diferentes funções: o goleiro,
zagueiros, médios, atacantes, e pontas de lança. O ponta de
lança é um atacante especial por ter especiais características
de goleador... O jogo é realizado num campo com medidas
regulamentares (em comprimento e largura), tem duas balizas,
cada qual em extremos opostos do campo. Ganha o jogo a
equipe que marcar mais gols (i.e., colocar a bola) na baliza do
adversário. No jogo apenas existe uma única bola, que
apresenta características (peso, diâmetro, …) regulamentares...
O jogo de futebol é mediado por uma equipe de 3 árbitros, em
que um é o árbitro principal, e os outros dois são árbitros
auxiliares…”.

Modelagem de Dados com Modelagem de Dados com


UML UML
! Generalização/Especialização ! Padrão Evento Lembrado [Coad 1992]:
! Todo evento que precisa ser registrado e
lembrado pelo sistema pode ser considerado um
ContaBancária potencial candidato a classe.
* *
número
* HistóricoTransações
! Idéia: Existe algum instante ou evento histórico
Cliente dataAbertura
saldo que precisa ser observado e armazenado pelo
debitar(quantia)
sistema?
creditar(quantia) ! Em um sistema de registros de carros tem que lembrar
quando alguém comprou o carro;
! Lembrar quando alguém reservou/alugou uma fita;
ContaCorrente ContaPoupança ! Matrícula de um aluno; e
dataAniversário
! Pagamento de documentos, etc.
limiteSaque
rendimento
Modelagem de Dados com Modelagem de Dados com
UML UML
! Restrições ! Restrição
! Restrição {ou} implica na seleção exclusiva ! Observação: possível mapeamento para
entre duas ou mais associações existentes uso de restrição {ou} com multiplicidade
em uma classe máxima 1.
cliente cliente
Indivíduo Cliente
0..1 0..1
0..* 0..*
Conta Conta
corrente {ou} corrente
0..*
cliente
Organização Indivíduo Organização
0..1

Modelagem de Dados com Modelagem de Dados com


UML UML
! Restrições ! Restrições
0..1
chefe

Indivíduo 1 * *
1..* Empresa Pessoa
0..* empregador empregado
Companhia 1 0..* Contrato de
de Seguros Seguro {ou}
{ Pessoa.empregador = Pessoa.chefe.empregador }
0..*

Empresa
1..* 0..* Membro-de 0..*
Pessoa {subconjunto}
0..* Comitê
Presidente-de
Modelagem de Dados com Modelagem de Dados com
UML UML
! Restrições ! Restrições
Janela
comprimento
largura Data
1..* casamento Regime
{0,8<=comprimento/largura<=1,5} Cargo 0..1
Empregado 1 {pessoa.sexo=Feminino} esposa
salário chefe prioridade
Pessoa

{Empregado.salário < Empregado.chefe.salário} {prioridade nunca cresce} Nome


Endereço: {
Logradouro; 0..1
Bairro; marido
Cidade. } {pessoa.sexo=Masculino}
* Visível em Sexo
Janela Tela
{ordenado}

Modelagem de Dados com Modelagem de Dados com


UML UML
! Restrições ! Restrições
! Exemplos
mora Conta Bancária
* titular Pessoa
* número
{subconjunto} Nome: Str
Pessoa {subconjunto} Condomínio saldo
1..* Endereço: {
dataAbertura *
Logradouro: Str,
correntista Bairro: Str,
síndico criar()
Cidade: Str. }
bloquear()
Telefones: Array of Int
desbloquear()
creditar()
debitar()
Modelagem de Dados com
UML
! Atributo derivado

Atributo derivado

{idade = data_atual – data_nascimento}

Atributo derivado

{lucro = valor_venda – valor_compra}

Modelagem de Dados com


UML Discussão
! Complementar o modelo de controle ! Monitor, Professor, Aluno: herança
acadêmico.
Pessoa
! Acrescentar o monitor (aluno): o aluno
pode exercer o papel de monitor durante
um período Professor Aluno
! Permitir que uma pessoa exerça
simultaneamente o papel de Professor e
Aluno da Universidade Monitor
Discussão Discussão
! Monitor, Professor, Aluno: herança ! Monitor, Professor, Aluno: herança
! Problemas ! Solução
! Acomodação inábil de objetos que mudam de ! Combinar herança e associação
classes
Pessoa exerce * PapelPessoa {abstrata}
! Transmutação Pessoa
ou Metamorfose nome
cpf
dataNascimento
Professor Aluno
0. criação Professor Aluno Monitor
matrícula matrícula

Monitor 4. Início: 01/01/próximo ano


2. Início: 01/11
1. Início: 01/02 Fim: 31/12
3. Fim: 31/12

Transmutação Perguntas?
! Exercício
! Em uma IFES, o plano de carreira para
professores é dividido em quatro etapas:
! Auxiliar, Assistente, Adjunto e Titular
! Construa um modelo de classes que
preserve o histórico de um professor
durante a sua vida profissional
! Em particular, é importante manter o registro
do início e término do desempenho em uma
das etapas

Você também pode gostar