Вы находитесь на странице: 1из 17

Modelagem de Dados com UML

Diagrama de Classes

Modelagem de Dados com UML


!

Aspectos tratados pelos Diagramas de Classe: Dados e Funes


Eventos

Funes

Dados

Sistema

Modelagem de Dados com UML


!

Modelagem de Dados com UML


!

Diagrama de Classes
!

Diagrama de Classe
!

Representao dos dados manipulados e armazenados pelos programas de acordo com os conceitos de Orientao a Objetos Notao fortemente baseada no Diagramas Entidade-Relacionamento de Peter Chen Deve-se observar que o Diagrama de Classes privilegia a descrio segundo o paradigma OO

Notao
Nome da classe Atributo atributo: tipo de dado atributo: tipo de dado = valor inicial Operao Operao(lista de argumentos): tipo do resultado

Opcionais (fornecidos somente aps um melhor entendimento do sistema)

Modelagem de Dados com UML


!

Modelagem de Dados com UML


!

Diagrama de Classe
!

Diagrama de Classes
!

Atributos
Pessoa Nome: Str Endereo: {
Logradouro: Str, Bairro: Str, Cidade: Str. }

Associaes
Multiplicidade da associao

Livro

escrito por 0..* 1..*

Pessoa

Telefones: Array of Int

Obs: Atributos compostos e Multivalorados so permitidos pelo modelo de dados OO

Rtulo da associao

Modelagem de Dados com UML


!

Modelagem de Dados com UML


!

Diagrama de Classes
!

Diagrama de Classes
!

Associaes
Multiplicidade da associao Pessoa Livro escrito por Ttulo: Str ISBN: Int Editora: Str 0..* Nome: Str Endereo: {

Atributos e Mtodos
Conta Bancria

Obs: recomenda-se sempre incluir o nome da associao ou um papel. O papel til p/ o cdigo-fonte gerado por ferramentas CASE Pessoa Nome: Str Endereo: {
Logradouro: Str, Bairro: Str, Cidade: Str. }

1..* Logradouro: Str,


Bairro: Str, Cidade: Str. }

nmero saldo dataAbertura criar() bloquear() desbloquear() creditar() debitar()

1 titular

Telefones: Array of Int

Telefones: Array of Int

Rtulo da associao

Papel da classe na associao

Modelagem de Dados com UML


!

Modelagem de Dados com UML


!

Diagrama de Classes
!

Diagrama de Classes
!

Associaes entre objetos (Exemplos)


Associao Unria Funcionrio *

Associaes entre objetos


!

Navegabilidade
0..* trabalha 1 Departamento
Associao Binria

Funcionrio

Joo

Funcionrio trabalha em Departamento supervisiona 0..1 Supervisiona Joo Financeiro

Funcionrio

supervisionado por

Funcionrio

Departamento

Modelagem de Dados com UML


!

Modelagem de Dados com UML


!

Diagrama de Classes
!

Diagrama de Classes
!

Associaes entre objetos


!

Associaes entre objetos


!

Navegabilidade
Funcionrio 0..* trabalha Departamento

Navegabilidade: descreve como as associaes

Joo

Financeiro

devem ser navegadas. Unidirecional, s possvel navegar em uma direo. Por exemplo, a partir de um Funcionrio pode-se determinar o Departamento para o qual ele trabalha, mas o inverso no possvel. Bidirecional, navega-se em ambas as direes. A partir Funcionrio determina-se o Departamento e vice-versa.

Funcionrio

Departamento

Modelagem de Dados com UML


!

Modelagem de Dados com UML


!

Diagrama de Classes
!

Diagrama de Classes
!

Multiplicidade
Multiplicidade 0..1 1 0..* * 1..* 1..15 (m..n) Significado Zero ou um Somente 1 (opcional) Maior ou igual a zero Maior ou igual a zero Maior ou igual a 1 De 1 a 15 (m a n), inclusive

Decises de cardinalidade expem muitas suposies, antes ocultas sobre o problema que est sendo modelado. Exemplos: qual o correto?
Professor
ministra

Curso

Um professor pode estar indisponvel? Um curso pode ter 2 professores?

Modelagem de Dados com UML


!

Modelagem de Dados com UML


!

Diagrama de Classes
!

Diagrama de Classes
!

Exemplos: qual o correto?


Funcionrio 1 trabalha
0..1

Exemplos
trabalha
* 1

Departamento Funcionrio

Departamento 0..1

Funcionrio

0..* trabalha

Departamento gerente
1..*

