Modelagem de Dados com UML. Modelagem de Dados com UML. Modelagem de Dados com UML. Modelagem de Dados com UML. ! Generalização/Especialização - PDF
Download "Modelagem de Dados com UML. Modelagem de Dados com UML. Modelagem de Dados com UML. Modelagem de Dados com UML. ! Generalização/Especialização"
Maria do Loreto Bergler Neto
1 ! Herança de propriedades! Associação do tipo é um Super-classe nome Física CPF RG Sexo DataNascimento Jurídica CGC RazãoSocial Sub-classes (herdeiras)! Polimorfismo: não há necessidade de se criar uma associação entre Venda e subclasses de Física nome CPF RG Sexo DataNascimento realiza Jurídica CGC RazãoSocial Compra! Se atributos de uma classe que foram identificados só podem ser aplicados em tipos específicos da classe, esta é uma boa indicação de que a herança deve ser utilizada [Coad, 1992].! Exemplo: classe Imóvel, atributo número de quartos, num. de suítes, etc.
2 Empregado Horista taxa horária taxa por hora extra calcular pagamento Empregado {abstrata} recebido durante o ano calcular pagamento Empregado Assalariado taxa semanal calcular pagamento Empregado Autônomo taxa mensal Classes Abstratas (não é usada para gerar objetos) calcular pagamento! Deve-se analisar as especializações para verificar quais delas estão no domínio do problema. As que não estão presentes não devem ser representadas.! Por exemplo, a modelagem de Homen e Mulher não precisa ser feita, o pagamento do salário de um funcionário não é influenciado pelo sexo do mesmo.! Desta forma, não deve-se criar as subclasses. Pode-se substituir a generalização / especialzação por uma atributo na classe Empregado que descreve o sexo do empregado e associar uma restrição: {Sexo=M ou Sexo=F}.! Herança Múltipla Conceito pouco usado na prática: Não é suportado por todas as linguagens de programação Adiciona maior complexidade ao modelo Veículo terrestre Veículo Veículo aquático Veículo anfíbio
3 ContaBancária número dataabertura HistóricoTransações saldo ContaCorrente limitesaque debitar(quantia) creditar(quantia) ContaPoupança dataaniversário rendimento! Evento Lembrado [Coad 1992]:! Todo evento que precisa ser registrado e lembrado pelo sistema pode ser considerado um potencial candidato a classe.! Idéia: Existe algum instante ou evento histórico que precisa ser observado e armazenado pelo sistema?! Em um sistema de registros de carros tem que lembrar quando alguém comprou o carro;! Lembrar quando alguém reservou/alugou uma fita;! Matrícula de um aluno; e! Pagamento de documentos, etc.! 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 de lança é um atacante especial por ter especiais características 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 adversário. No jogo apenas existe uma única bola, que apresenta características (peso, diâmetro, ) regulamentares... O jogo de futebol é mediado por uma equipe de 3 árbitros, em que um é o árbitro principal, e os outros dois são árbitros auxiliares.! Restrição {ou} implica na seleção exclusiva entre duas ou mais associações existentes em uma classe Conta corrente {ou} cliente Indivíduo cliente Organização
4 ! Restrição! Observação: possível mapeamento para uso de restrição {ou} com multiplicidade máxima 1. Conta corrente 0.. cliente Companhia de Seguros Contrato de Seguro {ou} Indivíduo Empresa Indivíduo Organização chefe 1 Empresa empregador empregado {.empregador =.chefe.empregador } 1.. Empregado salário {Empregado.salário < Empregado.chefe.salário} Janela comprimento largura {0,8<=comprimento/largura<=1,5} 1 chefe Cargo prioridade {prioridade nunca cresce} 0.. Membro-de {subconjunto} Presidente-de Comitê Janela {ordenado} Visível em Tela
5 ! Exemplos casamento {pessoa.sexo=feminino} esposa Data Regime mora {subconjunto} Condomínio Nome Endereço: { Logradouro; Bairro; Cidade. } Sexo marido {pessoa.sexo=masculino} síndico! Atributo derivado Conta Bancária número saldo dataabertura criar() bloquear() desbloquear() creditar() debitar() {subconjunto} titular 1.. correntista Nome: Str Endereço: { Logradouro: Str, Bairro: Str, Cidade: Str. } Telefones: Array of Int Atributo derivado Atributo derivado {idade = data_atual data_nascimento} {lucro = valor_venda valor_compra}
6 ! Complementar o modelo de controle acadêmico.! Acrescentar o monitor (aluno): o aluno pode exercer o papel de monitor durante um período! Permitir que uma pessoa exerça simultaneamente o papel de Professor e Aluno da Universidade Discussão! Monitor, Professor, Aluno: herança Professor Aluno Discussão! Monitor, Professor, Aluno: herança! Problemas! Acomodação inábil de objetos que mudam de classes! Transmutação ou Metamorfose Monitor Professor Aluno Monitor
7 Discussão! Monitor, Professor, Aluno: herança! Solução 0. criação! Combinar herança e associação nome cpf datanascimento Professor matrícula exerce 4. Início: 01/01/próximo ano Papel {abstrata} matrícula Aluno 1. Início: 01/02 3. Fim: 31/12 Monitor 2. Início: 01/11 Fim: 31/12 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 que preserve o histórico de um professor durante a sua vida profissional! Em particular, é importante manter o registro do início e término do desempenho em uma das etapas Erros comuns! Usar classes ou associações para representar consultas ou operações do sistema que não devem ser registradas! Exemplo 1 Usuário consulta Acervo Erros Comuns! Usar classes ou associações para representar consultas ou operações do sistema que não devem ser registradas;! As associações devem refletir características permanentes entre classes, e não situações temporárias.! Exemplo 2 Usuário faz Consulta
8 Erros Comuns! Identificar métodos nas classes sem ter feito a modelagem temporal Erros Comuns! Inserir atributos quando o ideal é criar uma classe Canal Refere-se a EstiloMusical O que é sintonizar? -Quem usa? -Quais os parâmetros? Erros Comuns! Usar herança quando a quantidade de tipos é grande ou dinâmica EstiloMusical EstiloMusical Erros Comuns! Inserir chaves-estrangeiras no diagrama de classes! As associações são suficientes Chave primária? Usar OID! Nome: string Pagode Rock Axé Funcionário codfunc coddepto trabalha Depto coddepto... Chave estrangeira? Redundante!
Modelagem de Dados com UML. Modelagem de Dados com UML. Modelagem de Dados com UML. Modelagem de Dados com UML. Diagrama de Classes
! Aspectos tratados pelos Diagramas de Classe: Dados e Funções Eventos Diagrama de Classes Dados Funções Sistema! Representação dos dados manipulados e armazenados pelos programas de acordo com os conceitos