Prévia do material em texto
ANÁLISE ORIENTADA A OBJETO Prof. Me. CRISTÓVAM EMÍLIO HERCULIANI Reitor Márcio Mesquita Serva Vice-reitora Profª. Regina Lúcia Ottaiano Losasso Serva Pró-Reitor Acadêmico Prof. José Roberto Marques de Castro Pró-reitora de Pesquisa, Pós-graduação e Ação Comunitária Profª. Drª. Fernanda Mesquita Serva Pró-reitor Administrativo Marco Antonio Teixeira Direção do Núcleo de Educação a Distância Paulo Pardo Edição de Arte, Diagramação, Design Gráfico B42 Design *Todos os gráficos, tabelas e esquemas são creditados à autoria, salvo quando indicada a referência. Informamos que é de inteira responsabilidade da autoria a emissão de conceitos. Nenhuma parte desta publicação poderá ser reproduzida por qualquer meio ou forma sem autorização. A violação dos direitos autorais é crime estabelecido pela Lei n.º 9.610/98 e punido pelo artigo 184 do Código Penal. Universidade de Marília Avenida Hygino Muzzy Filho, 1001 CEP 17.525–902- Marília-SP Imagens, ícones e capa: ©envato, ©pexels, ©pixabay, ©Twenty20 e ©wikimedia G915b Sobrenome, Nome autor Titulo Disciplina [livro eletrônico] / Nome completo autor. - Marília: Unimar, 2020. PDF (XXX p.) : il. color. ISBN XXX-XX-XXXXX-XX-X 1. palavra 2. palavra 3. palavra 4. palavra 5. palavra 6. palavra 7. palavra 8. palavra I. Título. CDD – 610.6952017 Introdução O desenvolvimento de softwares vem, há muito tempo, tentando encontrar meios que sejam eficientes e eficazes aos desenvolvedores e usuários. Elaborar um sistema é muito mais amplo do que elaborar alguns softwares, envolvem fatores extremamente complexos, como análise de requisitos, levantamento de prazos e custos, elaboração dos modelos lógicos e físicos do sistema, além de documentação, testes e manutenção. Bons estudos! 3 005 Aula 01: 016 Aula 02: 025 Aula 03: 037 Aula 04: 045 Aula 05: 053 Aula 06: 061 Aula 07: 068 Aula 08: 076 Aula 09: 087 Aula 10: 094 Aula 11: 101 Aula 12: 109 Aula 13: 117 Aula 14: 126 Aula 15: 134 Aula 16: Orientação a Objetos: Conceitos Fundamentais Análise Orientada a Objetos: Princípios de Orientação do Paradigma Diagrama de Casos de Uso: Conceitos Diagrama de Casos de Uso: Exercícios com Inclusão e Extensão Diagrama de Casos de Uso: Exercícios Com Especialização / Generalização Diagrama de Classes: Definições e Conceitos Diagrama de Classes: Agregação, Composição, Especialização/ Generalização e Classe Associativa Diagrama de Classes: Exercícios Diagrama de Sequência: Conceitos Diagrama de Sequência: Exercícios Diagrama de Sequência: Exercícios com Repetições e Autochamadas Diagrama de Comunicação (Colaboração) Diagrama de Estados: Conceitos Iniciais Diagrama de Estados: Conceitos Avançados Diagrama de Atividades: Conceitos Iniciais Diagrama de Atividades: Conceitos Avaçados 01 Orientação a Objetos: Conceitos Fundamentais 5 Introdução à Análise Orientada a Objetos (AOO) Antes dos anos de 1980, grande parte das empresas de software concebia seus sistemas sem nenhuma metodologia de desenvolvimento, utilizava suas técnicas próprias, cada uma de seu próprio modo. Desta forma, o conjunto de problemas encontrados era constante, como: as estimativas de prazos e custos eram imprecisas, a qualidade do software, muitas vezes, era inadequada, a manutenção do software era muito difícil, entre outros. Nessa época, surgiu a análise estrutura de sistema ou o paradigma clássico de desenvolvimento. Durante muito tempo, os ciclos de vidas de sistemas foram utilizados e, na medida em que o tempo foi passando, notou-se que estavam �cando aquém do esperado, tanto pelos desenvolvedores, quanto pelos usuários, principalmente, com a manutenção dos mesmos. Apesar de sucessos alcançados, houve uma grande quantidade de softwares entregues com atraso, acima do orçamento, com recursos a menos e até mesmo cancelados (Figura 1). 6 Figura 1: Resultados de mais de 9 mil projetos de desenvolvimento de software concluídos em 2004 Fonte: HAYES, 2004. Os paradigmas tradicional e de orientação a objetos mostram suas diferenças enquanto que, o maior fator ao sucesso limitado da análise estruturada de sistemas se deve ao fato de que as técnicas são orientadas ao processo (procedure), os atributos �cam em segundo plano, o processo (operações) é a parte central, enquanto na análise orientada a objeto, o componente fundamental é o OBJETO que combina estrutura e comportamento em uma única entidade. 7 Figura 2: Paradigma Tradicional x Paradigma Orientado ao Objeto Fonte: Booch, Rumbaugh e Jacobson, 2005. Os objetos, do ponto de vista do ser humano, são algo tangíveis e/ou visíveis, algo que possam ser intelectualmente entendidos e/ou aprendidos e são modelados como objetos da vida real, com estados e comportamentos. Todo objeto tem atributos e pode prestar algum tipo de serviço e, esses atributos e serviços são conhecidos como membros de dados e métodos, respectivamente. (Figura 3). 8 Figura 3: Representação de um objeto de software Fonte: Engholm Jr., 2010. Fonte: Engenharia de Software na Prática, Engholm Jr., 2010. Tudo que um objeto de software sabe (estado) e pode fazer (comportamento) é representado pelas variáveis e métodos do próprio objeto. Um objeto é representado por duas propriedades: atributos e métodos, desta forma, um objeto é uma coleção de atributos e métodos válidos para manipular os atributos. Em contraste com a análise estruturada de sistemas, a análise orientada a objeto considera importantes tanto os atributos quanto às operações. 9 Figura 4: Comparação da implementação de uma conta bancária usando (a) o paradigma clássico e (b) o paradigma de orientação a objetos Fonte: Schachs, S., 2010. 10 Uma conta bancária é um exemplo de objeto, conforme a Figura 5. Com relação ao paradigma clássico, um produto que lida com bancos teria de incorporar um atributo, o saldo da conta, e três operações, depósito, saque e determinar saldo. Já no paradigma de orientação a objetos, o componente de atributo do objeto é saldoDaConta. Existem as operações depositar dinheiro na conta, retirar dinheiro da conta e determinarSaldo, que podem ser realizadas sobre esse saldo bancário. O objeto conta bancária combina um atributo com as três operações realizadas sobre esse atributo em um único artefato. E, como um método é uma implementação de uma operação, na �gura 3 (b), se o cliente �zer um depósito de 100 reais, uma mensagem será enviada para o método depósito para incrementar 100 reais no atributo saldoDaConta. Tanto o método saque como depósito sabem como o saldoDaConta é implementado, sem a necessidade de nenhuma entidade externa ao objeto ter esse conhecimento, assim sendo, o paradigma de orientação a objetos demonstra esse ponto forte, que os detalhes da implementação são locais para um objeto. A Análise de Orientação a Objetos representa uma mudança radical na maneira de se desenvolver sistemas em relação ao Paradigma Tradicional ou Estrutural, permitindo um melhor gerenciamento da complexidade destes sistemas. Um grande fator da orientação a objetos é a REUSABILIDADE. Estamos reutilizando códigos de programas desde o início da computação. As técnicas de orientação a objetos nos permitem muito mais que a reutilização de códigos, podemos reutilizar requisitos, análise, projeto, planejamento de testes, interfaces de usuário e arquiteturas, ou seja, todos os componentes de engenharia de software podem ser encapsulados como reutilizáveis. Segundo Booch (2005), a orientação a objetos possui as seguintes vantagens: desenvolvimento mais rápido; maior facilidade de manutenção; maior facilidade de extensão e evolução do sistema; melhor aproveitamento do potencial das linguagens O.O.; possibilidade de reúso (não só o código fonte, mas também os modelos de análise e projeto); diminuição dos riscos inerentes à construção de sistemas complexos; envolvimento de conceitos que são naturais aos seres humanos (apelativos à cognição do ser humano). 11 Fonte: Aprenda Programação Orientada a Objetos em 21 Dias. AnáliseOrientada a Objetos é um processo que usa uma estratégia orientada a objetos para ajudá-lo a entender o problema que está tentando resolver. No �nal da análise, você deverá entender o domínio do problema e seus requisitos em termos de classes e interações de objetos. O Processo de Desenvol�mento do So�ware A forma de construção de um software depende de diversos fatores, como: do conhecimento do negócio a ser modelado; do conhecimento da tecnologia que será utilizada, por parte de quem fará a construção; da capacidade de abstração do principal interessado no software; da capacidade de abstração de quem construirá o software; e do volume de dinheiro dedicado à aquisição de softwares de autoria, banco de dados, ferramentas de desenvolvimento, hardware e terceiros, como provedores de acesso e data centers. Seguindo esse raciocínio, foram criadas diversas formas de desenvolvimento, mas na verdade, uma equipe de desenvolvimento de software precisa de uma estratégia uni�cada para desenvolver. Assim, as metodologias de desenvolvimento de software de�nem uma maneira comum de realizar. Uma metodologia de desenvolvimento é um fator-chave para um projeto de desenvolvimento. Ela é um conjunto de regras e padrões que orientam a abordagem utilizada em todas as tarefas associadas com o ciclo de vida do desenvolvimento de sistemas. 12 Introdução à U.M.L. (Unified Modeling Language) Existem diversos processos de desenvolvimento de software, a UML não é um processo, e sim, a forma de comunicação que um processo pode utilizar. A UML (Uni�ed Modeling Language ou Linguagem para Modelagem Uni�cada) é uma linguagem visual utilizada para modelar sistemas computacionais por meio de paradigma de Orientação a Objetos. Esta linguagem tornou-se, nos últimos anos, a linguagem padrão de modelagem de software adotada internacionalmente pela indústria de Engenharia de Software. A UML não nos indica como devemos fazer um software. Indica apenas as formas que podem ser utilizadas para representar um software em diversos estágios de desenvolvimento. Utilizando a UML, conseguimos “pensar” um software em um local e codi�cá-lo em outro. É uma forma de comunicar ideia. O “L” de Language refere-se a uma linguagem de comunicação entre duas partes e não a uma linguagem de computador. A UML resultou de um esforço conjunto de três autores e da aceitação da OMG (Object Management Group): Grady Booch, Jim Rumbaugh e Ivar Jacobson, nos anos 1990. 13 Figura 5: Como iniciou a criação da UML Fonte: Booch, Rumbaugh e Jacobson, 2005. A UML é uma linguagem de modelagem, cujo objetivo é auxiliar os engenheiros de software a de�nirem as características do software, tais como: seus requisitos; seu comportamento; sua estrutura lógica; a dinâmica dos processos e suas necessidades físicas em relação ao equipamento sobre qual sistema deverá ser implantado. Tais características devem ser de�nidas antes de o software começar a ser realmente desenvolvido. 14 Um desenvolvedor de sistemas busca uma modelagem orientada a objetos, porque tem uma diminuição do tempo e do custo de desenvolvimento, um aumento do atendimento da demanda gerada pela evolução tecnológica como celular, palm, eletrodomésticos, etc., e a reutilização de código e facilidade de manutenção. 15 02 Análise Orientada a Objetos: Princípios de Orientação do Paradigma 16 Como vimos no capítulo anterior, a UML (Uni�ed Modeling Language) é uma linguagem visual utilizada para modelagem de sistemas por meio do paradigma de orientação a objetos. Para isso, antes, devemos conhecer alguns conceitos importantes de Orientação a Objetos e o Ciclo de Vida do Software no Modelo Uni�cado. Abstração A abstração caracteriza as propriedades essenciais de um objeto que vai fazer a diferença dos outros objetos. Ela permite agrupar entidades associadas por propriedades comuns, representando as propriedades dos objetos sem referenciar detalhes de implementação. Podemos dizer também que são as características essenciais resultantes de alguma coisa. As abordagens de desenvolvimentos tradicionais materializam esta ideia pelas abstrações funcionais (processos), enquanto que os métodos orientados a objetos utilizam os próprios objetos. Fonte: Disponível aqui A abstração é a habilidade e a capacidade de se modelar conceitos, entidades, elementos, problemas e características do mundo real, de um domínio do problema em questão, levando-se em conta apenas os detalhes importantes para a resolução do problema e desprezando coisas que não têm importância no contexto. 17 http://leandromtr.com/pilares-da-orientacao-a-objetos/ Figura 6: Encapsulamento Fonte: o autor. Encapsulamento Nesse paradigma de orientação a objeto, o acesso aos dados dos objetos só pode acontecer pelos métodos dos próprios objetos (membros de dados privados), dando a garantia da manipulação adequada dos mesmos e utilização das regras implementadas, de�nindo o primeiro princípio do paradigma, o encapsulamento, que também é conhecido como ocultação de informações. Podemos dizer também que é um mecanismo usado para ocultar os dados, a estrutura interna e os detalhes da implementação de algum elemento, como um objeto ou subsistema. Na verdade, o encapsulamento é o mecanismo utilizado que disponibiliza métodos que trabalham sobre os dados e que protegem o acesso direto indevido aos atributos de uma instância, que estão fora da classe onde estes foram declarados. 18 Fonte: Disponível aqui Encapsulamento é a técnica que faz com que detalhes internos do funcionamento dos métodos de uma classe permaneçam ocultos para os objetos. Por conta dessa técnica, o conhecimento a respeito da implementação interna da classe é desnecessário do ponto de vista do objeto, uma vez que isso passa a ser responsabilidade dos métodos internos da classe. Neste artigo, vocês verão o conceito de Encapsulamento em Programação Orientada a Objetos. Herança Em se tratando de Orientação a Objetos, a função da Herança é permitir criar novas classes a partir de classes já existentes, aproveitando-se das características da classe a ser estendida. Desta forma, é possível criar classes derivadas (subclasses) a partir de classes bases (superclasses). Enquanto que as superclasses são mais genéricas, as subclasses são mais especializadas. As subclasses vão herdar todas as características de suas superclasses, como seus atributos e métodos. Vamos imaginar que dentro de uma faculdade temos muitos funcionários, sendo que estes são divididos em pessoal administrativo e docente. Todos são funcionários da faculdade, porém, cada um com um cargo diferente. Tanto a secretária, o auxiliar administrativo, o professor possuem um número de identi�cação, um nome, um endereço, além de salário e diversas outras características em comum. Essas características em comum podem ser reunidas em um tipo de classe em comum (Funcionário), e cada nível da hierarquia ser tratado como um novo tipo (Docente e 19 https://www.devmedia.com.br/conceitos-encapsulamento-programacao-orientada-a-objetos/18702 Figura 7: Herança Fonte: O autor. Administrativo), mas aproveitando-se dos tipos já criados, através da herança. Este mecanismo é muito interessante, pois promove um grande reúso e reaproveitamento de código existente. As subclasses, além de herdarem todas as características da superclasse, também podem adicionar mais atributos e/ou métodos, bem como reescrever métodos já existentes na superclasse (polimor�smo). 20 Fonte: Disponível aqui Na Orientação a Objetos, as palavras: classe base, supertipo, superclasse, classe pai e classe mãe são sinônimos, bem como, as palavras classe derivada, subtipo, subclasse e classe �lha também são sinônimos. Polimorfismo O termo Polimor�smo signi�ca várias formas, em Orientação a Objetos, ele caracteriza uma situação na qual um objeto pode se comportar de diversas maneiras diferentes ao receber uma mensagem, dependendo do seu tipo de criação. Polimor�smo é possível na presença de herança, quando são implementados métodos de mesma identi�caçãona superclasse e subclasses e, necessariamente, realizando alterações (reescrevendo) nos métodos das subclasses para atender às suas particularidades. Duas subclasses de uma mesma classe podem ter implementações totalmente diferentes de um mesmo método, fazendo com que os objetos se comportem de maneira diferente, dependendo do seu tipo (classe). Vamos imaginar um programa que faça a ligação por meio de uma classe chamada Telefone, que é uma interface de acesso às funcionalidades do telefone utilizado. Um telefone �xo tem um mecanismo de ligação diferente de um telefone celular. Ele manda uma mensagem simples para ligar para o Telefone, assim, o modo como o Telefone liga vai variar de acordo com o tipo de telefone utilizado, isto é, são formas diferentes para a mesma mensagem de ligar. 21 http://leandromtr.com/pilares-da-orientacao-a-objetos/ Figura 8: Polimor�smo Fonte: o autor. Fonte: Disponível aqui Uma observação importante é dizer que as únicas partes de um programa que requerem modi�cações são aquelas partes que exigem conhecimento direto da classe particular que é adicionada à hierarquia. 22 https://wiki.sj.ifsc.edu.br/images/e/e2/Heran%C3%A7a20151.pdf Figura 9: Ciclo de Vida do Software no Modelo Uni�cado Fonte: Ko�man, Wolfgang, 2008. Ciclo de Vida do So�ware no Modelo Unificado Como já é sabido, o Ciclo de Vida Clássico não é muito funcional na prática devido a diversos fatores. Desta forma, surgiu o Modelo Uni�cado que tem como ideia desenvolver o software em ciclos, onde cada ciclo é uma miniversão do modelo em cascata, com intensidade variada na ênfase das diferentes etapas de um dado ciclo. No �nal de cada ciclo, há uma revisão com os usuários para conseguir um feedback, que será levado em consideração no próximo ciclo. 23 Um exemplo de um modelo desse tipo é o Modelo Unificado, ilustrado na Figura 9. Os ciclos, denominados fases e iterações, aparecem no eixo horizontal; e as atividades, denominadas fluxos de trabalho, aparecem no eixo vertical. As quatro fases são: concepção, elaboração, construção e transição (mudança para o novo sistema). O tempo transcorre no eixo horizontal da iteração 1 à iteração n, e cada iteração é uma minicascata. As cinco atividades são as mesmas do modelo em cascata simples. As áreas sombreadas sob as curvas próximas a cada atividade têm por objetivo mostrar a quantidade de esforço despendido em cada atividade durante cada iteração. Por exemplo, durante a fase de concepção (iterações 1 e 2), a maior parte dos esforços é dedicada à especificação de requisitos. Na verdade, especificação de requisitos é a única atividade realizada durante a iteração 1. Durante a iteração 2, alguns esforços são igualmente dedicados à análise, com uma pequena quantidade ao projeto e à implementação. À medida que se encaminham para a fase de elaboração, os desenvolvedores do software continuam a trabalhar nos requisitos e na análise, mas começam igualmente a dedicar mais tempo ao projeto e à implementação, particularmente mais próximo ao final da fase de elaboração. Na fase de construção, a especificação de requisitos e a análise das atividades são completadas, e a maior parte dos esforços é dedicada ao projeto e implementação. O diagrama mostra igualmente que algum tempo é dedicado ao teste durante todas as fases após a concepção, mas a maior parte do tempo dedicado ao teste é durante as fases de construção e transição (KOFFMAN, 2008, cap.1). Até a próxima aula! 24 03 Diagrama de Casos de Uso: Conceitos 25 O Diagrama de Casos de Uso (D.C.U.) tem o objetivo de ilustrar em um nível alto de abstração, quais elementos externos interagem com que funcionalidades do sistema. Dentre todos os diagramas, o U.M.L. é o mais abstrato, desta forma, o mais �exível e informal. Ele é utilizado na fase inicial de modelagem, durante o levantamento dos requisitos do sistema. Importante destacar, que serve de base para a modelagem de outros diagramas U.M.L. Este diagrama apresenta uma visão externa geral das funções e serviços que o sistema irá oferecer aos usuários, sem se preocupar como essas funções serão implementadas. Ele ajuda na especi�cação, visualização e documentação das características, funções e serviços do sistema que os usuários desejam. O D.C.U. identi�ca todos os usuários que irão interagir com o sistema, quais seus papéis e funções especí�cas. É recomendado e muito útil a apresentação do Diagrama de Casos de Uso aos usuários nas reuniões iniciais, como uma forma de demonstrar o comportamento de todo o sistema, facilitando o entendimento por parte dos mesmos e enxergar possíveis falhas na especi�cação do sistema pelo analista, pois trata-se de um diagrama bem informal e de fácil compreensão. Nesse sentido, a �nalidade de um D.C.U. é apresentar um tipo de “diagrama de contexto” que apresenta os elementos externos de um sistema e as maneiras, segundo as quais eles as utilizam. Fonte: Disponível aqui Os Diagramas de Casos de Uso são compostos basicamente por quatro partes: Cenário, que é a sequência de eventos que acontecem quando um usuário interage com o sistema; Ator, que é o Usuário do sistema, ou melhor, um tipo de usuário; Use Case, que é uma tarefa ou uma funcionalidade realizada pelo ator (usuário) e Comunicação, que é o que liga um ator com um caso de uso. 26 https://www.devmedia.com.br/o-que-e-uml-e-diagramas-de-caso-de-uso-introducao-pratica-a-uml/23408 Figura 10: Atores do Diagrama de Casos de Uso Fonte: o autor. Atores Os atores são os usuários do sistema, representam os papéis desempenhados pelos mesmos, a forma como irão interagir e utilizar seus serviços e funções. Um Ator pode ser representado por uma pessoa, outro sistema que forneça e/ou receba informação desse sistema, ou até mesmo um hardware especial, isto é, tudo que interage com o sistema fornecendo e/ou recebendo informações é um ator (Figura 10). Ele é representado por um boneco com sua descrição abaixo, que dependendo do software utilizado, tem seu formato. 27 Figura 11: Casos de Uso Fonte: o autor. Casos de Uso Os Casos de Uso são as funções, tarefas e serviços que os usuários podem utilizar para desempenhar seus trabalhos. Eles são usados para expressar e documentar os comportamentos pretendidos para as funções do sistema. Basicamente, os casos de uso estão associados aos requisitos funcionais do sistema. Eles são representados por uma elipse e em seu interior um texto que descreve a função exercida. Os Casos de Uso devem ser documentados para fornecer informações de como será seu funcionamento, as ações (atividades) que serão executadas, que Atores participarão, que possíveis restrições, condições, entre outros. 28 Documentação de Casos de Uso A documentação de Casos de Uso tem como objetivo principal fornecer ao usuário um relatório que explique o comportamento pretendido para determinado Casos de Uso, demonstrando quais funções ele executará quando for solicitado (Quadro 1). Ele também auxilia na construção de outros diagramas U.M.L. que são construídos a partir do Diagrama de Casos de Uso. Não tem um formato o�cial/especí�co para a documentação de Casos de Uso, a documentação deve conter a função do Casos de Uso, quais Atores estão envolvidos, as etapas que devem ser executadas pelo ator e pelo sistema, quais restrições/validações deve possuir, se possui pré-condições ou pós-condições, isto é, deve ser um documento �exível que esclareça da melhor forma possível o Caso de Uso. 29 Quadro 1: Documentação do Caso de Uso de Pedido de Compra Nome do Caso de Uso Pedido de Compra Ator Principal Cliente Ator(es) Secundário(s) Vendedor Resumo Este caso de uso descreve as etapas de um Cliente realizando um pedido de compra para um Vendedor. Pré-condições O Cliente precisa ser cadastrado. Pós-condições O pedido será encaminhado no e-mail do cliente. Ações do Ator Ações do Sistema 1. Fazer o pedido 2. Consultar se o cliente é cadastrado. 3. Se cliente não cadastrado, fazer cadastro. 4. Consultar estoque do produto. 5. Se produtosem estoque, emitir aviso. 5. Se produto com estoque, cadastrar pedido. 6. Atualizar estoque do produto. 30 Fonte: o autor. 7. Con�rmar pedido. 8. Emitir pedido ao Cliente. Restrições/Validações O pedido somente será con�rmado se o produto existir no estoque. O valor mínimo de um pedido é de R$100,00. Relacionamentos nos Casos de Uso As alternativas possíveis entre relacionamentos entre atores e casos de uso em um diagrama de casos de uso podem ser descritas assim: Quadro 2: Relacionamentos dos Componentes dos Casos de Uso Fonte: o autor. Entre atores Entre casos de uso Entre ator e caso de uso Comunicação X Inclusão X Extensão X Especialização/Generalização X X 31 Figura 12: Associação entre Ator e Caso de Uso Fonte: o autor. Associações As Associações podem acontecer de diversas formas nos diagramas de casos de uso, elas representam os relacionamentos entre Atores, entre Atores e Casos de Uso, e entre Casos de Uso. Cada um tem um tipo especial de relacionamento como é demonstrado no quadro. Uma associação (comunicação) entre um Ator e um Caso de Uso demonstra que o ator se utiliza da função especí�ca do sistema representado pelo caso de uso, seja requisitando a execução, seja recebendo o resultado produzido. Ela é representada por uma reta fazendo a ligação entre ambos, como é demonstrado na Figura 12. Inclusão O Relacionamento de Inclusão indica uma obrigatoriedade, isto é, quando o caso de uso é executado, outro caso de uso precisará ser também, como se fosse a chamada de uma sub-rotina ou função de uma linguagem de programação (Figura 13). Ela é representada por uma seta tracejada com um nome (<<include>> ou <<incluir>> ou <<use>>, depende do software que está utilizando) e com um ponteiro indicando o caso de uso que será também realizado. 32 Figura 13: Relacionamento de Inclusão Fonte: o autor. A Figura 9 demonstra que sempre que uma venda é realizada, deve-se emitir uma nota �scal. O Caso de Uso Emitir Nota Fiscal será sempre realizado quando o Caso de Uso Realizar Venda for executado. Extensão O Relacionamento de Extensão descreve cenários opcionais de um Caso de Uso, isto é, somente ocorrerá em uma situação especí�ca, “se” uma determinada condição for satisfeita. Esse tipo de relacionamento representa eventos (ações) que não ocorrem sempre, desta forma, vão depender sempre de uma condição ser satisfeita. Ela é representada por uma seta tracejada com um nome (<<extend>> ou <<extender>>) e com um ponteiro indicando para o caso de uso que utiliza o caso de uso estendido (contrário ao de inclusão). 33 Figura 14: Relacionamento de Extensão Fonte: o autor. A Figura 14 demonstra que quando uma venda for realizada, poderá ser chamada de Caso de Uso Cadastrar Cliente, se o cliente não for cadastrado. Especialização/Generalização Este tipo de relacionamento acontece quando temos dois ou mais Casos de Uso com características semelhantes, com apenas algumas diferenças entre si. Quando isso ocorre, deve-se criar um Caso de Uso Geral que de�ne as características em comum que serão herdadas por todos os casos de uso envolvidos com o mesmo e estes casos de uso especializados/generalizados, além dos requisitos herdados possuem também seus próprios requisitos particulares. Ela é representada por uma reta inteira mais grossa com a seta apontada para o Caso de Uso Geral. 34 Figura 15: Relacionamento de Especialização/Generalização Fonte: o autor. O Caso de Uso receber pagamento tem suas especi�cidades que os casos de usos especializados herdam, mas alguns requisitos próprios de cada um deles pertencem somente a eles, o que justi�ca colocá-los em casos de uso especializados, detalhando suas particularidades. Este tipo de relacionamento também pode ser aplicado nos Atores dos Casos de Uso. Tudo que o Ator Geral faz, os atores especializados podem também fazer, já quando quisermos que apenas Ator Especializado faça determinada ação, a associação terá que sair dele. 35 Figura 16: Relacionamento de Especialização/Generalização Fonte: o autor. Ficamos por aqui, até a aula que vem! 36 04 Diagrama de Casos de Uso: Exercícios com Inclusão e Extensão 37 Neste capítulo, vamos nos dedicar somente a exercícios de Casos de Uso, envolvendo os relacionamentos de Inclusão e Extensão. Os exercícios podem ser realizados por qualquer software de sua preferência ou até mesmo em uma folha de papel. Os diagramas expostos aqui utilizarão o software Visio Professional da Microsoft 2019. Nesta seção, apresentaremos três exemplos de Diagrama de Casos de Uso, sendo o primeiro um Controle de um Negócio Comercial, o segundo de uma Clínica Veterinária, e o terceiro de um Sistema de Saúde Municipal. Exemplos de Diagramas de Casos de Uso com Inclusão e Extensão 1. Desenvolva o Diagrama Caso de Uso para um Controle de um Negócio Comercial, levando em conta os requisitos já identi�cados para os atores envolvidos: Requisitos do Gerente Comercial Estabelecer limites. Requisitos do Sistema de Contabilidade Atualizar contas. Requisitos do Analista Comercial Analisar riscos com a necessidade de avaliar negócio. Fechar preço juntamente com a participação do Vendedor e a necessidade também de avaliar negócio. Registrar negócio juntamente com a participação do Vendedor e com a opção de realizar negócio com limites excedidos. 38 Figura 17: Caso de Uso Controle de Negócios Fonte: o autor. 2. Desenvolva o Diagrama Caso de Uso para uma Clínica Veterinária levando em conta os requisitos já identi�cados para os atores envolvidos: Requisitos da Secretária Cadastrar cliente. Cadastrar animal. Cadastrar veterinário. Requisitos do Cliente Marcar consulta com a Secretária. Se o Cliente e/ou o animal não forem cadastrados, os cadastros devem ser realizados. 39 Figura 18: Caso de Uso de Clínica Veterinária Fonte: o autor. Requisitos do Veterinário Realizar consulta com a participação do Cliente. É necessário registrar a consulta. Na consulta, pode haver a necessidade de realizar exames. Ao analisar o exercício 2, percebemos que quando um Cliente marca uma consulta com a secretária, pode haver a necessidade de “cadastrar o cliente” e/ou “o animal” se os mesmos não forem cadastrados (extensão), desta forma, são casos de uso que somente acontecerão se a condição for satisfeita. O mesmo ocorre com o caso de uso 40 “marcar exames”, ele só será executado se for necessário na “realização da consulta”. Toda vez que o caso de uso “realizar consulta” acontecer, será necessário “registrar a consulta”, pois é uma obrigação a ser feita (inclusão). 3. Desenvolva o Diagrama Caso de Uso para uma Secretaria Municipal de Saúde levando em conta a descrição a seguir: Uma Prefeitura Municipal, através do Secretário Municipal de Saúde, cadastra todos os médicos que se dispõem a trabalhar no serviço público de saúde do município com a participação do Médico. A prefeitura possui diversas unidades de atendimento (hospitais, postos de saúde, ambulatórios médicos, etc.) e o Secretário Municipal de Saúde também mantém o cadastro destas unidades. Os cidadãos que desejam ter acesso ao atendimento do sistema público do município são cadastrados pelos funcionários das unidades de atendimento previamente com sua participação. O Cidadão pode agendar consultas médicas em qualquer unidade de atendimento com o Funcionário da unidade de atendimento. Mensalmente, o Secretário Municipal de Saúde estabelece uma escala de médicos para cada unidade de atendimento e envia a eles. A qualquer momento, o Secretário Municipal de Saúde pode extrair relatórios com indicadores do funcionamento do sistema. Diariamente, os funcionários das unidades de atendimento listam as consultas médicas agendadas para cada médico e envia a eles. Em todas as ações do Funcionário da unidade de atendimento terá que ser feito o login. 41 Figura 19: Caso de Uso de Saúde Municipal Fonte: o autor. Ao analisar o exercício 3, percebemos que sempre que o Funcionário for realizar uma ação, ele teráque fazer seu login obrigatoriamente (inclusão). 42 Lembre-se de que o relacionamento de inclusão é um caso de uso obrigatório de ser executado quando outro caso de uso foi acionado, e um caso de uso extensivo depende de uma condição para ser executado. Exercícios de Diagramas de Casos de Uso com Inclusão e Extensão 4. Desenvolva um Diagrama de Caso de Uso para um Sistema de Matrícula em um Curso, a partir dos requisitos já identi�cados para cada ator envolvido: Requisitos do Atendente Cadastrar curso. Realizar matrícula no curso com a participação do aluno. Com a realização da matrícula será obrigado a fazer o cadastro do aluno, o registro da matrícula e a geração do boleto que será entregue ao aluno. O Atendente que fará o cadastro do aluno. Gerar certi�cado, que será entregue ao aluno. Requisitos do Aluno Além das já citadas com o Atendente, terá que pagar a mensalidade, que será obrigatório ser registrada. 5. Desenvolva um Diagrama de Caso de Uso para um Sistema de Hospedagem em um Hotel a partir dos requisitos já identi�cados para cada ator envolvido: 43 Requisitos do Atendente Manter quartos. Manter serviços. Fazer a reserva com a participação do Hóspede. Na reserva, se necessário, será feito o cadastro do hóspede se o mesmo não for cadastrado. Requisitos do Hóspede Além da reserva com o atendente, terá que solicitar serviço, que será obrigatório o registro do movimento. Pagar conta, também tem que registrar o movimento. 6. Desenvolva um Diagrama de Caso de Uso para um Sistema de Estacionamento a partir dos requisitos já identi�cados para cada ator envolvido: Requisitos do Atendente Registrar entrada. Toda vez que acontecer a entrada será obrigado cadastrar o veículo e gerar um ticket impresso que será entregue ao Cliente. Registrar saída. Toda vez que houver a saída será obrigatório gerar a fatura ao Cliente. A geração da fatura implicará obrigatoriamente a consulta de preços. Manter promoções. Requisitos do Gerente Cadastrar parcerias. Manter tabela de preços. Gerar relatório de faturamento. Desta forma, será obrigado a calcular o faturamento. Requisitos do Cliente Pagar fatura com a participação do Atendente. 7. Desenvolva o Diagrama Caso de Uso para uma empresa de Organização de Eventos levando em conta a descrição a seguir: Uma empresa de organização de eventos gerencia seus compromissos da forma descrita a seguir. Os Clientes são cadastrados pelo Representante da Empresa, que também cadastra o evento que deseja que seja organizado. Na hora de cadastrar um evento, se necessário, deve atualizar os dados do cliente. Desta forma, inicia-se um processo de divulgação do evento pelo Representante da Empresa, assim, terá que emitir uma mala direta aos clientes. O Representante emite relatórios de providências a serem tomadas, à medida que se aproxima o evento. Após a realização do evento, o Representante, se desejar, faz o balanço, para sua apuração de custos e lucro. 44 05 Diagrama de Casos de Uso: Exercícios Com Especialização / Generalização 45 Neste capítulo, vamos nos dedicar a exercícios de Casos de Uso completos, envolvendo além dos relacionamentos de Inclusão e Extensão, também de Especialização/Generalização. Nesta seção, apresentaremos, novamente, dois dos exemplos do capítulo anterior de Diagrama de Casos de Uso, o de Controle de um Negócio Comercial e o de Clínica Veterinária com os acréscimos de especialização/generalização. Exemplos de Diagramas de Casos de Uso com Especialização / Generalização 1. Desenvolva o Diagrama Caso de Uso para um Controle de um Negócio Comercial levando em conta os requisitos já identificados para os atores envolvidos: Requisitos do Gerente Comercial Estabelecer limites. Requisitos do Sistema de Contabilidade Atualizar contas. Requisitos do Analista Comercial Analisar riscos com a necessidade de avaliar negócio. Fechar preço juntamente com a participação do Vendedor e a necessidade também de avaliar negócio. O fechamento do preço poderá ser à vista ou a prazo. Registrar negócio juntamente com a participação do Vendedor e com a opção de realizar negócio com limites excedidos. Obs.: O Gerente pode realizar todas as ações do Analista Comercial. 46 Figura 20: Caso de Uso de Controle de Negócio Comercial Fonte: o autor. Ao analisar o exercício 1, no que se refere à especialização/generalização, o “fechar preço à vista” e o “fechar preço a prazo” possuem todas as características do “fechar preço”, mas possuem algumas características e requisitos próprios, o que justifica colocá-las como especializações do caso e uso “fechar preço”. A mesma coisa acontece com a especialização/generalização entre Atores, em que o “Gerente” herda todas as ações do Analista Comercial, isto é, ele poderá realizar todas as operações que o Analista Comercial executa. 47 2. Desenvolva o Diagrama Caso de Uso para uma Clínica Veterinária levando em conta os requisitos já identificados para os atores envolvidos: Requisitos da Secretária Cadastrar cliente. Cadastrar animal. Cadastrar veterinário. Receber pagamento com a participação do Cliente. O pagamento poderá ser em dinheiro ou cartão. Requisitos do Cliente Marcar consulta com a Secretária. Se o Cliente e/ou o animal não forem cadastrados, os cadastros devem ser realizados. Requisitos do Veterinário Realizar consulta com a participação do Cliente. É necessário registrar a consulta. Pode na consulta haver a necessidade de realizar exames. O Veterinário pode realizar todas as operações da Secretária. 48 Figura 21: Controle de uma Clínica Veterinária Fonte: adaptado de Guedes, 2008. Analisando o exercício 2, no que se refere à especialização/generalização, o “receber pagamento em dinheiro” e o “receber pagamento no cartão” possuem todas as características do “receber pagamento”, mas possuem algumas características e requisitos próprios, o que justifica colocá-las como especializações do caso de uso “receber pagamento”. A mesma coisa acontece com a especialização/generalização entre Atores, em que o “Veterinário” herda todas as ações da “Secretária”, isto é, ele poderá realizar todas as operações que a Secretária executa. 49 Lembre-se de que a estrutura de um Caso de Uso generalizado é herdada pelo Caso de Uso especializado. Exercícios de Diagramas de Casos de Uso com Especialização / Generalização 3. Desenvolva o Diagrama Caso de Uso para um Clube Social, levando em conta os requisitos já identificados para os atores envolvidos: Requisitos do Candidato Apresentar pedido. Requisitos do Clube Associar o sócio com a participação do Sócio. Se o sócio tiver dependentes, deve- se associar os dependentes. Gerar mensalidade. Requisitos do Sócio Fazer matrícula em atividades. Quitar mensalidade com a participação do Clube. É derivado a partir do Candidato. 50 4. Desenvolva o Diagrama Caso de Uso para um Restaurante levando em conta os requisitos já identificados para os atores envolvidos: Requisitos do Gerente Cadastrar mesas. Cadastrar menu. Cadastrar garçons com a participação do Garçom. Gerar histórico de movimento diário. Requisitos do Garçom Abrir conta com a obrigação de registrar movimento. Solicitar pedido com a participação do Cliente e com a obrigação de registrar movimento. Emitir conta ao Cliente. Fazer pagamento da conta com o Registro do movimento e com a participação do Cliente. O pagamento poderá ser em dinheiro, em cheque ou no cartão. Emitir nota fiscal ao Cliente. Requisitos do Cliente Todos feitos com o Garçom citados anteriormente. Obs.: O Gerente pode fazer todas as funções do Garçom. 5. Desenvolva o Diagrama Caso de Uso para um Consultório Dentário levando em conta os requisitos já identificados para os atores envolvidos: Requisitos da Secretária Marcar consulta com o Paciente. Se o paciente não for cadastrado será feito seu cadastro. Cadastrar paciente. Cadastrar dentista. Receber pagamento com a participação do Paciente. O pagamento pode ser feito em dinheiro ou cartão e o cartão pode ser no débito ou no crédito. No pagamentoserá emitido um recibo ao Paciente. Requisitos do Dentista Realizar consulta, com a obrigação de registrar histórico. Pode na consulta haver a necessidade de marcar exames. Registrar histórico. Cadastrar orçamento e emitir ao Paciente. 51 Requisitos do Paciente Todos os casos já citados com a Secretária. 52 06 Diagrama de Classes: Definições e Conceitos 53 Dentro da UML, o Diagrama de Classes é o mais importante e utilizado, possui muitas semelhanças com o antigo Modelo Entidade-Relacionamento (MER) utilizado para definir as estruturas das tabelas em bancos de dados relacionais. Ele foi criado para ser uma evolução do Modelo Entidade-Relacionamento e para modelar a estrutura lógica das tabelas de um banco de dados. Em um MER, além dos relacionamentos, eram definidos apenas os dados, que no Diagrama de Classes são representados pelos atributos e, ainda, possibilita definir as operações que irão executar nas tabelas pelos métodos. O Diagrama e Classes permite a visualização das classes que vão compor o sistema com seus respectivos atributos e métodos, bem como demonstrar como as classes do diagrama se relacionam, complementam e transmitem informações entre si (GUEDES, 2008 p. 75). O Diagrama de Classes serve como base para a construção de outros diagramas UML. Basicamente, o Diagrama de Classes é formado por suas classes e pelas associações existentes entre elas, isto é, os relacionamentos entre as classes. Em Programação Orientada a Objeto os problemas de programação são pensados em termos de objetos, nada de funções e rotinas, o assunto são os objetos, propriedades e métodos. Objetos - Classes - Atributos - Métodos Um Objeto representa uma abstração de alguma coisa do nosso domínio do problema que retém e interage informações do sistema. Todo objeto possui atributos e pode prestar algum tipo de serviço. Uma classe possui atributos, isto é, armazena os dados dos objetos e, também os métodos, que são as instâncias que uma classe pode executar. 54 Figura 22: Objetos, Classes e Atributos Fonte: o autor. Uma classe descreve como certos tipos de objetos se parecem do ponto de vista da programação, pois quando definimos uma classe, precisamos definir duas coisas: Atributos, que são Informações específicas relacionadas a uma classe de objeto. São as características dos objetos que as classes representam, por exemplo: CPF, nome, fone, sexo, data de nascimento etc.; e Métodos: que são ações que os objetos de uma classe podem realizar, como, por exemplo: falar, andar, ouvir, etc. A representação de uma classe tem a descrição ou o nome dela na primeira parte, na segunda, possui os atributos e seus tipos, e na terceira parte, contém seus métodos. 55 Figura 23: Representação de Classe Fonte: o autor. Você pode pensar em uma classe com um modelo para criar quantos objetos você desejar de um tipo particular. Pense em um carimbo com a imagem de uma pessoa, quando você carimba e obtém um desenho dela, você acabou de criar uma instância da classe e obteve um objeto daquela classe. O novo objeto possuirá todas as características e comportamentos definidos pela classe. Os símbolos (+ e -) representam a visibilidade dos atributos e operações em uma classe com os seguintes significados: + público: visível em qualquer classe, isto é, pode ser utilizado por qualquer objeto de qualquer classe. # protegido: qualquer descendente pode usar, isto é, somente objetos da classe possuidora do atributo ou método ou suas subclasses podem ter acesso ao mesmo. - privado: visível somente dentro da classe, isto é, somente objetos da classe possuidora do atributo poderão utilizá-los. 56 É possível percebermos que os atributos CPF, nome, endereço e nascimento têm visibilidade privada, pois apresentam o símbolo (-) e, portanto, somente as instâncias da classe Funcionário podem enxergar esses atributos. Já o método Consultar ( ) possui visibilidade pública, como indica o símbolo (+), o que permite que objetos de outras classes visualizem o método. Como o intuito deste capítulo e dos capítulos 7 e 8 são definir e demonstrar os relacionamentos entre as classes, não serão apresentados os atributos e métodos nos relacionamentos, senão, pode tornar o diagrama muito poluído. Eles devem ser apresentados no momento de fazer a programação e a implementação de um sistema. Relacionamentos entre Classes As classes possuem relacionamentos entre si, para poderem compartilhar informações e permitir a execução dos diversos processos executados pelo sistema. Desta maneira, veremos, nas seções seguintes, as associações utilizadas pelos analistas de sistemas. Associação Binária A Associação Binária é o relacionamento entre duas classes. É a associação mais comum encontrada nos diagramas de classes. É um relacionamento estrutural que especifica que objetos de uma classe estão conectados a objetos de outra classe. A Figura 24 mostra esta associação: 57 Figura 24: Associação Binária Fonte: o autor. De acordo com a Figura 24, um pedido é efetuado por exatamente um cliente. Um cliente pode efetuar vários ou nenhum pedido. Os limites inferiores/superiores devem ser indicados numericamente (cardinalidade) e a associação pode ser rotulada (nomeada), não há obrigação de rotular. A cardinalidade é parecida com o Modelo Entidade-Relacionamento, com a diferença de “muitos” é representado pelo asterisco (*) e, também podemos colocar números inteiros quaisquer para representar corretamente a relação. Figura 25: Exemplos de Multiplicidades Fonte: o autor. Multiplicidade Significado 0..1 No mínimo zero (nenhum) e no máximo um. 1..1 Um e somente um. 0..* No mínimo zero e no máximo muitos. 1..* No mínimo um e no máximo muitos. 2..8 No mínimo 2 e no máximo 8. Existem pelo menos 2 e no máximo 8. 58 Figura 26: Associação Unária Fonte: o autor. Quando não existir cardinalidade demonstrada, entende-se que a cardinalidade é “1..1”, que significa que no mínimo e no máximo um objeto dessa extremidade relaciona-se com objeto(s) da outra extremidade. Associação Unária A Associação Unária é o relacionamento de uma classe com ela mesma, como é demonstrado na Figura 26. De acordo com a Figura 26, temos a classe Professor com os atributos de código, nome e possível código de coordenador. O coordenador também é um professor, assim sendo, a associação “coordena” indica uma possível relação entre uma ou mais instâncias da classe Professor com outras instâncias da própria classe. Essa associação determina que um Professor pode ou não coordenar outros professores. 59 Figura 27: Associação Ternária Fonte: o autor. Associação Ternária A Associação Ternária ou N-árias é o relacionamento com mais de duas classes, conforme a Figura 27. Um professor de uma disciplina tem no mínimo um e no máximo muitos alunos; uma disciplina de um aluno é no mínimo e no máximo um professor; e um aluno de um professor é de uma disciplina ou mais disciplinas. 60 07 Diagrama de Classes: Agregação, Composição, Especialização/ Generalização e Classe Associativa 61 Figura 28: Agregação Fonte: o autor. Agregação É uma relação Todo/Parte entre os objetos associados, isto é, um tipo especial de associação na qual se tenta demonstrar que as informações do objeto (chamado objeto-todo) precisam ser complementadas pelas informações contidas em um ou mais objetos de outra classe (chamados objetos-parte). É uma associação com o significado contém (é constituído por)/faz parte de. O símbolo da Agregação tem um losango vazio na extremidade da classe que contém os objetos-todo, conforme é mostrado na Figura 28. Na Figura 28, temos uma classe Nota Fiscal que contém os objetos-todo e uma classe Itens Nota que possui os objetos-parte. Uma Nota Fiscal pode tanto possuir um ou vários itens, mas quantos? Pode ser um, dois, três etc., assim, os itens que se repetem devem ser armazenados em uma classe dependente da classe Nota Fiscal. Temos também uma associação binária entre a classe Produto e a classe Itens Nota, sendo que um objeto daclasse Produto pode se referir a muitos objetos da classe Itens Nota, já um objeto da classe Itens Nota refere-se a apenas uma instância da classe Produto. 62 A função principal de uma agregação é identificar a obrigatoriedade de uma complementação das informações de um objeto-todo por seus objetos-parte quando este for consultado; já em uma associação binária esta obrigatoriedade não está explícita. Os Objetos-parte não podem ser excluídos por um objeto diferente do Objeto-todo. Figura 29: Composição Fonte: o autor. Composição A Associação de Composição é uma Agregação mais forte. Implica que o Objeto-todo é responsável pela criação do Objeto-parte e que esta não vive sem o Objeto-todo. A composição é mais física, uma parte não pode pertencer a dois objetos ao mesmo tempo, como, por exemplo, um coração não pode pertencer a dois corpos ao mesmo tempo. Quando um Objeto-todo for excluído, os Objetos-parte também serão. 63 Figura 30: Composição Revista Científica Fonte: Guedes, 2008. Conforme a Figura 29, podemos observar que, um objeto da classe Sócio refere-se a nenhum ou vários objetos da classe dependente, isto é, um sócio pode ter muitos ou nenhum dependente. E que cada instância da classe Dependente se relaciona única e exclusivamente a uma instância específica da classe Sócio, não podendo relacionar-se com nenhuma outra (quando não for especificado é determinado 1..1). Vejamos outro exemplo, conforme a Figura 30. Podemos observar que um objeto da classe Revista Científica refere-se a, no mínimo, um objeto da classe Edição e, no máximo, a vários objetos dessa classe. Cada instância da classe Edição relaciona-se única e exclusivamente a uma instância da classe revista Científica, sendo assim, ela não pode relacionar-se com nenhuma outra. Um objeto da classe Edição deve-se relacionar no mínimo 6 e no máximo 10 a objetos da classe Artigo (isso é uma forma de “validação”). Um objeto da classe Artigo refere- se unicamente a um objeto da classe Edição. 64 Figura 31: Especialização / Generalização do Diagrama de Classes Fonte: o autor. Especialização / Generalização É um relacionamento bem parecido utilizado no Diagrama de Caso de Uso. Ocorre quando existem duas ou mais classes com características semelhantes. Deste modo, para evitar declarar atributos e métodos idênticos, produz-se uma classe geral com os atributos e métodos comuns a todas as classes envolvidas no processo e criam-se classes especializadas ligadas à classe geral, que herdam todas as suas características, podendo ter atributos e métodos próprios. A Classe mais geral pode ser chamada de Super-Classe ou Classe-Mãe e as classes especializadas de Sub-Classes ou Classes-Filhas. 65 Ao observarmos a Figura 31, existe uma classe geral chamada Pessoa que possui os atributos nome e endereço e duas classes especializadas (Pessoa Física e Jurídica) que herdam os atributos da classe Pessoa, além de possuir seus atributos próprios. Figura 32: Classe Associativa Fonte: o autor. Classe Associativa Classe Associativa é criada quando existir uma associação entre duas classes com cardinalidade muitos (*) nas duas extremidades, isto é, uma relação de muitos para muitos. Esta classe associativa é criada porque nenhuma classe do relacionamento pode receber o atributo-chave da outra, desta forma, a classe associativa receberá esses atributos, o que não impede de ela ter seus próprios atributos criados desta relação. Um Aluno cursa no mínimo uma Disciplina, mas pode cursar muitas e uma Disciplina é cursada por muitos alunos. Como não há lugar para armazenar essas informações em nenhuma das duas classes, pois um aluno pode fazer uma, duas,... dez disciplinas e uma disciplina pode ser cursada por dezenas de alunos, desta forma, não dá para 66 deixar reservado certo números de atributos em cada uma das classes, porque diversos deles poderiam ficar em branco ou até, em alguns casos não serem suficientes. Nesse exemplo (Figura 32), foi criada a classe Período que terá os atributos-chave das classes Aluno e Disciplina, além dos atributos próprios criados desta relação, o ano e semestre que está sendo cursada a disciplina pelo aluno. 67 08 Diagrama de Classes: Exercícios 68 Neste capítulo, iremos dedicar aos exercícios de Diagramas de Classes completos, envolvendo todos os conceitos aprendidos nos capítulos 6 e 7. Nesta seção, apresentaremos, primeiramente, dois exemplos de exercícios de Diagrama de Classes, um de Controle de Negócio Comercial e um de Clínica Veterinária com os acréscimos de especialização/generalização. Exemplos de Diagramas de Classes 1. Diagrama de Classes de uma Faculdade Um curso possui diversas turmas, no entanto, uma turma relaciona-se exclusivamente a um único curso. Um curso pode ser de exatas, humanas ou da saúde, cada um com suas características próprias. Uma disciplina pode pertencer a diversos cursos e um curso possui diversas disciplinas. Um professor leciona em pelo menos uma disciplina, mas pode lecionar em várias, e a disciplina é lecionada por no mínimo um e no máximo 3 professores. Um aluno de uma turma precisa estar matriculado ao menos em uma disciplina, uma disciplina de uma turma tem ao menos um aluno, e um aluno de uma disciplina só pode estar matriculado em uma turma. 69 Figura 33: Diagrama de Classes de uma Faculdade Fonte: o autor. No Diagrama de Classes da Figura 33, podemos observar que temos um relacionamento binário entre Professor e Aluno, um pode existir sem o outro; uma associação de composição entre Curso e Turma, isto é, uma turma só existe se houver o curso; temos especialização/generalização da classe Curso (superclasse) com as subclasses Exatas, Humanas e Saúde; temos também uma relação ternária entre Aluno, Turma e Disciplina; e, ainda, uma classe associativa (Curso-Disciplina) entre as classes Curso e Disciplina. 2. Diagrama de Classe de um Disk-Pizza Um cliente precisa ser cadastrado para fazer um pedido, e este faz no mínimo um pedido. Um pedido é de somente um cliente, desta forma, o pedido só vai existir se houver o cliente. Um pedido pode tanto possuir um como vários itens de pedido. Os itens de pedido complementam o pedido, e este item é somente de um pedido. Uma pizza pode compor muitos itens de pedido, no mínimo 1, porém, um objeto da classe Itens de pedido refere-se a apenas uma instância da classe de pizza. 70 Figura 34: Diagrama de Classe de um Disk-Pizza Fonte: o autor. Uma pizza pode ser pequena, média ou grande, sendo que cada uma delas tem suas características próprias. No pagamento da conta o cliente, obrigatoriamente, faz um pagamento, que pode ser em dinheiro ou cartão, e o pagamento é de apenas um único hóspede, sendo que ele só existirá se houver hóspede. Neste Diagrama (Figura 34), temos uma associação de agregação entre o Pedido e o ItemPedido, pois esta classe de itens de pedido complementa a classe de pedido com as informações contidas nela, pois seria impossível estas informações estarem na classe de pedido onde poderia conter um item como dezenas de itens. Há também três associações de composição entre Cliente e Pedido, Cliente e Pagamento, Pizza e ItemPedido (os objetos-parte precisam ser exclusivos do objeto-todo). E, por fim, temos duas associações de especialização/generalização, uma na Pizza com suas especializadas Pequena, Média e Grande e outra no Pagamento com as subclasses Dinheiro ou Cartão. 71 Exercícios de Diagramas de Classes 1. Desenvolva o Diagrama de Classe para um Hotel levando em consideração os requisitos já identificados: Um hotel possui um cadastro de seus quartos, sendo que, o quarto pode ser de luxo ou standard. Um hóspede reserva pelo menos um quarto, e um quarto só pode ser reservado por um hóspede por vez. Um serviço de hotel pode ser de cozinha, lavanderia ou telefonia, e o hóspede não é obrigado a solicitar um serviço, mas pode solicitar vários. Um serviço pode ou não ser solicitado por vários hóspedes. No pagamento da conta, o hóspede só pode fazer um pagamento em dinheiroou cartão, e o pagamento é de apenas um único hóspede, sendo que ele só existirá se houver hóspede. 2. Desenvolva o Diagrama de Classe para uma Locada de Veículos levando em consideração os requisitos já identificados: Uma Rede de Locadora de veículos possui diversas filiais pelo país, sendo que uma Filial possui muitos veículos para locação, e um Veículo pode pertencer também a várias filiais, pelo menos uma. Um veículo pode ser de passeio, de carga ou van, cada um com suas características próprias. Um Pessoa que pode ser tanto uma Pessoa Física como Pessoa Jurídica aluga pelo menos um Veículo, sendo que, se for Pessoa Física, só pode alugar veículos de passeio, se for Pessoa Jurídica, pode alugar qualquer um. Um Veículo só pode ser alugado por uma única Pessoa por vez ou nenhum; estes também são independentes. Uma Filial pode ou não possuir parcerias com bancos, e um Banco pode também ter parcerias com várias Filiais ou não. 72 3. Desenvolva o Diagrama de Classe para um Consultório Médico levando em consideração os requisitos já identificados: Em um consultório médico existe um cadastro de Especialidades. Há também um cadastro dos Médicos do consultório, sendo que um médico tem pelo menos uma Especialidade, e uma Especialidade cadastrada tem pelo menos um Médico. Existem os Agendamentos, sendo que um Agendamento é de apenas um único Médico, ele só existe se houver o médico, e ele pode ter vários agendamentos ou nenhum. O Paciente, por sua vez, para ter um Agendamento, precisa ser cadastrado. Um Paciente pode ter mais de um Agendamento ou nenhum, já um Agendamento é de um único Paciente, ele só existe se houver Paciente. Nem toda Consulta refere-se a um Agendamento, e um Agendamento é de uma Consulta, estas são independentes. Um Paciente realiza ao menos uma Consulta e uma Consulta é de apenas um único Paciente. Ele só existe se houver Paciente. Um Médico realiza ao menos uma Consulta e uma Consulta é de apenas um único Médico, ele só existe se houver o Médico. 4. Desenvolva o Diagrama de Classe para uma Clínica Veterinária levando em consideração os requisitos já identificados: Um Cliente pode ter muitos animais, mas um Animal pertence exclusivamente a um único Cliente. Um Animal pertence a uma única espécie, porém uma Espécie cadastrada na clínica pode ou não ter animais. Um Animal pode realizar muitos Tratamentos ou não, mas um Tratamento é realizado exclusivamente por um Animal. Um Tratamento, além de suas especificações, é constituído por um ou vários Medicamentos com suas dosagens diárias, no entanto, cada Medicamento sugerido faz parte de vários Tratamentos ou nenhum. 73 Cada Tratamento possui ao menos uma Consulta, mas pode possuir muitas consultas. Uma determinada Consulta refere-se a um determinado Tratamento ou não. Um Veterinário pode realizar muitas consultas, porém uma Consulta deve ser realizada por somente um veterinário. Em uma consulta podem ser marcados diversos exames ou nenhum e um Exame pode ser referência de várias consultas ou nenhuma. 5. Desenvolva o Diagrama de Classe para um Campeonato de Futebol levando em consideração os requisitos já identificados: Todo time de futebol pertence a uma cidade, isto é, ele só existe se houver a cidade e uma Cidade pode possuir vários times ou não. Um Time de futebol para entrar no campeonato precisa ter um Estádio de referência, e o Estádio é de apenas um Time, mas ele não é obrigado a ser de um time. Um Time pode ou não possuir torcidas organizadas, mas uma Torcida é de somente um Time, ela só existirá se houver um Time. Um time possui ao menos 16 jogadores inscritos e um Jogador é de somente um Time ou nenhum. Um jogador em um jogo pode ter várias ocorrências ou nenhuma, uma ocorrência em um jogo pode ter muitos jogadores ou nenhum, já um jogador pode sofrer uma ocorrência em vários jogos ou nenhum. Uma ocorrência pode ter gols, cartões amarelos ou vermelho, cada uma dessas ocorrências tem suas características próprias. 6. Desenvolva o Diagrama de Classe para Passagens Aéreas levando em consideração os requisitos já identificados: Um Voo é de uma única Companhia Aérea e a companhia possui ao menos um Voo. Um Passageiro realiza ao menos um Voo, no entanto, um Voo tem no mínimo 10 passageiros. Uma Passagem refere-se a um Passageiro ou nenhum e um Passageiro só pode ter uma Passagem obrigatoriamente. 74 Cada Passagem refere-se, exclusivamente, a um Voo específico e um Voo tem no mínimo uma passagem, mas pode ter diversas. Um Aeroporto está localizado em uma Cidade específica, ele só existe se houver a cidade, mas uma Cidade pode possuir muitos aeroportos ou nenhum. Um Voo faz ao menos uma escala em aeroportos, e um Aeroporto pode ser escala de muitos voos ou nenhum. 75 09 Diagrama de Sequência: Conceitos 76 O Diagrama de Sequência é criado a partir do Diagrama de Caso de Uso e também do Diagrama de Classe, pois o mesmo determina a sequência de eventos que devem ser realizados, dentro de uma ordem correta, com os objetos declarados do diagrama de classe, bem como os métodos. São utilizados para apresentar a evolução de uma funcionalidade em um determinado momento do software. Este tipo de diagrama determina a sequência de eventos que correm em um determinado processo, ou seja, quais condições devem ser satisfeitas e quais métodos devem ser disparados entre os objetos envolvidos e em que ordem durante um processo específico. (GUEDES, 2008 pág. 113) Desta forma, podemos dizer que o objetivo do Diagrama de Sequência é: determinar a ordem em que os eventos ocorrem; as mensagens que são enviadas; os métodos que são chamados; e como os objetos interagem dentro de um determinado processo. O Diagrama de Sequência se preocupa com a ordem temporal em que as mensagens são trocadas entre os objetos envolvidos em um determinado processo; ele se baseia em um Caso de Uso e utiliza o Diagrama de Classes para determinar os objetos envolvidos em um processo. O fato de existir um Caso de Uso não significa que deva existir um único Diagrama de Sequência, e sim, há diversos Diagramas de Sequência em um projeto, uma para cada processo específico do sistema, como por exemplo, suponhamos um sistema de controle de um hotel em que temos diversos processos como reserva, entrada, serviços, saída, desta forma, seria impossível colocar tudo isso dentro de um mesmo diagrama de sequência, e sim, um diagrama para cada processo específico citado. É importante destacarmos os componentes que formam um Diagrama de Sequência para um melhor entendimento. Atores Os Atores são os mesmos utilizados nos casos de usos, sendo assim são os usuários (entidades externas) que interagem com o sistema. Sua representação é a mesma (Figura 35) com uma Linha da Vida embaixo que será explicado do capítulo 9.3. 77 Figura 35: Ator do Diagrama de Sequência. Fonte: o autor. Objetos Os Objetos são todas as instâncias das classes envolvidas no processo. Eles são representados por um retângulo em que consta o nome do objeto (letras minúsculas) o sinal de dois pontos (:) e o nome da classe com a letra inicial maiúscula (Figura 36). Pode ocorrer em certas situações do processo que o mesmo vai consultar ou selecionar mais de um objeto da classe a qual pertence, neste momento devemos colocar apenas o sinal de dois pontos (:) e o nome da classe. 78 Figura 36: Objeto e Classe. Fonte: o autor. Não é necessário apresentar os atributos dos objetos, apenas terá também uma Linha da Vida (Capítulo 8.3) representada por uma linha vertical tracejada. Na Figura 26 temos um objeto chamado cliente1que é uma instância da classe Cliente. Na criação de um Diagrama de Sequência podem existir objetos desde o início do processo e objetos que são criados durante o processo. Desta forma, (Figura 37) o mais indicado, no primeiro caso, é colocar os objetos na parte superior do diagrama e no segundo caso, colocar no mesmo nível em que ele está sendo criado. 79 Figura 37: Exemplo de Criação de Objetos em um Diagrama de Sequência de Hotel.Fonte: o autor. Linha de Vida Representada por linhas verticais tracejadas, a Linha da Vida tem por finalidade demonstrar o tempo em que um objeto existiu durante um processo. Ela se inicia a partir do retângulo representado pelo objeto e é interrompida com um “X” quando o objeto for “destruído” (Figura 37). Foco de Controle (Ativação) O Foco de Controle ou Ativação representa o momento em que o objeto está participando do processo, isto é, mostra os momentos que o objeto está executando um ou mais métodos do processo específico. Ele é representado por um traço mais grosso sobre a linda da vida do objeto (Figura 37). 80 Acesse o link: Disponível aqui O tempo de atividades do objeto corresponde ao tempo durante o qual um objeto exerce sua ação direta ou indiretamente por meio de um objeto que lhe presta serviço. Mensagens As mensagens são utilizadas para indicar a ocorrência de eventos que forçam a chamada de um método em um dos objetos envolvidos naquele processo. Pode também ocorrer entre um Ator e a representação pelo meio ao qual o usuário se comunica com o sistema (Figura 37, Interface da Web), neste caso nenhum método é disparado. Pode ocorrer também entre dois atores, mas não é muito utilizado, pois pode deixar o diagrama muito carregado. As mensagens entre os objetos são as que mais aparecem, é a solicitação de um objeto a outro para a execução de um método (Figura 37), e ainda, pode disparar um método para si próprio, conhecido como Autochamada (Capítulo 9.7). Nas mensagens entre objetos, existe um número, a descrição (não é obrigatório) separado por (:) com o nome do método, mas é aconselhável colocar a descrição para uma melhor interpretação do significado do processo que está sendo feito. 81 http://www.deinf.ufma.br/~geraldo/dob/9.Sequencia.pdf Figura 38: Exemplo de Setas de mensagens. Fonte: o autor. É muito importante destacar que as mensagens devem ser numeradas sequencialmente na posição horizontal e de cima para baixo conforme vão aparecendo no diagrama. As setas que chamam um método são mais grossas, enquanto as setas mostram apenas uma ocorrência são um pouco mais finas. 82 Figura 39: Mensagem de Retorno. Fonte: o autor. Mensagens de Retorno As mensagens de Retorno servem para dar uma resposta a uma mensagem para quem o chamou (Ator ou objeto). A mensagem pode ser uma resposta de informações específicas do método, um valor ou se o método foi executado com sucesso ou não. Elas são representadas uma seta tracejada com uma seta apontada inversamente às mensagens dos métodos. 83 Figura 40: Exemplo de Autochamada. Fonte: o autor. Autochamadas (Automensagens) As Autochamadas são as mensagens que um objeto envia para si próprio. 84 Figura 41: Exemplo de Condição. Fonte: o autor. Para uma situação de uma repetição (Figura 42), isto é, um disparo de uma mensagem para vários objetos, pode-se representar pelo símbolo de asterisco (*) que representa uma iteração e deve ser colocado antes da condição. Condições As Condições ocorrem quando uma mensagem só será enviada a um objeto se uma determinada condição for satisfeita. Elas devem estar entre colchetes ([ ]) na mensagem. 85 Figura 42: Exemplo de Repetição. Fonte: o autor. Como podemos observar, uma venda pode conter vários itens de venda, assim, quando a venda é confirmada, cada um de seus itens precisa ser gerados, desta forma fica indicado que um laço venha a ser executado e a condição informa que, para cada item da venda, deve ser chamado um método para gerar uma nova instância da classe Item Venda. 86 10 Diagrama de Sequência: Exercícios 87 Neste capítulo, nos dedicaremos aos exercícios de Diagrama de Sequências completos, envolvendo a maioria dos conceitos aprendidos no capítulo 9. Serão apresentados, primeiramente, três exemplos de exercícios de Diagrama de Sequência, um de Clínica Veterinária, um de Locação de Veículos e outro de uma Reserva de Quartos em um Hotel, para em seguida, resolvermos alguns exercícios. Exemplos de Diagramas de Sequência Desenvolva um Diagrama de Sequência para um sistema de Clínica Veterinária equivalente ao módulo de tratamento e consulta do animal. Temos um Ator chamado Veterinário e um objeto abstrato chamado “interface do sistema” por meio da qual o Veterinário interage com o sistema. No caso de o Veterinário querer verificar as consultas anteriores de um animal, ele deverá primeiro consultar o dono do animal em um objeto da classe Cliente. Após identificá-lo, em seguida será necessário visualizar os animais desse cliente, que retornará todos os animais do Cliente e assim todas as informações dos animais e do cliente serão manipuladas pela interface do sistema pelo Veterinário. Ao visualizar a lista de animais do cliente, o Veterinário selecionará um animal, além, em seguida, visualizar os tratamentos e depois as consultas desse animal, que retornarão todas as consultas e os tratamentos já realizados do animal para a interface do sistema, desta forma o Veterinário pode verificá-los. Agora, o Veterinário, se desejar, deve gravar este novo tratamento e, em seguida, registrar a nova consulta feita retornando Verdadeiro na interface do sistema e consequentemente “Consulta e Tratamento Realizados” ao Veterinário. 88 Figura 43: Diagrama de Sequência de uma Clínica Veterinária. Fonte: GUEDES, 2008. Vejamos o exemplo agora de uma Locadora de Veículos, em que temos um Ator chamado de Atendente e um objeto abstrato chamado “interface do sistema” por meio da qual o Atendente interage com o sistema para realizar uma locação de veículo por um Cliente. O atendente deve verificar se o sócio está cadastrado, se este não estiver, deve ser feito seu cadastro, retornando cliente cadastrado à interface do sistema e ao atendente. Agora, se o sócio estiver cadastrado, deve ser selecionado retornando verdadeiro à interface do sistema e sócio selecionado. Em seguida, deve verificar se o sócio possui alguma locação pendente na classe de locação, caso em que recusará o aluguel, retornando verdadeiro e locação recusada ao atendente. Se não possuir pendência, após consulta da locação, o atendente deverá agora selecionar o veículo e, em seguida, a locação deverá ser registrada. Assim, será retornado ao atendente locação realizada. 89 Figura 44: Diagrama de Sequência de uma Locadora de Veículos. Fonte: o autor. Um dos grandes benefícios do Diagrama de Sequência é observar como os objetos e componentes interagem uns com os outros objetos para poder concluir todo um processo a ser realizado. Em outro exemplo, temos uma Reserva de Quarto feita pelo Hóspede por meio da interface da web. Primeiro, o hóspede deve selecionar a data de entrada e saída na classe período, retornando verdadeiro à interface da web. E período selecionado ao hóspede. 90 Figura 45: Diagrama de Sequência de uma Reserva de Quarto em um Hotel. Fonte: o autor. Em seguida, o hóspede consultará os quartos na classe quarto retornando as informações a ele. Se desejar, ele selecionará o quarto que necessita, retornando verdadeiro à interface da web e quarto selecionado a ele. Se o hóspede não for cadastrado, ele fará seu cadastro no objeto da classe hóspede, retornando verdadeiro à interface da web e hóspede cadastrado. Agora, se o hóspede for cadastrado, será feita a seleção no objeto da classe hóspede, retornando verdadeiro e hóspede selecionado. Para finalizar, o hóspede confirmará sua reserva com o cadastro da mesma no objeto da classe Reserva. Em seguida, será disparado um método para a atualização do quarto, retornando reserva cadastrada e confirmada ao Hóspede. 91 Exercícios de Diagramas de Sequência 1. Elabore um Diagrama de Sequência para a Devolução de um Livro por meio de uma Interface do Sistema pelo Bibliotecário. Primeiro, o Bibliotecário terá que achar a locação realizada por meio da consulta na classe de locação, retornando verdadeiro à interface do sistema e a ele. Em seguida, será necessário realizar o cadastro da devolução por meio de um métodoem um objeto da classe de devolução, retornando verdadeiro à interface do sistema e cadastro realizado ao Bibliotecário. Agora, o Bibliotecário terá que excluir, por meio de um método, a locação realizada e, em seguida, com outro método, atualizar a situação do livro no objeto da classe de livro, retornando atualização realizada e locação excluída à interface do sistema e ao Bibliotecário. 2. Elabore um Diagrama de Sequência para um Aluno fazer uma Matrícula em um Curso gratuito na Web. Pela Interface da Web o Aluno faz uma consulta dos cursos oferecidos em uma classe de cursos, retornando as informações dos cursos. Após a visualização dos cursos, se o Aluno desejar, faz uma consulta nas turmas disponíveis, para isso ele seleciona primeiro o curso desejado e, em seguida consulta as turmas disponíveis, retornando as informações da turma ao curso, consequentemente o curso selecionado à interface da web e os dados das turmas e do curso ao Aluno. Se o aluno desejar realizar a matrícula, ele fará a seleção da turma desejada na classe turma, retornando verdadeiro à interface do sistema e turma selecionada ao Aluno. Se o Aluno não for cadastrado, ele faz seu cadastro no objeto da classe de aluno por meio de um método, retornando verdadeiro à interface da web e aluno cadastrado ao Aluno. 92 Se ele for cadastrado, será feito a seleção do aluno no objeto da classe de aluno, retornando verdadeiro à interface da web e aluno selecionado ao Aluno. Para finalizar, o aluno tem que fazer o cadastro da matrícula em um objeto de classe de matrícula, retornando verdadeiro à interface da web e matrícula realizada ao Aluno. 3. Elabore um Diagrama de Sequência para um Cliente fazer um Pagamento de uma Prestação em uma Loja Comercial por meio de uma Interface do Sistema feito pelo Funcionário. O Funcionário deve fornecer o CPF do cliente para que um método selecione o Cliente na classe de Cliente, para que em seguida seja disparado um método para consultar as parcelas em aberto do cliente na classe de parcelas, retornando os dados das parcelas em aberto e do cliente à interface do sistema e ao Funcionário. Para fazer o recebimento da conta pelo Funcionário, terá que ser disparado um método na classe de parcelas para selecionar a parcela desejada, em seguida será disparado um método para cadastrar o pagamento em um objeto da classe pagamento. Desta forma, será disparado um método para a atualização da parcela na classe de parcela, retornando os dados do pagamento da parcela à interface do sistema e pagamento realizado ao Funcionário. 93 11 Diagrama de Sequência: Exercícios com Repetições e Autochamadas 94 Agora, neste capítulo, iremos dedicar aos exercícios de Diagrama de Sequências completos, envolvendo também os conceitos de repetições (iterações) e autochamadas vistos no capítulo 9. Serão apresentados primeiramente três exemplos de exercícios de Diagrama de Sequência, um de Lançamentos de Notas/Faltas de um Professor, um de Pedidos de Compra e outro de Matrícula de Disciplinas. Fonte: Disponível aqui Um operador de interação (repetição) de loop indica que o fragmento de interação é executado repetidamente. O número de vezes que ele é executado será determinado pelos parâmetros de mínimo e máximo. Exemplos de Diagramas de Sequência com Repetição (Iteração) e Autochamadas Elabore um Diagrama de Sequência para o Lançamento de Notas/Faltas de um Professor por meio de uma Interface da Web. O professor fará seu login do sistema no objeto da classe Professor e com sua validação no mesmo objeto, retornando verdadeiro à interface. Em seguida, o Professor terá que ver sua disciplina com seus alunos, para isso será selecionado o curso, a turma, a disciplina e depois os alunos, retornando as informações à interface do sistema e consequentemente ao professor da disciplina selecionada. 95 https://www.ibm.com/support/knowledgecenter/pt-br/SSRTLW_9.6.1/com.ibm.xtools.sequence.doc/topics/rinteracoperate.html Figura 46: Diagrama de Sequência de Lançamento de Notas / Faltas. Fonte: o autor. Após a confirmação dada ao professor, o professor lançará as notas, uma a uma no objeto de classe das notas do aluno, retornando no final as notas atualizadas para o Professor. Agora, o professor lançará as faltas, desta forma, fará o lançamento uma a uma no objeto da classe de faltas do aluno, retornando também, no final, as faltas atualizadas ao Professor. Para finalizar, o professor informará a chave de segurança para o fechamento da sua execução no objeto da classe Professor com sua validação no mesmo objeto, retornando a ele lançamentos atualizados com sucesso. 96 No exemplo da Figura 46 são ilustradas duas autochamadas, uma para validar o login do professor e outra para validar a chave de segurança, note que o objeto prof1 dispara em si mesmo a chamada do método de validação do login e da chave de segurança. Também são demonstradas duas repetições (iterações), uma no lançamento das notas e outra no lançamento das faltas, pois podem existir diversas notas e faltas para serem lançadas. Utilizamos o símbolo da repetição indicando a possibilidade de que um laço venha a ser executado e inserimos a condição que informa que para cada nota/falta deve ser chamado um método para gerar uma nova instância da classe de nota/falta. Elabore um Diagrama de Sequência para a realização de um Pedido de Compra feito pelo Gerente de Compras por meio da Interface do Sistema. Primeiro, o Gerente deverá verificar os produtos que estão abaixo do estoque mínimo na classe de produtos, que em seguida o método retornará as informações solicitadas pelo Gerente. Em seguida, o Gerente precisará identificar o Fornecedor dos produtos, desta forma o produto primeiro é identificado e em seguida, será disparado o método SelFornecedor para selecionar o fornecedor dos produtos, que retornará o fornecedor dos produtos à interface do sistema e ao Gerente. Será necessário cadastrar o pedido pelo método Cadped e, em seguida, cadastrar os itens deste pedido um a um, lembrando que podemos ter vários itens no pedido. Quando acabar, o método retornará ao pedido os itens cadastrados e consequentemente será retornado à interface do sistema pedido cadastrado com sucesso. 97 Figura 47: Diagrama de Sequência de Pedido de Compra. Fonte: o autor. Na Figura 47, podemos notar que há uma iteração, pois podem existir vários itens de pedido em um mesmo pedido. Elabore um Diagrama de Sequência para a realização de uma Matrícula de um Aluno em Disciplinas do seu Curso. Primeiro, o aluno precisa ser “logado” (identificar-se) no objeto da classe aluno, pelo método login e pela sua validação no mesmo objeto, retornando login efetuado com sucesso. Em seguida, ele selecionará seu curso, sua turma e, em seguida, consultará as disciplinas disponíveis, retornando as informações a ele das disciplinas da turma de seu curso. Agora, ele fará sua matrícula com a seleção das disciplinas, desta forma será disparado o método de seleção da disciplina que será feito uma a uma (lembre-se que ele pode fazer mais de uma disciplina). Quando acabar, será disparado o método CadMat para cadastrar a matrícula, assim retornará a mensagem matrícula cadastrada e matrícula feita com sucesso. 98 Figura 48: Diagrama de Sequência de Matrícula de Disciplinas. Fonte: o autor. Fonte: Disponível aqui As Autochamadas são mensagens que um objeto envia para si mesmo. A mensagem parte do objeto e atinge o próprio objeto. 99 https://homepages.dcc.ufmg.br/~figueiredo/disciplinas/aulas/uml-diagrama-sequencia-mensagens_v01.pdf Exercícios de Diagrama de Sequência com Autochamadas e Repetições (Iterações) 1. Elabore um Diagrama de Sequência para a Locação de Livros por meio de uma Interface do Sistema pelo Bibliotecário. Primeiro, o Bibliotecário terá que entrar com a identificação (RA) do aluno, por meio de um método de consulta no objeto da classe aluno, retornando verdadeiro à interface do sistema e a ele. Em seguida, será necessário realizar a consulta do(s) livro(s)