Funcionrio

0..* trabalha

Departamento

(adaptado de BEZ02)

Modelagem de Dados com UML


!

Modelagem de Dados com UML


!

Exemplos
Financeira
cdigo nome
financia 0..1 *

Diagrama de Classe
!

Classes associativas
!

Venda
data hora

realizada por *

Vendedor
nmero nenha nvelAutorizao

Informao que surge a partir da associao de duas outras classes


casamento esposa 0..1 Pessoa Nome Endereo: {
Logradouro; Bairro; Cidade. }

Data Regime

0..1 marido

Sexo

Modelagem de Dados com UML


!

Modelagem de Dados com UML


!

Diagrama de Classe
!

Diagrama de Classe
!
!

Classes associativas
!

Classes associativas
Usar quando existem atributos que no pertencem s classes comuns ou quando estas classes podem participar de associaes com outras classes

Conceito no uma caracterstica de Aluno e nem uma caracterstica de Disciplina, e sim uma propriedade do relacionamento existente entre ambos.
Aluno *
matriculado

Disciplina

Financeira
cdigo nome

financia 0..1 *

Venda
data hora

realizada por *

Vendedor
nmero nenha nvelAutorizao

conceito semestre

Financiamento registroAprovao dataAprovao

Modelagem de Dados com UML


!

Modelagem de Dados com UML


!

Diagrama de Classe
!

Diagrama de Classe
!

Classes associativas
!

Classes associativas
!

Observao importante: o conceito de Classe Associativa no permitido em todas as linguagens de programao e sistemas de banco de dados OO Assim, em muitos casos as classes associativas encontradas em Anlise so substitudas por classes regulares em Projeto

Classe associativa substituda por normal


Funcionrio *
possui comisso 0..1
Funo Comissionada

Departamento

gratificao dataIncio

Exerccio: definir a multiplicacidade para manter o mesmo significado do modelo acima

Funcionrio

Funo Comissionada

Gratificao dataIncio

Departamento

Modelagem de Dados com UML


!
!

Modelagem de Dados com UML


!

Diagrama de Classe
Classes associativas - Exerccio
1. 2.

Diagrama de Classe
!

Agregao
! ! !

Explique o modelo abaixo. Substitua as classes associativas por classes comuns.


Funcionrio
trabalhador Trabalha para

Associa de todo/parte Ao realizada sobre todo atinge as partes Tipo especial de associao
0..*
composto-por

chefe gerencia

Empresa

Documento

Pargrafo

0..*
composto-por

Sentena

salrio ttulo do cargo

grau de desempenho

Documento

0..*

Pargrafo

0..*

Sentena

Modelagem de Dados com UML


!

Modelagem de Dados com UML


!

Diagrama de Classe
!

Agregao vs Composio
!

Agregao
!

Exemplo
0..*
! afiliada

Composio um tipo especial de agregao (por valor) Semanticamente equivalente a um atributo


composio Pessoa Pessoa
nome sexo

Associao Esportiva

Equipe

0..*

Jogador

Endereo
logradouro bairro cidade

nome endereo: { logradouro; bairro; cidade. } cpf sexo

CPF
nmero
validaCPF: bool

Modelagem de Dados com UML


!

Modelagem de Dados com UML


!

Composio
!

Composio
!

A remoo do todo implica na remoo das partes O acesso s partes restrito ao todo Objeto
Endereo
logradouro bairro cidade

Exemplo

(adaptado de [HEU00])

Pessoa
nome sexo

externo

Produto
cdigo descrio

ItemVenda
quantidade

Venda
data hora

pessoa
endereo cpf

CPF
nmero
validaCPF: bool

Uso inadequado de composio: Partes de uma composio no podem ser referenciadas por objetos externos

Modelagem de Dados com UML


!

Modelagem de Dados com UML


!

Composio
!

Generalizao/Especializao

Exemplo
Produto
cdigo descrio
*

ItemVenda
quantidade

Venda
data hora

Uso adequado de composio

Modelagem de Dados com UML


!

Modelagem de Dados com UML


!

Generalizao/Especializao
! !

Generalizao/Especializao
!

Herana de propriedades Associao do tipo um


Cliente
nome

Super-classe

Polimorfismo: no h necessidade de se criar uma associao entre Venda e subclasses de Cliente


Cliente
nome

realiza

Compra

PessoaFsica
CPF RG Sexo DataNascimento

PessoaJurdica
CGC RazoSocial

Sub-classes (herdeiras)

