Universidade Federal de Mato Grosso Instituto de Computação Pós Graduação Lato Sensu em Banco de Dados Fundamentos de Banco de Dados e Modelagem de Dados Prof. Dr. Josiel Maimone de Figueiredo [email protected] Abril - 2015 Pós Graduação Lato Sensu em Banco de Dados Disciplina: Fundamentos de Banco de Dados e Modelagem de Dados Aula 3 Modelagem de Dados com UML Abril – 2015 O que é Modelagem ➔ Arquitetura de Banco de Dados Conceitual Aplicação Conexão Lógica SGBD Física MER ou UML Visão Tópicos ➔ Conceitos básicos ➔ O que é UML? ➔ Unified Modeling Language ➔ Diagrama de Classes ➔ UML x MER ➔ Exemplos ➔ Exercícios O que é a UML (Unified Modeling Language)? linguagem escrita por Grady Booch, Jim Rumbaugh e Ivar Jacobson. Em 1997 é aprovada como padrão pela OMG; Atualmente na versão 2.0; Por ser uma linguagem, não especifica o método para desenvolvimento, mas sim o que se utilizar para desenvolver utilizando o paradigma OO. Origens da UML Booch Rumbaugh Jacobson Fusion Meyer Operation descriptions, Message numbering Before and after conditions Harel State charts UML Embley Singleton classes, High-level view Gamma, et.al Wirfs-Brock Frameworks, patterns, notes Shlaer - Mellor Object Lifecycles Odell Classification Responsibilities O que é a Unified Modeling Language (UML)? ➔ ➔ Combina o melhor de ➔ Modelagem de Dados ➔ Modelagem de Negócios ➔ Modelagem de Objetos ➔ Modelagem de Componentes Linguagem padrão para ➔ visualizar, ➔ especificar, ➔ construir e ➔ documentar artefatos 7 Conceitos da UML ➔ Pode ser usada para modelar visualmente: ➔ A interação da aplicação com o mundo externo ➔ A arquitetura da organização ➔ O comportamento da aplicação ➔ A estrutura da aplicação ➔ Os componentes da aplicação 8 Artefatos UML ➔ IC - UFMT [Amber2001] Estrutura da UML ➔ Diagramas ➔ Estáticos ➔ Diagrama de Classes ➔ Diagrama de Objetos ➔ Diagrama de Componentes ➔ Diagrama de Implantação Estrutura da UML ➔ Diagramas ➔ Dinâmicos ➔ Diagrama de Casos de Uso ➔ Diagrama de Sequência ➔ Diagrama de Colaboração ➔ Diagrama de Atividade ➔ Diagrama de Estados Estrutura da UML ➔ Para modelagem de dados é utilizado o Diagrama de Classes ➔ Se baseia no ➔ Paradigma da Orientação a Objetos Princípios da Orientação a Objetos Princípios da Orientação a Objetos • Classe e Objeto • Encapsulamento • Relacionamento • Herança • Associação • Polimorfismo Objetos são Abstrações Os objetos são representações de uma entidade do mundo real. São utilizadas, da entidade do mundo real, apenas características relevantes ao sistema a ser modelado. São representados atributos e comportamentos da entidade. Ex: Atributos: tamanho, cor, etc. Comportamentos: destampar, escrever, etc. Objetos possuem propriedades Objetos possuem características que determinam seu estado atual. Essas características são chamadas de atributos. Cada atributo possui um domínio e um valor. O estado de um objeto é determinado pelo valor atual de seus atributos. Objetos possuem operações que mudam seu estado, ou seja, operam sobre os valores de seus atributos. Essas operações, também, podem ser chamadas de comportamento. Objetos possuem propriedades Um (cont.) Objeto possui um identificador que é único entre todos os outros objetos. Gerado pelo sistema Não muda de valor durante a vida do objeto Dois objetos são iguais se possuirem o mesmo identificador. Mesmo possuindo o mesmo estado dois objetos podem ser diferentes. Classe Uma classe é um modelo (“fôrma”) para grupos de objetos que possuem as mesmas características. Uma classe especifica quais são as características (propriedades) do grupo de objetos: Atributos e Operações Um Objeto é um exemplar de uma determinada classe. Representação de Classes Uma classe é representada graficamente através de um retângulo, contendo seu nome e suas propriedades. Ex: NomeClasse nomeAtributo nomeOperação() Encapsulamento ➔ Uma calculadora possui as 4 operações básicas (soma, subtração, multiplicação, divisão). ➔ Como cada operação é feita? ➔ Como ela armazena os números e os mostra? ➔ ➔ Um usuário utiliza apenas os botões da calculadora. Calculadoras de fabricantes diferentes operam de maneiras diferentes, porém a aparência, o acesso aos dados e sua manipulação é praticamente a mesma. Encapsulamento ➔ Encapsular é a tarefa de ➔ ➔ ➔ esconder a forma de implementação das operações, definir a forma de acesso e ativação das operações e, determinar quais operações são visíveis externamente. Encapsulamento ➔ Vantagens ➔ ➔ ➔ O acesso aos dados é controlado, Evita que os dados sejam manipulados incorretamente, Se a forma de manipulação do dado é alterada não há mudanças para quem utilizava as operações. Encapsulamento ➔ Tipos de Visibilidade ➔ ➔ ➔ Pública (+) – acesso externo total por qualquer objeto. Privada (#) – somente o objeto pode acessar. Protegida (-) – objetos da mesma classe ou subclasses podem acessar. Relacionamentos ➔ ➔ ➔ ➔ Permite que ocorra uma abstração maior na modelagem das classes. Através dos relacionamentos que os objetos interagem entre si. A interação entre os objetos ocorre através de trocas de mensagens. Os tipos de relacionamentos são: ➔ Herança ➔ Associação ➔ Agregação Herança ➔ Define o relacionamento É_UM entre classes, criando uma hierarquia. ➔ Utiliza os conceitos da Abstração de Generalização / Especialização, nos quais todas as propriedades de uma classe são herdadas por outras. Herança ➔ Notação: Superclasse Publicação Livro Artigo Subclasses Revista Herança Múltipla ➔ Uma classe pode herdar propriedades de mais de uma classe. ➔ Ex: Professor Aluno Monitor Herança Múltipla (problemas) Muitas vezes certas Pessoa características podem gerar conflitos. ➔ Ex: Professor Aluno Monitor Interface ➔ Define um conceito semelhante ao de herança múltipla, porém resolve o problema de conflitos. ➔ Uma (ou todas) das superclasses é definida como uma interface, assim: ➔ Não pode possuir instâncias, ➔ Todos os seus atributos são constantes. ➔ Seus métodos não possuem corpo. ➔ A classe que herda de uma interface é dita implementar a interface. Herança Múltipla (problemas) Muitas vezes certas <<interface>> Pessoa características podem gerar conflitos. ➔ Ex: <<interface>> Professor <<interface>> Aluno Monitor Associação ➔ ➔ Define um relacionamento diferente do tipo É_UM, podendo ter qualquer semântica. Ex: Livro possui Autor Associação ➔ (cont.) Multiplicidade ➔ ➔ Define a forma de participação dos objetos no relacionamento. É expressada através do número mínimo e máximo de participantes. Tipos Representação Muitos n Apenas Um 1 Zero ou Muitos 0..n Um ou Muitos 1..n Zero ou Um 0..1 Intervalo Específico n..m Associação ➔ (cont.) Ex: atribuição de multiplicidade Livro Livro 1..n 1..n possui possui 1..n 1..n Autor Autor Associação (cont.) ➔ Auto-relacionamento ➔ Ex: é pré-requisito 0..n Livro é pré-requisito 0..n possui pré-requisito Classe de Associação ➔ ➔ Quando uma associação possui atributos é necessário criar uma classe para esse atributo. Ex: Aluno 1..n possui Rendimento nota frequencia 1..n Disciplina Autor Agregação ➔ ➔ Um tipo especial de Associação que define o relacionamento É_Composto: ➔ Um objeto é composto de outros objetos e ➔ Um objeto é parte de outro objeto. Ex: Livro 1..n contém 1..n Capítulo Autor Agregação por Valor ➔ ➔ ➔ Também chamado de Composição A parte não existe sem o todo, ou a parte só existe dentro do todo. Ex: Livro 1..n contém 1..n Capítulo Autor Agregação por Referência ➔ A parte pode existir sem o todo. ➔ Ex: Categoria 1..n contém 1..n Produto Autor Polimorfismo ➔ ➔ ➔ É a capacidade de um operador executar uma ação apropriada dependendo dos tipos dos operandos. Possibilita utilizarmos de maneira uniforme métodos que possuem o mesmo tipo de chamada, porém implementações diferentes. Dois tipos de Polimorfismo: ➔ Sobrecarga e ➔ Redefinição Sobrecarga ➔ ➔ Ocorre quando são definidos dois métodos que possuem a mesma chamada, porém recebem parâmetros diferentes. Ex: Funcionario +busca(codigo) +busca(nome) Redefinição ➔ ➔ Uma operação é definida na superclasse é redefinida na subclasse para um tratamento adequado de suas especificidades. Ex: Funcionario +calculaSalario() Gerente Vendedor +calculaSalario() +calculaSalario() Dependência ➔ ➔ Indica que mudança em uma classe pode causar mudanças na outra. Relacionamento não estrutural Cliente Fornecedor Relacionamento de Dependência 42 Restrições ➔ Representa regras de negócio que não são expressas por outros elementos da linguagem. Funcionário Professor 1..* Coordenador 3 1 Departamento {subset} 1 43 UML x MER ➔ MER ➔ ➔ ➔ ➔ Modelagem de Regras de Negócio e Restrições O MER facilita representação dos dados contudo não aborda a manipulação desses dados Regras de negócio devem ser colocadas no Dicionário de Dados Arquitetura N-camadas as regras de negócio devem ser distribuídas nas diversas camadas. 44 UML x MER ➔ UML (Diagrama de Classes) ➔ ➔ UML tem uma representação mais integrada com todo o processo de desenvolvimento. UML com os conceitos de Orientação a Objetos aproxima mais a modelagem do mundo real. ➔ UML possui diversas representações adicionais ➔ Contudo: ➔ A estrutura conceitual pode ser confundida com ➔ a estrutura lógica de armazenamento e ➔ a estrutura lógica de classes da aplicação 45 UML x MER ➔ IC - UFMT [Amber2001] Exercício ➔ ➔ Fazer a modelagem abaixo com MER e UML ”Uma loja de móveis deseja informatizar suas atividades. Sabe-se que existem as atividades de venda e de reforma de móveis. Um móvel possui as seguintes propriedades: foto, material, peso, tipo e se faz parte de um conjunto, nesse caso é necessário saber qual é o conjunto. Os tipos de móveis permitidos são: sofá, mesa, cadeira e armário. Para sofás deseja-se armazenar o número de lugares e o tipo de estofado. Para as cadeiras deseja-se saber se possuem braços e rodas. Para os armários é preciso saber o número de prateleiras, gavetas e de portas. Em qualquer serviço é preciso saber o(s) funcionário(s) que o executou. No final do mês é preciso saber quantos serviços foram feitos no período por cada funcionário. Das entregas é preciso saber se obedeceram ao prazo inicialmente previsto.” Exercício ➔ Comparar MER e UML no que diz respeito às representações, ou seja, todas as regras de modelagem do MER podem ser representadas em UML ? E vice-versa? Referências ➔ ➔ Silberschatz, A.; Korth, H.F.; Sudarshan,S.; ”Database System Concepts”; Fifth Edition; 2008. Ana Cristina S. L. Melo, A.C.S.L.; ”Entendendo a UML - uma abordagem prática”; Universidade Estácio de Sá Analista de Sistemas; ➔ Gonçalves, M.; ”Análise Orientada a Objetos - UML - Unified Modeling Language” ➔ Bezerra, E. ;”Princípios de Análise e Projeto Orientados a Objetos com UML ”; Editora CAMPUS. ➔ OMG – www.omg.org ➔ UML – www.uml.org ➔ UML Essencial – Grady Booch, Ivar Jacobson e James Rumbaugh.