Upload
erick-valerio
View
310
Download
3
Embed Size (px)
Citation preview
Modelagem de Dados com UMLDiagrama de Classes
Modelagem de Dados com UML!
Aspectos tratados pelos Diagramas de Classe: Dados e FunesEventos
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
NotaoNome 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!
AtributosPessoa Nome: Str Endereo: {Logradouro: Str, Bairro: Str, Cidade: Str. }
AssociaesMultiplicidade 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!
AssociaesMultiplicidade da associao Pessoa Livro escrito por Ttulo: Str ISBN: Int Editora: Str 0..* Nome: Str Endereo: {
Atributos e MtodosConta 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!
Navegabilidade0..* trabalha 1 DepartamentoAssociao 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!
NavegabilidadeFuncionrio 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!
MultiplicidadeMultiplicidade 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?Professorministra
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 trabalha0..1
Exemplostrabalha* 1
Departamento Funcionrio
Departamento 0..1
Funcionrio
0..* trabalha
Departamento gerente1..*
Funcionrio
0..* trabalha
Departamento
(adaptado de BEZ02)
Modelagem de Dados com UML!
Modelagem de Dados com UML!
ExemplosFinanceiracdigo nomefinancia 0..1 *
Diagrama de Classe!
Classes associativas!
Vendadata hora
realizada por *
Vendedornmero nenha nvelAutorizao
Informao que surge a partir da associao de duas outras classescasamento 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 associativasUsar 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
Financeiracdigo nome
financia 0..1 *
Vendadata hora
realizada por *
Vendedornmero 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 normalFuncionrio *possui comisso 0..1Funo 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 ClasseClasses associativas - Exerccio1. 2.
Diagrama de Classe!
Agregao! ! !
Explique o modelo abaixo. Substitua as classes associativas por classes comuns.Funcionriotrabalhador Trabalha para
Associa de todo/parte Ao realizada sobre todo atinge as partes Tipo especial de associao0..*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!
Exemplo0..*! afiliada
!
Composio um tipo especial de agregao (por valor) Semanticamente equivalente a um atributocomposio Pessoa Pessoanome sexo
Associao Esportiva
Equipe
0..*
Jogador
Endereologradouro bairro cidade
nome endereo: { logradouro; bairro; cidade. } cpf sexo
CPFnmerovalidaCPF: 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 ObjetoEndereologradouro bairro cidade
Exemplo
(adaptado de [HEU00])
Pessoanome sexo
externo
Produtocdigo descrio
*
ItemVendaquantidade
*
Vendadata hora
pessoaendereo cpf
CPFnmerovalidaCPF: 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
ExemploProdutocdigo descrio*
ItemVendaquantidade
*
Vendadata 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 umClientenome
Super-classe
Polimorfismo: no h necessidade de se criar uma associao entre Venda e subclasses de ClienteClientenome
*
realiza
*
Compra
PessoaFsicaCPF RG Sexo DataNascimento
PessoaJurdicaCGC RazoSocial
Sub-classes (herdeiras)
PessoaFsicaCPF RG Sexo DataNascimento
PessoaJurdicaCGC RazoSocial
Modelagem de Dados com UML!
Modelagem de Dados com UML!
Generalizao/Especializao!
Generalizao/EspecializaoEmpregado {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 Horistataxa horria taxa por hora extra calcular pagamento
Empregado Assalariadotaxa semanal calcular pagamento
Empregado Autnomotaxa 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 1Usurio 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 2Usurio 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 classeCanal* Refere-se a
Usar herana quando a quantidade de tipos grande ou dinmicaEstiloMusical EstiloMusicalNome: string
EstiloMusical Pagode Rock Ax
Erros Comuns!
Dicas!
Inserir chaves-estrangeiras no diagrama de classes!
As associaes so suficientesChave 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 LinguagemVodata nmero
Passageironome
Poltronanmero
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/EspecializaoContaBancria 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?!
!
ContaCorrentelimiteSaque
ContaPoupanadataAniversrio 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 classeclienteConta corrente 0..* {ou} 0..* 0..1 Indivduo
Observao: possvel mapeamento para uso de restrio {ou} com multiplicidade mxima 1.clienteConta corrente 0..* 0..1 Cliente
clienteOrganizao 0..1 Indivduo Organizao
Modelagem de Dados com UML!
Modelagem de Dados com UML!
Restries1..* {ou} 0..* 1..* Empresa Indivduo
Restries0..1chefe
Companhia de Seguros
1
0..* Contrato de Seguro
0..*
Empresa
1
*
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!
RestriesJanela comprimento largura 1..* Empregado salrio {0,8