Upload
vodiep
View
250
Download
3
Embed Size (px)
Citation preview
Modelagem de Dados comUML
Diagrama de Classes
Modelagem de Dados comUML
! Aspectos tratados pelos Diagramas deClasse: Dados e Funções
Dados
Funções
Eventos
Sistema
Modelagem de Dados comUML
! Diagrama de Classes! Representação dos dados manipulados e
armazenados pelos programas de acordo com osconceitos de Orientação a Objetos
! Notação fortemente baseada no DiagramasEntidade-Relacionamento de Peter Chen
! Deve-se observar que o Diagrama de Classesprivilegia a descrição segundo o paradigma OO
Modelagem de Dados comUML
! Diagrama de Classe! Notação
Nome da classe
Atributoatributo: tipo de dadoatributo: tipo de dado = valor inicial
OperaçãoOperação(lista de argumentos): tipo do resultado
Opcionais(fornecidos somente apósum melhor entendimentodo sistema)
Modelagem de Dados comUML
! Diagrama de Classe! Atributos
Pessoa
Nome: StrEndereço: {Logradouro: Str,Bairro: Str,Cidade: Str. }Telefones: Array of Int Obs: Atributos compostos e
Multivalorados sãopermitidos pelo modelo dedados OO
Modelagem de Dados comUML
! Diagrama de Classes! Associações
Livro Pessoaescrito por
0..* 1..*
Multiplicidade da associação
Rótulo da associação
Modelagem de Dados comUML
! Diagrama de Classes! Associações
Livro
Título: StrISBN: IntEditora: Str
Pessoa
Nome: StrEndereço: {Logradouro: Str,Bairro: Str,Cidade: Str. }Telefones: Array of Int
escrito por0..* 1..*
Multiplicidade da associação
Rótulo da associação
Modelagem de Dados comUML
! Diagrama de Classes! Atributos e Métodos
Conta Bancária
númerosaldodataAbertura
criar()bloquear()desbloquear()creditar()debitar()
Pessoa
Nome: StrEndereço: {
Logradouro: Str,Bairro: Str,
Cidade: Str. }Telefones: Array of Int
1*
titular
Papel da classe na associação
Obs: recomenda-sesempre incluiro nome da associação ouum papel.O papel é útil p/ ocódigo-fonte geradopor ferramentas CASE
Modelagem de Dados comUML
! Diagrama de Classes! Associações entre objetos (Exemplos)
Funcionário
0..1
*
Supervisiona
Associação Unária
Funcionário
João
supervisiona
É supervisionado por
Modelagem de Dados comUML
! Diagrama de Classes! Associações entre objetos
! NavegabilidadeFuncionário Departamento
0..* trabalha 1 Associação Binária
Funcionário trabalha em Departamento
Funcionário
João
Departamento
Financeiro
Modelagem de Dados comUML
! Diagrama de Classes! Associações entre objetos
! Navegabilidade
Funcionário Departamento0..* trabalha
Funcionário
João
Departamento
Financeiro
Modelagem de Dados comUML
! Diagrama de Classes! Associações entre objetos
! Navegabilidade: descreve como as associaçõesdevem ser navegadas.
! Unidirecional, só é possível navegar em uma direção.Por exemplo, a partir de um Funcionário pode-sedeterminar o Departamento para o qual ele trabalha,mas o inverso não é possível.
! Bidirecional, navega-se em ambas as direções. Apartir Funcionário determina-se o Departamento evice-versa.
Modelagem de Dados comUML
Multiplicidade Significado
0..1 Zero ou um
1 Somente 1 (opcional)
0..* Maior ou igual a zero
* Maior ou igual a zero
1..* Maior ou igual a 1
1..15 (m..n) De 1 a 15 (m a n), inclusive
! Diagrama de Classes! Multiplicidade
Modelagem de Dados comUML
! Diagrama de Classes! Decisões de cardinalidade expõem muitas
suposições, antes ocultas sobre oproblema que está sendo modelado.
! Exemplos: qual o correto?
Professor Cursoministra
Um professor pode estar indisponível?
Um curso pode ter 2 professores?
Modelagem de Dados comUML
! Diagrama de Classes! Exemplos: qual o correto?
Funcionário Departamento1 trabalha 0..1
Funcionário Departamento0..* trabalha
Funcionário Departamento0..* trabalha 1..*
(adaptado de BEZ02)
Modelagem de Dados comUML
! Diagrama de Classes! Exemplos
Funcionário Departamento
trabalha
1*
gerente 0..1
Modelagem de Dados comUML
! Exemplos
Financeira
códigonome
Venda
datahora
Vendedor
númeronenhanívelAutorização
financia
0..1 * *
realizada por
Modelagem de Dados comUML
! Diagrama de Classe! Classes associativas
! Informação que surge a partir da associaçãode duas outras classes
Pessoa
NomeEndereço: {Logradouro;
Bairro;Cidade. }
Sexo
marido
esposa
0..1
0..1
casamento DataRegime
Modelagem de Dados comUML
! Diagrama de Classe! Classes associativas
! Conceito não é uma característica de Aluno enem uma característica de Disciplina, e simuma propriedade do relacionamento existenteentre ambos.
Aluno Disciplina** matriculado
conceitosemestre
Modelagem de Dados comUML
! Diagrama de Classe! Classes associativas! Usar quando existem atributos que não pertencem
às classes comuns ou quando estas classespodem participar de associações com outrasclasses
Financeira
códigonome
Venda
datahora
Vendedor
númeronenhanívelAutorização
financia
0..1 * *
realizada por
registroAprovaçãodataAprovação
Financiamento
Modelagem de Dados comUML
! Diagrama de Classe! Classes associativas
! Observação importante: o conceito de “ClasseAssociativa” não é permitido em todas aslinguagens de programação e sistemas debanco de dados OO
! Assim, em muitos casos as classesassociativas encontradas em Análise sãosubstituídas por classes regulares em Projeto
Modelagem de Dados comUML
! Diagrama de Classe! Classes associativas
! Classe associativa substituída por normalFuncionário Departamento
* possui comissão 0..1
gratificaçãodataInício
Função Comissionada
Funcionário Departamento?
Função Comissionada
GratificaçãodataInício
???
Exercício: definir a multiplicacidade para manter o mesmo significadodo modelo acima
Modelagem de Dados comUML
! Diagrama de Classe! Classes associativas - Exercício
1. Explique o modelo abaixo.
2. Substitua as classes associativas por classescomuns.
Funcionário EmpresaTrabalha para
saláriotítulo do cargo
grau de desempenho
gerencia
chefe
trabalhador
Modelagem de Dados comUML
! Diagrama de Classe! Agregação
! Associa de todo/parte
! Ação realizada sobre todo atinge as partes
! Tipo especial de associação
Documento Parágrafo Sentença0..* 0..*
Documento Parágrafo Sentença0..* 0..*
composto-por composto-por
Modelagem de Dados comUML
! Diagrama de Classe! Agregação
! Exemplo
AssociaçãoEsportiva
Equipe Jogador0..* 0..*
! afiliada
Modelagem de Dados comUML
! Agregação vs Composição! Composição é um tipo especial de agregação (por
valor)
! Semanticamente equivalente a um atributo
Pessoa
nomeendereço: {logradouro;bairro;cidade. }cpfsexo
Pessoa
nomesexo
logradourobairrocidade
Endereço
composição
número
CPF
validaCPF: bool
Modelagem de Dados comUML
! Composição! A remoção do todo implica na remoção
das partes
! O acesso às partes é restrito ao todo
Pessoa
nomesexo
logradourobairrocidade
Endereço
número
CPF
validaCPF: bool
pessoa
endereço cpf
Objetoexterno
Modelagem de Dados comUML
! Composição! Exemplo
Produto
códigodescrição
ItemVenda
quantidade
Venda
datahora
* *
(adaptado de [HEU00])
Uso inadequado de composição:Partes de uma composição não podem ser referenciadaspor objetos externos
Modelagem de Dados comUML
! Composição! Exemplo
Produto
códigodescrição
ItemVenda
quantidade
Venda
datahora
* *
Uso adequado de composição
Modelagem de Dados comUML
! Generalização/Especialização
Modelagem de Dados comUML
! Generalização/Especialização! Herança de propriedades
! Associação do tipo “é um”Cliente
nome
PessoaFísica
CPFRGSexoDataNascimento
PessoaJurídica
CGCRazãoSocial
Super-classe
Sub-classes(herdeiras)
Modelagem de Dados comUML
! Generalização/Especialização! Polimorfismo: não há necessidade de se criar
uma associação entre Venda e subclasses deCliente
Cliente
nome
PessoaFísica
CPFRGSexoDataNascimento
PessoaJurídica
CGCRazãoSocial
Compra** realiza
Modelagem de Dados comUML
! Generalização/Especialização! Se atributos de uma classe que foram
identificados só podem ser aplicados emtipos específicos da classe, esta é umaboa indicação de que a herança deve serutilizada [Coad, 1992].
! Exemplo: classe Imóvel, atributo númerode quartos, num. de suítes, etc.
Modelagem de Dados comUML
! Generalização/Especialização
Empregado {abstrata}
recebido durante o ano
calcular pagamento
Empregado Horista
taxa horáriataxa por hora extracalcular pagamento
Empregado Assalariado
taxa semanal
calcular pagamento
Empregado Autônomo
taxa mensal
calcular pagamento
Classes Abstratas(não é usada para
gerar objetos)
Modelagem de Dados comUML
! Generalização/Especialização! Deve-se analisar as especializações para
verificar quais delas estão no domínio doproblema. As que não estão presentes nãodevem ser representadas.
! Por exemplo, a modelagem de Homen eMulher não precisa ser feita, o pagamentodo salário de um funcionário não éinfluenciado pelo sexo do mesmo.
Modelagem de Dados comUML
! Generalização/Especialização! Desta forma, não deve-se criar as
subclasses. Pode-se substituir ageneralização / especialzação por umaatributo na classe Empregado quedescreve o sexo do empregado e associaruma restrição: {Sexo=M ou Sexo=F}.
Modelagem de Dados comUML
! Generalização/Especialização! Herança Múltipla
Veículoanfíbio
Veículo
Veículoterrestre
Veículoaquático
Conceito pouco usado na prática:Conceito pouco usado na prática:••NNão é suportado por todas asão é suportado por todas aslinguagens de programaçãolinguagens de programação••Adiciona maior complexidade aoAdiciona maior complexidade ao modelo modelo
Erros comuns
! Usar classes ou associações pararepresentar consultas ou operações dosistema que não devem ser registradas! Exemplo 1
Usuário Acervoconsulta
Erros Comuns
! Usar classes ou associações pararepresentar consultas ou operações dosistema que não devem ser registradas;
! As associações devem refletir característicaspermanentes entre classes, e não situaçõestemporárias.
! Exemplo 2
Usuário Consultafaz *
Erros Comuns
! Identificar métodos nas classes sem terfeito a modelagem temporal
O que é sintonizar?-Quem usa?-Quais os parâmetros?
Erros Comuns
! Inserir atributos quando o ideal é criaruma classe
Canal
EstiloMusical
Refere-se a
*
Erros Comuns
! Usar herança quando a quantidade detipos é grande ou dinâmica
EstiloMusical
Pagode Rock Axé
EstiloMusical
Nome: string
Erros Comuns
! Inserir chaves-estrangeiras nodiagrama de classes! As associações são suficientes
Funcionário
codFunccodDepto
Depto
codDepto...
trabalha
*
Chave primária? Usar OID!
Chave estrangeira? Redundante!
Dicas
! Não comece a projetar diretamente odiagrama de classes. Primeiro entenda oproblema;
! Tente manter sempre simples o modelo deobjetos. Evite complicaçõesdesnecessárias;
! Escolha os nomes cuidadosamente. Umaheurística simples é que se você nãoconsegue escolher um bom nome, istoindica uma classe mal projetada;
Dicas
! Não é necessário utilizar todos os conceitosda UML.
! Evite árvores de herança muito profundas,pois elas aumentam a probabilidade decometer erros e tornam as classes profundasmais complexas.
Dicas
! Tente evitar associações ternárias. A maioriadelas pode ser decomposta em associaçõesbinárias usando-se atributos de ligação.
Projeto Linguagem
PessoaVôo
datanúmero
Passageiro
nome
Poltrona
número
Modelagem de Dados comUML
! Exercício! Modelar a biblioteca do CCEN que permite
alunos, professores e funcionários da UFPAemprestarem e fazerem reserva de livros.
! Na primeira iteração, considere somente asclasses;
! Na segunda iteração, considere também osatributos das classes;
Modelagem de Dados comUML
! Exercícios:! Preparar um diagrama de classes mostrando
relacionamentos entre as seguintes classes deobjetos. Incluir associações, agregações egeneralizações. Acrescentar também atributos.
! Hotel, hóspede, funcionário, lavanderia, sauna, boate,restaurante, bar, piscina, reserva.
! Escola, playground, diretor, conselho escolar, sala deaula, livro, aluno, professor, sala de repouso,computador, carteira, cadeira, porta, biblioteca.
Modelagem de Dados comUML
! 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 delança é um atacante especial por ter especiais característicasde goleador... O jogo é realizado num campo com medidasregulamentares (em comprimento e largura), tem duas balizas,cada qual em extremos opostos do campo. Ganha o jogo aequipe que marcar mais gols (i.e., colocar a bola) na baliza doadversário. No jogo apenas existe uma única bola, queapresenta características (peso, diâmetro, …) regulamentares...O jogo de futebol é mediado por uma equipe de 3 árbitros, emque um é o árbitro principal, e os outros dois são árbitrosauxiliares…”.
Modelagem de Dados comUML
! Generalização/Especialização
Cliente
ContaBancária
númerodataAberturasaldo
debitar(quantia)creditar(quantia)
HistóricoTransações
ContaCorrente
limiteSaque
ContaPoupança
dataAniversáriorendimento
** *
Modelagem de Dados comUML
! Padrão Evento Lembrado [Coad 1992]:! Todo evento que precisa ser registrado e
lembrado pelo sistema pode ser considerado umpotencial candidato a classe.
! Idéia: Existe algum instante ou evento históricoque precisa ser observado e armazenado pelosistema?
! Em um sistema de registros de carros tem que lembrarquando alguém comprou o carro;
! Lembrar quando alguém reservou/alugou uma fita;! Matrícula de um aluno; e! Pagamento de documentos, etc.
Modelagem de Dados comUML
! Restrições! Restrição {ou} implica na seleção exclusiva
entre duas ou mais associações existentesem uma classe
Contacorrente
Indivíduo
Organização
0..*
0..*0..1
0..1
{ou}
cliente
cliente
Modelagem de Dados comUML
! Restrição! Observação: possível mapeamento para
uso de restrição {ou} com multiplicidademáxima 1.
Contacorrente
Cliente
Organização
0..*0..1
cliente
Indivíduo
Modelagem de Dados comUML
! Restrições
Contrato deSeguro
Indivíduo
Empresa
0..*
0..*1..*
1..*
{ou}Companhiade Seguros
0..*1
Modelagem de Dados comUML
! Restrições
PessoaEmpresaempregado
1 *
chefe
0..1
*
{ Pessoa.empregador = Pessoa.chefe.empregador }
empregador
Pessoa Comitê
Membro-de
Presidente-de
{subconjunto}
0..*
0..*
0..*
Modelagem de Dados comUML
! Restrições
Empregado
salário chefe
{Empregado.salário < Empregado.chefe.salário}
Janela
comprimentolargura
{0,8<=comprimento/largura<=1,5} Cargo
prioridade
{prioridade nunca cresce}
1..*
1
Janela TelaVisível em
{ordenado}
*
Modelagem de Dados comUML
! Restrições
Pessoa
NomeEndereço: {Logradouro;
Bairro;Cidade. }
Sexo
marido
esposa
0..1
0..1 casamento
DataRegime
{pessoa.sexo=Feminino}
{pessoa.sexo=Masculino}
Modelagem de Dados comUML
! Restrições! Exemplos
Pessoa Condomínio
mora
síndico
*
{subconjunto}
Modelagem de Dados comUML
! Restrições
Conta Bancária
númerosaldodataAbertura
criar()bloquear()desbloquear()creditar()debitar()
Pessoa
Nome: StrEndereço: {
Logradouro: Str,Bairro: Str,
Cidade: Str. }Telefones: Array of Int
1..**
correntista
titular
{subconjunto}
*
Modelagem de Dados comUML
! Atributo derivado
{idade = data_atual – data_nascimento}
Atributo derivado
{lucro = valor_venda – valor_compra}
Atributo derivado
Modelagem de Dados comUML
! Complementar o modelo de controleacadêmico.! Acrescentar o monitor (aluno): o aluno
pode exercer o papel de monitor duranteum período
! Permitir que uma pessoa exerçasimultaneamente o papel de Professor eAluno da Universidade
Discussão
! Monitor, Professor, Aluno: herança
Pessoa
AlunoProfessor
Monitor
Discussão
! Monitor, Professor, Aluno: herança! Problemas
! Acomodação inábil de objetos que mudam declasses
! Transmutação
ou Metamorfose
Pessoa
AlunoProfessor
Monitor
Discussão
! Monitor, Professor, Aluno: herança! Solução
! Combinar herança e associação
PapelPessoa
AlunoProfessor Monitor
Pessoa {abstrata}*
nomecpfdataNascimento
exerce
matrícula matrícula
1. Início: 01/022. Início: 01/11 Fim: 31/12
3. Fim: 31/12
4. Início: 01/01/próximo ano
0. criação
Transmutação
! 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 quepreserve o histórico de um professordurante a sua vida profissional
! Em particular, é importante manter o registrodo início e término do desempenho em umadas etapas
Perguntas?