17
Modelagem de Dados com UML Diagrama de Classes Modelagem de Dados com UML ! Aspectos tratados pelos Diagramas de Classe: Dados e Funções Dados Funções Eventos Sistema Modelagem de Dados com UML ! Diagrama de Classes ! Representação dos dados manipulados e armazenados pelos programas de acordo com os conceitos de Orientação a Objetos ! Notação fortemente baseada no Diagramas Entidade-Relacionamento de Peter Chen ! Deve-se observar que o Diagrama de Classes privilegia a descrição segundo o paradigma OO Modelagem de Dados com UML ! Diagrama de Classe ! Notação Nome da classe Atributo atributo: tipo de dado atributo: tipo de dado = valor inicial Operação Operação(lista de argumentos): tipo do resultado Opcionais (fornecidos somente após um melhor entendimento do sistema)

Modelagem de Dados com UML Modelagem de Dados com UML

  • Upload
    vodiep

  • View
    250

  • Download
    3

Embed Size (px)

Citation preview

Page 1: Modelagem de Dados com UML Modelagem de Dados com UML

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)

Page 2: Modelagem de Dados com UML Modelagem de Dados com UML

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

Page 3: Modelagem de Dados com UML Modelagem de Dados com UML

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.

Page 4: Modelagem de Dados com UML Modelagem de Dados com UML

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

Page 5: Modelagem de Dados com UML Modelagem de Dados com UML

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

Page 6: Modelagem de Dados com UML Modelagem de Dados com UML

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

Page 7: Modelagem de Dados com UML Modelagem de Dados com UML

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

Page 8: Modelagem de Dados com UML Modelagem de Dados com UML

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

Page 9: Modelagem de Dados com UML Modelagem de Dados com UML

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}.

Page 10: Modelagem de Dados com UML Modelagem de Dados com UML

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?

Page 11: Modelagem de Dados com UML Modelagem de Dados com UML

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;

Page 12: Modelagem de Dados com UML Modelagem de Dados com UML

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.

Page 13: Modelagem de Dados com UML Modelagem de Dados com UML

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.

Page 14: Modelagem de Dados com UML Modelagem de Dados com UML

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..*

Page 15: Modelagem de Dados com UML Modelagem de Dados com UML

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}

*

Page 16: Modelagem de Dados com UML Modelagem de Dados com UML

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

Page 17: Modelagem de Dados com UML Modelagem de Dados com UML

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?