Prévia do material em texto
Modelagem de Dados Prof. Me. Fábio Genaro Aula 10 - 18/10/2019 1 Modelagem de Dados com uso de UML (Unified Modeling Language) Conceito de Classe É uma entidade teórica usada para modelar um objeto. Deve ser exclusivamente criada para guardar informações de um determinado objeto. Exemplo: a partir do Objeto Carro, cria-se a Classe Carro. Figura 1: Classe Carro Fonte: Werlich (2018) 2 Modelagem de Dados com uso de UML (Unified Modeling Language) Divisões da Classe É dividida em 3 partes: nome, atributos e métodos. Nome: são os dados que a Classe irá armazenar. Atributos: são as características do objeto (dados). Métodos: Os métodos são os comportamentos que um objeto poderá assumir, ou seja, são as funções criadas para realizar alguma tarefa referente aos seus atributos objeto. Exemplo Figura 2: Nome, atributos e métodos da Classe Carro Fonte: Werlich (2018) 3 Modelagem de Dados com uso de UML (Unified Modeling Language) Diferenças entre Classe e Objeto (Professor Digital - Blog, 2019) Classe: Classe é um conjunto de objetos distintos, porém com as mesmas características e comportamentos. A classe é uma abstração de entidades existentes no mundo real. Objeto: Objeto é uma instância ou modelo derivado de uma classe. O objeto sempre será uma instância ou um elemento da uma classe. IMPORTANTE Instanciar uma classe é criar um objeto baseado em uma determinada classe. Figura 3: Diferenças entre Classe e Objeto Fonte: (Professor Digital - Blog, 2019) 4 Modelagem de Dados com uso de UML (Unified Modeling Language) UML (Unified Modeling Language) A UML originalmente foi proposta para realizar a modelagem de sistemas orientados a objetos, mas ela pode ser utilizada como uma notação em projetos de banco de dados, padronizando a modelagem de Projetos de Sistemas. Abrange aspectos conceituais, como regras de negócios, as classes (escritas em linguagens de programação), esquemas de banco de dados e componentes de software reutilizáveis, 5 Modelagem de Dados com uso de UML (Unified Modeling Language) Diagramas da Linguagem UML (Fowler, 2004) Diagrama de classes: é o mais usado da Linguagem UML, pois pode representar um conjunto de classes e seus relacionamentos. Diagrama de objetos: demonstra como na realidade as informações do objeto podem ficar armazenadas na classe. Diagrama de caso de uso: é um complemento do diagrama de classes, utilizado principalmente na fase de especificação dos requisitos do sistema, pois demonstra os usuários e as funcionalidades do software. Diagrama de sequência: demonstra uma visão ou perspectiva, norteada por tempo, da colaboração entre os objetos, principalmente com a ordem temporal em que as mensagens são trocadas. Diagrama de atividades: determina o fluxo de tarefas que podem ser executadas pelo software ou por um ator. Diagrama de estados: pode representar um conjunto de estados que um objeto pode ter e os “gatilhos” que possam estimular a mudança ou a transição do objeto de um estado para outro. Diagrama de componentes: demonstra os componentes do software e seus relacionamentos, podendo ser: bibliotecas, arquivos de ajuda e classes que podem ser anexadas ao software. 6 Modelagem de Dados com uso de UML (Unified Modeling Language) Exemplos de um Diagrama de Classe UML (Fowler, 2004) Figuras 4: Exemplos de Diagramas de Classe UML Fonte: Fowler (2004) e Lassala (2018) 7 Modelagem de Dados com uso de UML (Unified Modeling Language) Notação Gráfica Resumida de um Diagrama de Classe UML (Fowler, 2004) Figura 5: Notação Gráfica Resumida de um Diagrama de Classe UML Fonte: Weber (2018) 8 Modelagem de Dados com uso de UML (Unified Modeling Language) Multiplicidade (Fowler, 2004) A Multiplicidade nos Diagramas de Classe equivalem às Cardinalidades dos Diagramas de Entidade-Relacionamento. Os números indicam os relacionamentos entre os objetos das classes envolvidas. Notações possíveis Figuras 5: Tipos de Multiplicidade Fonte: UFCG – Recuperado de http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/uml/diagramas/classes/classes3.htm 9 Modelagem de Dados com uso de UML (Unified Modeling Language) Relacionamentos entre Classes Associação Define um relacionamento entre classes ou entre objetos de um sistema. Dividem-se em Agregação e Composição. Agregação É o tipo de associação ‘todo/parte’ onde o objeto parte é um atributo do objeto todo. Os objetos partes somente são criados se o objeto todo ao qual estão agregados seja criado. Exemplo: Agregação floresta e árvore (uma floresta é um agregado de árvores). Figura 6: Exemplo de Agregação Fonte: Silva (2018) 10 Modelagem de Dados com uso de UML (Unified Modeling Language) Relacionamentos entre Classes Associação Composição É o relacionamento entre um elemento ( o objeto todo) e outros elementos (os objetos partes), onde as partes só podem pertencer ao todo e são criadas e destruídas com ele. Exemplo: uma pessoa composta por cabeça, pernas e braços. Figura 7: Exemplo de Composição Fonte: Silva (2018) 11 Modelagem de Dados com uso de UML (Unified Modeling Language) Relacionamentos entre Classes Dependência A dependência entre classes indica que os objetos de uma classe usam serviços dos objetos de outra classe. Uma modificação em um objeto afeta o comportamento de outros objetos. Representada por uma linha tracejada com uma seta partindo do objeto cliente para o objeto fornecedor. Exemplo: O método (comportamento) saque depende de um objeto da classe Conta. Figura 8: Exemplo de Dependência Fonte: Silva (2018) 12 Modelagem de Dados com uso de UML (Unified Modeling Language) Relacionamentos entre Classes Generalização (Herança) É o relacionamento entre um elemento mais geral e um mais específico. Representada com uma linha sólida e uma seta triangular grande da subclasse para a superclasse. O elemento mais específico herda as propriedades e métodos do elemento mais geral. Em outras palavras, uma subclasse possui (herda) as características e comportamentos de sua superclasse. 13 Modelagem de Dados com uso de UML (Unified Modeling Language) Generalização (Herança) Figuras 8: Exemplos de Generalização (Herança) Fonte: Silva (2018) 14 Modelagem de Dados com uso de UML (Unified Modeling Language) Generalização (Herança) Figura 9: Exemplo de Generalização (Herança) Fonte: Werlich (2018) A classe Médico é a superclasse e suas duas classes filhas (Cardiologista e Anestesista) herdam os atributos e métodos dela (classe mãe). Isso significa que os atributos CRM, nome, CPF e dtnasc não precisam ser escritos nas classes filhas, pois serão herdados da superclasse. A classe Anestesista não possui nenhum atributo ou método além daqueles herdados, mas podemos definir os atributos e os métodos conforme necessário (mas precisamos criar a classe no diagrama). 15 Modelagem de Dados com uso de UML (Unified Modeling Language) Generalização e Especialização Figuras 10: Generalização e Especialização Fonte: Werlich (2018) 16 Modelagem de Dados com uso de UML (Unified Modeling Language) Generalização e Especialização em Diagramas de Entidade-Relacionamento Generalização – Especialização Exemplo: Tabela Generalizada Funcionário e Tabelas Especializadas chamadas Professor e Secretária. Nesse cenário as entidades Professor e Secretária possuem atributos da entidade Funcionário mais as suas específicas. A estrutura de generalização e especialização é representada pelo triângulo que une as entidades. Figura 11: Exemplo de Generalização-Especialização Fonte: Werlich (2018) 17 Modelagem de Dados com uso de UML (Unified Modeling Language) Generalização e Especialização em Diagramas de Entidade-Relacionamento Generalização – Especialização Parcial Exemplo: Uma generalização e especialização parcial, no exemplo com um “p” ao lado dotriângulo, indica que nem todo funcionário é professor ou secretária e neste caso não é toda ocorrência da entidade generalizada que possui uma entidade especializada correspondente. Figura 12: Exemplo de Generalização-Especialização Parcial Fonte: Werlich (2018) 18 Modelagem de Dados com uso de UML (Unified Modeling Language) Generalização e Especialização em Diagramas de Entidade-Relacionamento Generalização – Especialização Total Exemplo: Têm-se uma generalização e especialização total quando, para cada ocorrência da entidade generalizada existe obrigatoriamente uma existência da entidade especializada. No exemplo temos um “t” que indica a totalidade e uma seta dupla apontando para a entidade generalizada, indicando que obrigatoriamente um funcionário será ou professor ou secretária. Figura 13: Exemplo de Generalização-Especialização Total Fonte: Werlich (2018) 19 Modelagem de Dados com uso de UML (Unified Modeling Language) Exemplo Para uma determinada universidade é necessário guardar as informações das disciplinas ministradas por professores e quais as disciplinas que um determinado aluno cursa. Figura 14: Exemplo de Generalização-Especialização Fonte: Werlich (2018) 20 Modelagem de Dados com uso de UML (Unified Modeling Language) Exemplo Atributos das tabelas: Tabela Funcionário: nome, endereço, RG, CPF, data de nascimento, data de admissão, data de demissão, salário, nome da mãe e nome do pai. Tabela Professor: nome, endereço, RG, CPF, data de nascimento, nome da mãe, nome do pai, valor da hora da aula e quantidade de horas/aula. Tabela Aluno: nome, endereço, RG, CPF, data de nascimento, data de entrada faculdade, data de formatura, nome da mãe e nome do pai. Tabela Disciplina: código da disciplina, nome da disciplina, carga horária, ementa. 21 Modelagem de Dados com uso de UML (Unified Modeling Language) Exemplo Os atributos em amarelo da tabela anterior estão duplicados !!! Então cria-se uma tabela chamada Pessoa e nela insere-se os atributos em comum que se repetem nas Tabelas Funcionário, Professor e Aluno. A representação UML da Entidade-Relacionamento está na próxima página -------------------------------------- 22 Modelagem de Dados com uso de UML (Unified Modeling Language) Exemplo Figura 15: Representação UML da Entidade-Relacionamento do Exemplo Fonte: Werlich (2018) 23 Bibliografia CORONEL, C.; ROB, P. (2011). Sistema de banco de dados: projeto, implementação e administração. São Paulo: Cengage Learning. FOWLER, M.(2004). UML Essencial. Porto Alegre: Bookman. HEUSER, C. A. (2011). Projeto de Banco de Dados. 6. ed. Porto Alegre: Bookman. KORTH, H.F.; SILBERSCHATZ, A.; SUDARSHAN, S. (2012). Sistema de Banco de Dados. Rio de Janeiro: Elsevier. LASSALA, C. (2018). Programação Orientada a Objetos em .NET – Parte 2. Recuperado de https://www.devmedia.com.br/revista-msdn-magazine-edicao-11-programacao-orientada-a-objetos-em-net-parte-2/4260 PROFESSOR DIGITAL - BLOG (2019). Orientação a Objetos: Classe e objeto, propriedades e métodos https://www.luis.blog.br/orientacao-a-objetos-classe-e-objeto-propriedades-e-metodos.html SILVA, J.J. (2018). Diagrama de Classes – Análise Orientada a Objetos. Recuperado de https://player.slideplayer.com.br/11/3216355/# SOUZA, S.N.A. (2011). Conceitos de Sistemas de Gerenciamento de Banco de Dados (SGBD), Banco de Dados, Modelos de Dados e Modelo Entidade-Relacionamento. Escola Politécnica-USP: São Paulo. Recuperado de https://edisciplinas.usp.br/pluginfile.php/3243683/mod_resource/content/1/Aula%2011.pdf WEBER, E.J. (2018). Notação gráfica do diagrama de classes UML (resumido). Recuperado de https://www.researchgate.net/figure/Figura-2-Notacao-grafica-do-diagrama-de-classes-UML-resumido_fig1_268395653 WERLICH C. (2018). Modelagem de Dados. Londrina: Editora e Distribuidora Educacional S.A. Exercício 1 1) Ao instanciarmos um objeto de uma classe, criamos esses objetos na memória. Os objetos serão persistidos em algum banco de dados e por isso também precisam ser modelados de acordo com tais regras que estamos aprendendo. Para auxiliar nesse processo de modelagem de classe existe a Linguagem de Modelagem Unificada ou conforme mais utilizamos a sigla UML (Unified Modeling Language) que é uma ferramenta que auxilia na modelagem de sistemas orientados a objetos. A finalidade da UML é proporcionar uma padronização nos projetos de sistemas, abrangendo aspectos conceituais, como regras de negócios e artefatos concretos como as classes, escritas em linguagens de programação, esquemas de bando de dados e componentes de software reutilizáveis. A Linguagem UML, conforme Fowler (2004), comporta diversos diagrama. Sendo assim, observe a tabela a seguir e faça a associação do tipo de diagrama na coluna A com a descrição na coluna B. Exercício 1 COLUNA A COLUNA B I. Diagrama de Classes 1. demostra como na realidade as informações do objeto podem ficar armazenas na classe. II. Diagrama de Objetos 2. demonstra os componentes do software e seus relacionamentos, podem ser: bibliotecas, arquivos de ajuda, classes que podem ser anexadas ao software. III. Diagrama de Atividades 3. é o diagrama mais usado da Linguagem UML pois pode representar um conjunto de classes e seus relacionamentos. IV. Diagrama de Componentes 4. permite demonstrar a coleção de outros elementos de modelagem e diagramas, representar os subsistemas englobados por um sistema maior. V. Diagrama de Pacotes 5. Determina o fluxo de tarefas que podem ser executadas pelo software ou por um ator. . Exercício 1 Assinale a alternativa que apresenta a associação correta. Escolha uma: a. I – 3; II – 4; III – 2; IV – 1; V – 5. b. I – 3; II – 1; III – 4; IV – 2; V – 5. c. I – 5; II – 2; III – 4; IV – 1; V – 3. d. I – 5; II – 1; III – 1; IV – 2; V – 4. e. I – 3; II – 1; III – 5; IV – 2; V – 4. Exercício 2 2) Mizrahi (2008) afirma que na programação orientada a objetos podemos relacionar classes com outras classes através de hierarquias. Uma subclasse pode herdar as características de outra classe (neste caso seria a classe mãe ou superclasse). Na estrutura de herança, as classes compartilham as suas funções e características comuns e as subclasses podem receber outras particularidades exclusivas. Exercício 2 Considerando o contexto, avalie as afirmativas a seguir: I. As classes “Cardiologista” e “Anestesista” são filhas da superclasse “Médico”. V II. A classe “Anestesista” não contém nenhum atributo e método declarado, dessa maneira podemos afirmar que foi um erro do programador, pois obrigatoriamente essa classe filha teria que ter pelo menos um atributo ou método declarado. F – só terá algum atributo ou método a mais dependendo da situação real da modelagem III. A classe “Anestesista” está vazia, porém herda os atributos e os métodos da superclasse “Médico. V IV. A classe “Cardiologista” não herda os atributos e métodos da superclasse “Médico”, pois já tem seu próprio atributo e método. F – mesmo uma subclasse tendo seus próprios atributos e métodos, na relação de herança ela sempre herda os atributos e métodos da superclasse. Considerando o contexto apresentado, assinale a alternativa correta. a. Apenas as afirmativas I, II, e IV estão corretas. b. Apenas as afirmativas I e III estão corretas. c. Apenas as afirmativas II, III e IV estão corretas. d. Apenas as afirmativas I e II estão corretas. e. Apenas as afirmativas III e IV estão corretas. Exercício 3 3) Podemos agrupar as informações comuns de um objeto, surgindo então a classe. Uma classe pode ser classificada como uma entidade teórica usada para modelar um objeto. A classe deve ser exclusivamente criada para guardar informações de um determinado objeto. Uma classe é dividida em três partes: o nome da classe, os atributos e os seus métodos. Exercício 3 Observando a imagem do objeto carro, julgue as afirmativas a seguir em (V) Verdadeirasou (F) Falsas. (V) ano, modelo e placa são atributos da classe Carro. (F) Carro é um método do objeto. Carro é uma Classe (V) andar e frear são partes do método da classe Carro. (F) os atributos da classe Carro são andar e frear. Andar e frear são métodos (V) Carro é um objeto e, ao agrupar suas informações, temos a classe Carro com seus atributos e métodos. (F) os métodos da classe Carro são: ano, modelo e placa. Ano, modelo e placa são atributos. Assinale a alternativa que apresenta a sequência CORRETA. a. V - V - F - V - F - F b. V - V - V - F - F - F c. V - F - V - F - V - F d. F - V - F - V - F – V e. F - F - V - F - V - V. Exercício 4 4) A Linguagem de Modelagem Unificada ou UML (Unified Modeling Language) é uma ferramenta que auxilia na modelagem de sistemas orientados a objetos. Marque a afirmativa correta sobre a UML: a) Serve para a programação somente de banco de dados. b) É utilizada como um SGBD pelo fato de permitir a orientação a objetos. c) Permite padronizar projetos de sistemas orientados a objetos e de banco de dados. d) É uma linguagem de programação orientada a objetos reutilizável. e) É utilizada somente para a criação do modelo lógico de banco de dados de um SGBD. Resposta comentada: a finalidade da UML é proporcionar uma padronização nos projetos de sistemas, abrangendo aspectos conceituais, como regras de negócios, e artefatos concretos, como as classes, escritas em linguagens de programação, esquemas de banco de dados e componentes de software reutilizáveis. Exercício 5 5) Os atributos ou campos são características de determinadas classes ou entidades. Eles devem ter nomes apropriados ao sentido do que vão armazenar e um tipo de dados que deverá ser declarado, podendo ser: inteiro, caractere, decimal, entre outros. Assinale a alternativa correta referente à diferença entre classes e entidades. Uma classe é somente um conjunto de campos, exatamente igual as entidades dos modelos conceituais de banco de dados. b) Uma das vantagens da classe é possuir métodos que podem manipular os seus atributos, já as entidades possuem o objetivo de armazenar as informações em seus atributos. c) As classes e as entidades possuem métodos que permitem, de forma moderada, a alteração de seus atributos. d) Uma entidade possui a vantagem de ter métodos que podem ser utilizados para modificar os atributos da própria tabela, algo que em classe ainda não é permitido. e) Uma vez criados os atributos em classes ou em entidades, não é possível alterar o conteúdo armazenado, isto é, assim que o atributo for criado, recebe um valor e não pode mais ser alterado. Exercício 5 Resposta comentada: as entidades ou as tabelas possuem como característica básica serem compostas por atributos, com o objetivo de armazenar as informações para posterior recuperação. Já as classes permitem o armazenamento (na memória RAM) de seus atributos, porém, nas classes existem os métodos que são funções que podem realizar operações com os atributos da classe. Exercício 6 6) Um exemplo prático da utilização de UML em um diagrama de entidade relacionamentos é a aplicação da generalização e especialização, que nada mais é do que usar o conceito de herança no modelo lógico do banco de dados. Assinale a alternativa correta que mostra os tipos de generalização e especialização. a) Duplo e Simples. b) Composto e Unitário. c) Duplo e Isolado. d) Total e Parcial. e) Composto e Simples. Resposta comentada: uma estrutura de generalização e especialização pode ser classificada em Total ou Parcial. A generalização e especialização Parcial indica que não é toda ocorrência da entidade generalizada que possui uma entidade especializada correspondente. Podemos ter uma generalização e especialização total quando, a cada ocorrência da entidade generalizada, existir obrigatoriamente a entidade especializada.