Modelagem de Dados em UML

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