PessoaFsica
CPF RG Sexo DataNascimento

PessoaJurdica
CGC RazoSocial

Modelagem de Dados com UML


!

Modelagem de Dados com UML


!

Generalizao/Especializao
!

Generalizao/Especializao
Empregado {abstrata}
recebido durante o ano calcular pagamento

Se atributos de uma classe que foram identificados s podem ser aplicados em tipos especficos da classe, esta uma boa indicao de que a herana deve ser utilizada [Coad, 1992]. Exemplo: classe Imvel, atributo nmero de quartos, num. de sutes, etc.

Classes Abstratas (no usada para gerar objetos)

Empregado Horista
taxa horria taxa por hora extra calcular pagamento

Empregado Assalariado
taxa semanal calcular pagamento

Empregado Autnomo
taxa mensal calcular pagamento

Modelagem de Dados com UML


!

Modelagem de Dados com UML


!

Generalizao/Especializao
!

Deve-se analisar as especializaes para verificar quais delas esto no domnio do problema. As que no esto presentes no devem ser representadas. Por exemplo, a modelagem de Homen e Mulher no precisa ser feita, o pagamento do salrio de um funcionrio no influenciado pelo sexo do mesmo.

Generalizao/Especializao
!

Desta forma, no deve-se criar as subclasses. Pode-se substituir a generalizao / especialzao por uma atributo na classe Empregado que descreve o sexo do empregado e associar uma restrio: {Sexo=M ou Sexo=F}.

Modelagem de Dados com UML


!

Erros comuns
!

Generalizao/Especializao
!

Herana Mltipla

Veculo

Conceito pouco usado na prtica: No suportado por todas as linguagens de programao Adiciona maior complexidade ao modelo

Usar classes ou associaes para representar consultas ou operaes do sistema que no devem ser registradas
!

Exemplo 1
Usurio consulta Acervo

Veculo terrestre

Veculo aqutico

Veculo anfbio

Erros Comuns
!

Erros Comuns
!

Usar classes ou associaes para representar consultas ou operaes do sistema que no devem ser registradas; As associaes devem refletir caractersticas permanentes entre classes, e no situaes temporrias. ! Exemplo 2
Usurio faz * Consulta

Identificar mtodos nas classes sem ter feito a modelagem temporal

O que sintonizar? -Quem usa? -Quais os parmetros?

Erros Comuns
!

Erros Comuns
!

Inserir atributos quando o ideal criar uma classe


Canal
* Refere-se a

Usar herana quando a quantidade de tipos grande ou dinmica


EstiloMusical EstiloMusical
Nome: string

EstiloMusical Pagode Rock Ax

Erros Comuns
!

Dicas
!

Inserir chaves-estrangeiras no diagrama de classes


!

As associaes so suficientes
Chave primria? Usar OID!

Funcionrio codFunc codDepto

trabalha *

Depto codDepto ...

Chave estrangeira? Redundante!

No comece a projetar diretamente o diagrama de classes. Primeiro entenda o problema; Tente manter sempre simples o modelo de objetos. Evite complicaes desnecessrias; Escolha os nomes cuidadosamente. Uma heurstica simples que se voc no consegue escolher um bom nome, isto indica uma classe mal projetada;

Dicas
!

Dicas
!

No necessrio utilizar todos os conceitos da UML. Evite rvores de herana muito profundas, pois elas aumentam a probabilidade de cometer erros e tornam as classes profundas mais complexas.

Tente evitar associaes ternrias. A maioria delas pode ser decomposta em associaes binrias usando-se atributos de ligao.
Projeto Pessoa Linguagem
Vo
data nmero

Passageiro
nome

Poltrona
nmero

Modelagem de Dados com UML


!

Modelagem de Dados com UML


!

Exerccio
!

Exerccios:
!

Modelar a biblioteca do CCEN que permite alunos, professores e funcionrios da UFPA emprestarem e fazerem reserva de livros. Na primeira iterao, considere somente as classes; Na segunda iterao, considere tambm os atributos das classes;

Preparar um diagrama de classes mostrando relacionamentos entre as seguintes classes de objetos. Incluir associaes, agregaes e generalizaes. Acrescentar tambm atributos.
!

Hotel, hspede, funcionrio, lavanderia, sauna, boate, restaurante, bar, piscina, reserva. Escola, playground, diretor, conselho escolar, sala de aula, livro, aluno, professor, sala de repouso, computador, carteira, cadeira, porta, biblioteca.

Modelagem de Dados com UML


!

Exerccio ! Usar classes e associaes para definir o glossrio 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 funes: o goleiro, zagueiros, mdios, atacantes, e pontas de lana. O ponta de lana um atacante especial por ter especiais caractersticas 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 adversrio. No jogo apenas existe uma nica bola, que apresenta caractersticas (peso, dimetro, ) regulamentares... O jogo de futebol mediado por uma equipe de 3 rbitros, em que um o rbitro principal, e os outros dois so rbitros auxiliares.

Modelagem de Dados com UML


!

Modelagem de Dados com UML


!

Generalizao/Especializao
ContaBancria Cliente * *
nmero dataAbertura saldo debitar(quantia) creditar(quantia)

Padro Evento Lembrado [Coad 1992]:


!

* HistricoTransaes

Todo evento que precisa ser registrado e lembrado pelo sistema pode ser considerado um potencial candidato a classe. Idia: Existe algum instante ou evento histrico que precisa ser observado e armazenado pelo sistema?
!

ContaCorrente
limiteSaque

ContaPoupana
dataAniversrio rendimento

! !

Em um sistema de registros de carros tem que lembrar quando algum comprou o carro; Lembrar quando algum reservou/alugou uma fita; Matrcula de um aluno; e Pagamento de documentos, etc.

Modelagem de Dados com UML


!

Modelagem de Dados com UML


!

Restries
!

Restrio
!

Restrio {ou} implica na seleo exclusiva entre duas ou mais associaes existentes em uma classe
cliente
Conta corrente 0..* {ou} 0..* 0..1 Indivduo

Observao: possvel mapeamento para uso de restrio {ou} com multiplicidade mxima 1.
cliente
Conta corrente 0..* 0..1 Cliente

cliente
Organizao 0..1 Indivduo Organizao

Modelagem de Dados com UML


!

Modelagem de Dados com UML


!

Restries
1..* {ou} 0..* 1..* Empresa Indivduo

Restries
0..1
chefe

Companhia de Seguros

0..* Contrato de Seguro

0..*

Empresa

empregador empregado

Pessoa

{ Pessoa.empregador = Pessoa.chefe.empregador }

0..*

Membro-de {subconjunto} Presidente-de

0..* 0..*

Pessoa

Comit

Modelagem de Dados com UML


!

Modelagem de Dados com UML


!

Restries
Janela comprimento largura 1..* Empregado salrio {0,8<=comprimento/largura<=1,5} 1 chefe Cargo prioridade {prioridade nunca cresce}

Restries
0..1 casamento Data Regime

{pessoa.sexo=Feminino} esposa

Pessoa Nome Endereo: {


Logradouro; Bairro; Cidade. }

{Empregado.salrio < Empregado.chefe.salrio}

Janela

Visvel em

Tela

Sexo

0..1 marido {pessoa.sexo=Masculino}

{ordenado}

Modelagem de Dados com UML


!

Modelagem de Dados com UML


!

Restries
!

Restries
Conta Bancria Pessoa Nome: Str Endereo: {
Logradouro: Str, Bairro: Str, Cidade: Str. }

Exemplos
mora * Pessoa
{subconjunto}

Condomnio

nmero saldo dataAbertura criar() bloquear() desbloquear() creditar() debitar()

*
{subconjunto}

titular 1..*

sndico

correntista

Telefones: Array of Int

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


!

Discusso
!

Complementar o modelo de controle acadmico.


!

Monitor, Professor, Aluno: herana


Pessoa

Acrescentar o monitor (aluno): o aluno pode exercer o papel de monitor durante um perodo Permitir que uma pessoa exera simultaneamente o papel de Professor e Aluno da Universidade

Professor

Aluno

Monitor

Discusso
!

Discusso
!

Monitor, Professor, Aluno: herana


!

Monitor, Professor, Aluno: herana


!

Problemas
Acomodao inbil de objetos que mudam de classes Pessoa ! Transmutao ou Metamorfose
!

Soluo
!

Combinar herana e associao


Pessoa exerce * PapelPessoa {abstrata}

Professor

Aluno

nome cpf dataNascimento

0. criao

Professor
matrcula

Aluno
matrcula

Monitor

Monitor

4. Incio: 01/01/prximo ano

1. Incio: 01/02 3. Fim: 31/12

2. Incio: 01/11 Fim: 31/12

Transmutao
!

Perguntas?

Exerccio
!

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 histrico de um professor durante a sua vida profissional
!

Em particular, importante manter o registro do incio e trmino do desempenho em uma das etapas

Вам также может понравиться