Baixe o app para aproveitar ainda mais
Prévia do material em texto
E-book 4 ANÁLISE E PROJETO DE SISTEMAS Gláucia Silva Bierwagen Neste E-Book: INTRODUÇÃO ���������������������������������������������� 3 RELACIONAMENTOS COM OS DIAGRAMAS DE CLASSES E OBJETOS �������4 Associação ���������������������������������������������������������������4 Multiplicidade �����������������������������������������������������������5 Interpretação em programas ����������������������������������7 Nomes de associação, direção de leitura de papéis �����������������������������������������������������������������������9 Classes associativas �������������������������������������������� 11 Associação reflexiva ou autoassociação ������������ 13 Associação bidirecional ��������������������������������������� 14 Agregações e composições ��������������������������������� 15 Generalizações e especializações ����������������������� 18 Dependências �������������������������������������������������������� 19 Regras de Restrição ���������������������������������������������� 21 DIAGRAMAS DE SEQUÊNCIAS E INTERAÇÕES ���������������������������������������������� 23 Ocorrências de execução ������������������������������������� 25 Criação e Destruição de Objetos ������������������������� 25 Mensagens síncronas e assíncronas ������������������ 28 CONSIDERAÇÕES FINAIS �����������������������31 SÍNTESE ������������������������������������������������������� 32 2 INTRODUÇÃO Por meio da leitura deste módulo, você conhecerá os relacionamentos de diagramas de classe e obje- tos� Estudaremos o relacionamento de associação que especifica objetos conectados uns aos outros; compreenderemos do que se trata a multiplicidade e o que são classes associativas� Será identificado aqui que a associação reflexiva as- socia objetos com papéis distintos da mesma classe, e que a associação bidirecional é representada por uma seta de duas pontas com um par de proprieda- des inversamente vinculadas. Verificaremos que a generalização e a especialização são dois pontos de vista do mesmo relacionamento e que as dependên- cias podem ser usadas para demonstrar relaciona- mentos transitórios� Em seguida, os diagramas de sequências oferecem uma visualização de como os objetos interagem, por exemplo: ocorrências de execução caracterizam o tempo em que o objeto está ativo, isto é, o tempo em que ele está realizando alguma operação� E, por fim, analisaremos a criação de um objeto como o momento em que esse objeto passa a existir no sistema, e passa a realizar suas responsabilidades� Enquanto a destruição de um objeto é um momento no qual este objeto deixa de existir no sistema. Desejo a você bons estudos! 3 RELACIONAMENTOS COM OS DIAGRAMAS DE CLASSES E OBJETOS Você já estudou o que são diagramas de classes e objetos� Neste tópico você aprenderá os relaciona- mentos que ocorrem entre as classes e os objetos� Dentre eles temos: a associação, multiplicidade, classes associativas, associações reflexivas, asso- ciações bidirecionais, agregações e composições, e intepretação em programas. Verificará também como se dão nomes às associações, direção de leitura e papéis� Associação A associação demonstra um relacionamento es- trutural que especifica objetos conectados uns aos outros� Geralmente, uma associação é representada no diagrama de classes por uma linha ligando as classes às quais pertencem os objetos relacionados� No exemplo da figura 1, temos as seguintes asso- ciações: (1) na área de vendas, um cliente compra produtos; (2) na área bancária, uma conta corrente possui um histórico de transações; (3) em um ho- tel, há vários hóspedes que ocupam vários quartos (BEZERRA, 2007). 4 Cliente Pedido Hóspede Quarto ContaCorrente HistóricoTrasações Figura 1: Exemplo de associações entre objetos. Fonte: Bezerra (2007, p. 114) adaptado. Multiplicidade A multiplicidade se refere à quantidade de objetos que podem ser conectados pela instância de uma associação. Para Bezerra (2007), cada associação em um diagrama de classes possui duas multiplicida- des, uma em cada extremo da linha que a representa. Existem símbolos possíveis para representar uma multiplicidade, conforme tabela abaixo. Nome Simbologia Apenas 1 1 Zero ou Muitos 0..* Um ou Muitos 1..* Zero ou Um 0..1 Intervalo Específico li��ls Tabela 1: Simbologia para representar multiplicidade. Fonte: Bezerra (2007, p. 114) 5 SAIBA MAIS O capítulo 9 (pp. 179-181) do livro “Utilizan- do UML e padrões”, de Craig Larman, traz mais exemplos de uso de multiplicidade, além de des- tacar, de forma mais detalhada, que o seu uso está relacionado ao contexto e à necessidade da equipe de desenvolvimento� O livro está disponí- vel em sua biblioteca virtual (Minha Biblioteca). Na figura 2 temos a associação de duas classes: Pedido e Cliente� A leitura dessa associação nos revelam três situações que podem ocorrer: (1) um objeto da classe Cliente que esteja associado a vá- rios objetos da classe Pedido – isso é representado pela parte * do símbolo 0..*- ;(2) um objeto da classe Cliente que não esteja associado a pedido algum – isso é representado pela parte 0 do símbolo 0..*- e (3) um objeto da classe Pedido está associado a um, e somente um, objeto da classe Cliente� Cliente 1 0..* Pedido Figura 2: Exemplo de utilização de símbolos de multiplicidade. Fonte: Bezerra (2007, p. 115) adaptado. Com relação ao símbolo geral da multiplicidade dos intervalos específicos, as expressões li e ls são substituídas por valores correspondentes aos limites inferior e superior, respectivamente, do intervalo que 6 se quer representar. No exemplo a seguir (figura 3), são representadas informações sobre velocistas e corridas em que é permitido o mínino de e o máximo de 6 velocistas participantes� Então, o valor para li é 2 (mínino dois velocistas) e para ls é 6 (máximo 6 velocistas). Velocista 2..6 0..* Corrida Figura 3: Exemplo de utilização de intervalo para valores de multipli- cidade. Fonte: Bezerra (2007, p. 115) adaptado. Interpretação em programas Neste subtópico, você verificará alguns exemplos de uso da linguagem de programação Java� Essa linguagem é bastante usada porque não depende de um sistema operacional específico, tendo seus programas executados por meio da máquina virtual Java. Tem ferramentas de desenvolvimento, como: compiladores, depuradores, bibliotecas de desenvol- vimento para desktop, dispositivos móveis, entre ou- tros� Vamos observar o diagrama de classes a seguir� Leia-o atentamente. A partir dele, vamos verificar a representação de software mais comum, que é a de um campo ou de uma propriedade (FOWLER, 2005). 7 Pedido datadeRecebumento: Date[0..1] éPré-pago: Boolean[1] número: String [1] preço: Money expedir() encerrar() Cliente Corporativo nomedeContato classedeCrédito limitedeCrédito {sePedido.cliente.obterClassedeCrédito é “ruim”, então Pedido.éPré-pago deve ser “Verdadeiro”} faturaMensal(Integer) aviso() Cliente Pessoal NúmerodoCartãodeCrédito {obterClassedeCrédito() == “ruim”} 0..1Linha de Pedido Produto quantidade: Integer preço: Money Cliente nome [1] endereço [0..1] obterClassdeCrédito(): String Funcionário rep. de vendas navegável * {ordered} operações itensdeLinha 1 1 * * * nome do papel restrição multiplicidade atributos associação generalização classe Figura 4: Diagrama de classes simples. Fonte: Fowler (2005, p. 52) adaptado. Dessa forma, a classe Linha de Pedido (figura 5) mos- tra os possíveis códigos em Java correspondentes, onde é definida a classe que está relacionando quan- tidade, preço, pedido e produto� 8 public class LinhadePedido... private int quantidade; private Dinheiro preço; private Pedido pedido; private Produto produto; Figura 5: Código em Java para a classe Linha de Pedido. Fonte: Fowler (2005, p. 55) adaptado. Neste caso, temos como atributo de proprieda- des públicas utilizando o nome da classe destino LinhadePedido associdadas aos campos privados com relação a: quantidade,preço, pedido e produto. Acesse o Podcast 1 em Módulos Nomes de associação, direção de leitura de papéis A UML define três recursos de notação para escla- recer o significado de uma associação no diagrama de classes: nome de associação, direção de leitura e papel� A figura 6 apresenta uma associação na qual são representados os papéis específicos ou roles – Contratante e Contratado – e o seu nome Contrata, com significado semântico à mesma, posicionada na linha de associação entre as classes envolvidas� 9 Você observará a notação da direção de leitura, ou seja, como a associação deve ser lida� Ela é represen- tada por um pequeno triângulo posicionado próximo a um dos lados do nome da associação e, nesse caso, trata-se de: organização contrata indivíduo, e não o contrário (BEZERRA, 2007). Organização contratante Papel Papel Nome da associação Direção de leitura Contrata contratado * * Indivíduo Figura 6: Exemplo de utilização de nome de associação, direção de leitura e de papéis. Fonte: Bezerra (2007, p.117) adaptado. Pode haver diversos motivos pelos quais um objeto precisa saber sobre outro� Dessa forma, pode ha- ver várias associações definidas entre duas clas- ses no diagrama de classes. Por exemplo, pense em duas classes: Empregado e Departamento� Na classe Departamento é necessário saber quais são seus empregados e quem é o seu gerente� Nesse caso, temos duas associações diferentes, embora as classes envolvidas sejam as mesmas� 10 Classes associativas As classes associativas são classes que estão li- gadas a associações, em vez de estarem ligadas a outras classes� Ocorre quando duas ou mais classes estão associadas� Geralmente, classes associativas são ligadas a associações de conectividade muitos para muitos, mas pode acontecer associações de qualquer conectividade� Na UML, uma classe associativa é representada pela mesma notação utilizada para uma classe comum� A diferença é que essa classe é ligada por uma linha tracejada a uma associação� Vamos ilustrar a utili- zação de uma classe associativa em um diagrama de classes (figura 7), por meio de um diagrama que indica que uma pessoa pode trabalhar como empre- gado em várias empresas� Uma empresa, por sua vez, pode ter vários empregados� A classe associativa Emprego – representada pela mesma notação de uma classe comum ligada por uma linha tracejada – possibilita saber, para cada par de objetos [empre- gado, empregador], qual o salário e a data de contra- tação do empregado em relação àquele empregador� (BEZERRA, 2007). 11 Pessoa * nome telefone endereço Emprego salário dataContratação empregado empregador Empresa razãoSocial endereço * Figura 7: Exemplo de classe associativa. Fonte: Bezerra (2007, p. 119) adaptado. SAIBA MAIS As páginas 87 e 88 do livro “UML Essencial: um breve guia para linguagem padrão”, de Martin Fo- wler, trazem bons exemplos de classes associati- vas� Um deles demonstra o diagrama que indica que uma pessoa pode participar de muitas reuni- ões� Ele pretende mostrar a informação sobre o quanto essa pessoa estaria desperta por adicio- nar o atenciosidade à associação� Estude como isso foi realizado� O livro está disponível em sua biblioteca virtual (Minha Biblioteca). Por meio do exemplo anterior, você pôde verificar que uma classe associativa é um elemento híbrido, isto é, tem características de uma classe e também características de uma associação� Um diagrama de classes que contém uma classe as- sociativa pode ser modificado retirando-a. Como isso pode ser feito? No exemplo da figura 8, eliminou-se 12 a associação correspondente à classe associativa e esta, por sua vez, foi então substituída por uma classe ordinária Emprego, que tem participação obri- gatória em ambas as associações (BEZERRA, 2007). Pessoa nome endereço telefone Empresa razãoSocial endereço Emprego salário dataContratação 1 * * 1 Figura 8: Classe associativa sendo substituída por uma classe ordi- nária. Fonte: Bezerra (2007, p. 120) adaptado. Associação reflexiva ou autoassociação A associação reflexiva associa objetos com papéis distintos da mesma classe. Por exemplo, visualize a figura 9, em que existe uma associação reflexiva entre objetos de Empregado que ora assumem o papel de supervisor ora o papel de supervisionado� (BEZERRA, 2007). 13 supervisionado supervisor 1 * Emprego Figura 9: Exemplo de associação reflexiva. Fonte: Bezerra (2007, p. 122) adaptado. É importante destacar que a associação reflexiva não indica que um objeto se associa a ele próprio, ou seja, um empregado não pode ser supervisor dele próprio� Reforçamos que a autoassociação representa que um objeto de uma classe se associa a outros objetos da mesma classe (BEZERRA, 2007). Associação bidirecional A associação bidirecional representada por uma seta de duas pontas é um par de propriedades inversa- mente vinculadas. No exemplo da figura 10, a classe Carro tem a propriedade proprietário: Pessoa[1] e a classe Pessoa tem uma propriedade carros: Carro[*]. O vínculo inverso entre elas significa que, se você seguir as duas propriedades, deverá retornar a um conjunto que contém seu ponto de partida� 14 CarroPessoa proprietário *0..1 Figura 10: Exemplo de associação bidirecional. Fonte: Fowler (2005, p. 57) adaptado. Agregações e composições Bezerra (2007) traz algumas características especí- ficas das agregações e composições que as diferem das associações simples� • Agregações/composições são assimétricas, no sentido de que, se um objeto A é parte de um objeto B, o objeto B não pode ser parte do objeto A. • Agregações/composições propagam com- portamento, no sentido de que um comporta- mento que se aplica a um todo automatica- mente se aplica às suas partes. • Nas agregações a UML define dois tipos de relacionamentos todo-parte, a agregação e a composição, sendo casos especiais de associações/composições, as partes são normalmente criadas e destruídas pelo todo. Na classe do objeto todo, são definidas ope- 15 rações para adicionar e remover as partes (BEZERRA, 2007, p. 123). Como aplicar uma agregação ou composição? Bezerra (2007) sugere a aplicação de uma regra que pode verificar se faz sentido a utilização de um rela- cionamento todo-parte – agregação ou composição� Pode-se verificar da seguinte forma: Sejam duas classes associadas, X e Y. Se uma das duas perguntas a seguir for respondida com um sim, provavelmente há um relaciona- mento todo-parte envolvendo X e Y, no qual X é o todo, e Y é a parte. 1) X tem um ou mais Y? 2) Y é parte de X? (BEZERRA, 2007, p. 123) Observe o exemplo de agregação (Figura 11) – re- presentada por uma linha que conecta as classes relacionadas, tendo um losango sem preenchimento perto da classe que indica o todo – por meio de um diagrama que demonstra uma associação esportiva formada por diversas equipes, que, por sua vez, são formadas por diversos jogadores� Por outro lado, um jogador pode fazer parte de diversas equipes� AssociaçãoEsportiva Equipe Afiliada * membro Jogador * * * Figura 11: Exemplo de agregação. Fonte: Bezerra (2007, p. 124) adap- tado. 16 A composição é representada na UML por meio de um losango com preenchimento em contraponto do losango branco da agregação� * Pedido data hora ItemPedido quantidade Produto nome descrição preçoUnitário desconto 1 1 1..* Figura 12: Exemplo de composição. Fonte: Bezerra (2007, p. 124) adaptado. SAIBA MAIS Craig Larman, no livro “Utilizando UML e pa- drões” (2004, p. 528), sugere que se deve con- siderar o uso da composição quando: 1) o tem- po de vida da parte estiver vinculado ao tempo de vida do composto – existe uma dependência criação-destruição da parte em relação ao todo; 2) existir uma relação física todo-parte óbvia ou um agrupamento lógico; 3) algumas proprieda- des do composto se propagam para as partes, como sua localização� O livro está disponível em sua biblioteca virtual (Minha Biblioteca).17 Generalizações e especializações Os relacionamentos entre classes demonstram rela- ções de generalidade ou especificidade entre as clas- ses envolvidas� A generalização e a especialização são dois pontos de vista do mesmo relacionamento: dadas duas classes A e B, se A é uma generalização de B, então B é uma especialização de A. Nos diagramas de classes (figura 13), a herança é representada na UML por uma flecha partindo da sub- classe (classe herdeira, classe que herda as proprie- dades de outra classe através de uma generalização) em direção à superclasse (classe base, a classe que possui propriedades herdadas por outras classes). Percebe-se que a subclasse é uma especialização de sua superclasse (a subclasse especializa a super- classe), e que uma superclasse é uma generalização de suas subclasses (a superclasse generaliza as subclasses). (BEZERRA, 2007) Subclasse1 Subclasse2 Superclasse ... SubclasseN Subclasse1 Subclasse2 Superclasse ... SubclasseN Figura 13: Representações alternativas para o relacionamento de generalização na UML. Fonte: Bezerra (2007, p. 129) adaptado. É importante lembrar que uma classe representa um conjunto de objetos que partilham um conjunto 18 comum de propriedades (atributos, operações, as- sociações). Mas, alguns objetos, embora bastante semelhantes a outros, podem ter um conjunto de propriedades que outros não possuem. Por exem- plo, em um diagrama de uma empresa, podemos ter uma classe chamada Funcionários que pode ter os mesmos atributos como nome, endereço, sa- lário base; mas, no caso de funcionários específi- cos, como vendedores, temos os atributos como região onde trabalham e comissão� Nesse caso, os vendedores pertecem a classe Funcionários e a classe Vendedores que herda as propriedades dos Funcionários (BEZERRA, 2007). Dependências Nas classes, as dependências podem existir por vá- rias razões: uma classe envia uma mensagem para outra; uma classe tem outra como parte de seus dados; uma classe menciona uma outra como um parâmetro de uma operação� A figura 15 exemplifica algumas dependências. A classe Janela de Benefícios é dependente da classe Funcionários. REFLITA Vamos refletir! Em um sistema de uma univer- sidade de Controle de Alunos, você conseguiria criar alguma classe com dependência? Que pala- 19 vras-chave poderia usar? Seria possível criar uma classe Aluno e uma classe dependente chamada Notas? Janela de Benfícios cliente fornecedor dependência Funcionário Entrada de Dados de Funcionários Entrada de Dados de Benefícios Figura 14: Exemplo de dependência. Fonte: Fowler (2005, p. 6) adap- tado. Em UML há muitas variedades de dependência, cada uma com semântica e palavras-chave (tabela 1) es- pecíficas. As dependências podem ser usadas para demonstrar relacionamentos transitórios, no caso de um objeto passado para outro parâmetro� Palavra-chave Significado <<call>> A origem chama uma operação no destino� <<create>> A origem cria instâncias do destino� <<derive>> A origem é derivada do destino� <<instantiate>> A origem é uma instância do destino. (Note que, se a origem é uma classe, a própria classe é uma instância de classe da classe; isto é, a classe de destino é uma metaclasse.) <<permit>> O destino permite que a origem acesse seus recursos privados� 20 Palavra-chave Significado <<realize>> A origem é uma implementação de uma especifi- cação ou interface definida pelo destino (página 80). <<refine>> O refinamento indica um relacionamento entre diferentes níveis semânticos; por exemplo, a origem poderia ser uma classe de projeto e o destino, a classe de análise correspondente� <<substitute>> A origem é substituível pelo destino (página 61). <<trace>> Usada para controlar coisas como requisitos de classes ou como alterações em um modelo se vinculam a alterações em outro lugar� <<use>> A origem exige o destino para sua implementação� Tabela 2: Palavras-chave e significados. Fonte: Fowler (2005, p. 63) adaptado. Regras de Restrição Fowler (2005) destaca que a UML permite que se use várias linguagens para descrever restrições� Pode ser a linguagem natrual ou a linguagem formal de restri- ções de objeto� As restrições devem ser colocadas entre chaves ({}). O uso de notação formal pode evitar o risco de uma interpretação errônea, devido ao uso de uma linguagem natural que pode ser ambígua� 21 Pilha tamanho : Inteiro {tamanho >=0} inserir( elemento ) retirar() : Objeto { pós-condição: novo tamanho = tamanho anterior + 1 } { pós-condição: novo tamanho = tamanho anterior - 1 } Figura 15: Exemplo de Restrições. Fonte: Larman, (2004, p. 282) SAIBA MAIS Sobre os símbolos de anotações que podem ser usados em UML, como notas, comentários, res- trições e corpo de métodos, leia as páginas 273 a 276, do livro “Utilizando UML e padrões”, de Craig Larman� O livro está disponível em sua biblioteca virtual (Minha Biblioteca). 22 DIAGRAMAS DE SEQUÊNCIAS E INTERAÇÕES Os diagramas de sequências oferecem uma visua- lização de como os objetos interagem� Podem ser representados por quadros (figura 16). Cada quadro fornece um contexto posicionando elementos como linhas de vidas e mensagens; tendo um operador e cada fragmento pode ter uma sentinela� As sentine- las são expressões condicionais colocadas entre colchetes e indicam que uma mensagem é enviada somente se a sentinela for verdadeira� :Pedido cuidadoso:Distribuidor regular: Distribuidor :Mensageiro loop alt operador confirmar quadro opt [para cada item de linha] [valor > $10.000] [precisaConfirmação] despachar despachar despachar [else] sentinela Figura 16: Exemplo de Diagrama de sequências e laços condicionais. Fonte: Fowler (2005, p. 71) adaptado. 23 Em UML existem vários operadores (figura 16). Para mostrar um laço, utiliza-se o operador loop – geral- mente, possui um número de limite – com um único fragmento e coloca a base da interação na sentinela� Para lógica condicional, é possível usar o operador alt (se-então-senão) e colocar uma condição em cada fragmento� Somente o fragmento cuja sentinela é verdadeira será executado. No caso de ter um única opção, pode-se usar um operador opt (se)� Operador Significado alt Múltiplos fragmentos alternativos; somente aque- le cuja condição for verdadeira será executado. opt Opcional; fragmento é executado somente se a condição fornecida for verdadeira� Equivalente a um alt, com apenas um caminho� par Paralelo; cada fragmento é executado em paralelo� loop Laço; o fragmento pode ser executado várias vezes e a sentinela indica a base da interação� region Região crítica; o fragmento pode ter apenas uma linha de execução ativa por vez. neg Negativo; o fragmento mostra uma interação inválida� ref Referência; refere-se a uma interação definida em outro diagrama� O quadro é desenhado de forma a abordar as linhas de vida envolvidas na interação. Você pode definir parâmetros e um valor de retorno� sd Diagrama de sequência; usada para circundar um diagrama de sequência inteiro; se você quiser. Tabela 3: Operadores comuns para quadro de iteração. Fonte: Fowler (2005, p. 72) adaptado. 24 Acesse o Podcast 2 em Módulos Ocorrências de execução As ocorrências de execução caracterizam o tempo em que o objeto está ativo, isto é, o tempo em que ele está realizando alguma operação� Temos como notações gráficas de ocorrências de execução blocos retangulares que são posicionados sobre a linha de vida de um objeto� No topo de uma ocorrência de execução, encontramos o receptor com o recebi- mento de uma mensagem� Na parte inferior dessa ocorrência de execução, temos o término de uma operação realizada pelo objeto� Muitas vezes, as ocorrências de execução não são utilizadas em diagramas de sequências� Quando uti- lizadas, tornam desnecessário o uso de mensagens de retorno. Por que isso acontece? Porque o final de uma ocorrência de execução corresponde ao retorno do fluxo de controle para o emissorda mensagem, no caso de mensagens síncronas (BEZERRA, 2007). Criação e Destruição de Objetos A criação de um objeto é o momento em que esse objeto passa a existir no sistema, e passa a realizar suas responsabilidades� Enquanto que a destruição 25 de um objeto é o momento no qual esse objeto deixa de existir no sistema. No caso de o objeto existir desde o início, deve ser posicionado no topo do diagrama. No entanto, existe a possibilidade de que a própria interação crie um ou mais objetos de certa classe� Então, a posição vertical de um objeto em um diagrama de sequência indica o momento no qual ele é criado (instanciado) e começa a participar da interação� Nesse momento, o retângulo que representa o objeto deverá ser po- sicionado mais abaixo no diagrama. A instanciação de um objeto é sempre requisitada por outro objeto participante da interação através de uma mensagem que pode ser elaborada de duas maneiras: 1. com o estereótipo <<create>> ou 2. com o nome do método construtor que será ati- vado (BEZERRA, 2007). Observe que a flecha da mensagem é pontilhada e aponta para o objeto em vez de para a linha de vida� Perceba que a mensagem de criação utiliza o estereótipo <<create>> e está em forma de seta que termina na cabeça da linha de vida do objeto sendo criado (figura 17). 26 ObjetoCriador ObjetoCriado<<create>> Figura 17: Criação de um objeto no diagrama de sequência. Fonte: Bezerra (2007, p. 197) adaptado. FIQUE ATENTO Estereótipos tratam-se de mecanismos de uso geral da UML, que são utilizados para estender o significado de determinado elemento de um dia- grama. A equipe de desenvolvimento pode definir estereótipos quanto à forma; estereótipos gráfi- cos (ou ícones) e estereótipos textuais. Os diagramas de sequência podem mostrar também a destruição de objetos no decorrer de uma intera- ção� Quando o objeto não é mais necessário na inte- ração, geralmente é destruído� O símbolo X na parte de baixo da linha de vida de um objeto representa que ele está sendo destruído� Além disso, a mensagem de destruição é chamada com o estereótipo <<des- troy>>. A figura 18 mostra um exemplo da notação para destruição de objetos� 27 ObjetoDestruidor <<destroy>> ObjetoDestruído Figura 18: Destruição de um objeto em um diagrama de sequência. Fonte: Bezerra (2007, p. 97) adaptado. Mensagens síncronas e assíncronas Em UML o conceito de mensagens está relaciona- do ao tipo de comunicação gerado para realizar as mensagens. Sendo assim, temos os seguintes tipos: 1. Uma mensagem síncrona indica que o ob- jeto remetente espera que o objeto receptor processe a mensagem antes de recomeçar o seu processamento. Ou seja, o remetente fica bloqueado até que o receptor termine de atender à requisição. Uma mensagem síncro- na está tipicamente relacionada à chamada de uma operação definida na classe do objeto receptor da mensagem. 28 2. Uma mensagem assíncrona é aquela na qual o objeto remetente não espera a resposta para prosseguir com o seu processamento. 3. Uma mensagem de sinal é aquela usada para enviar um sinal. Um sinal pode repre- sentar o envio de uma requisição entre dois módulos (por exemplo, cliente e servidor) em um sistema distribuído. 4. Uma mensagem de retomo é aquela utiliza- da para especificar o retorno (término) de uma mensagem enviada anteriormente. (BEZERRA, 2007, p. 186) E como são as notações de mensagens em um dia- grama de sequência? Geralmente são flechas dese- nhadas na horizontal, conectando uma linha de vida a outra� O objeto do qual parte a seta é aquele que está enviando a mensagem, ou seja, o objeto remetente� O objeto para o qual a seta está apontando é aquele que está recebendo a mensagem, ou seja, o objeto receptor� Você poderá perceber que o formato da ponta da seta indica o tipo de mensagem que está sendo enviada: síncrona, assíncrona, retorno e cria- ção de objeto� Dessa forma, temos alguns formatos possíveis em um diagrama de sequência (figura 19). O rótulo da mensagem é posicionado acima dessa linha� É possível notar a passagem do tempo no dia- 29 grama de sequência observando-se a direção vertical no sentido de cima para baixo. Sendo que, quanto mais abaixo uma mensagem aparece no diagrama, mais tarde no tempo a mensagem foi enviada� Mensagem síncrona Mensagem assíncrona Mensagem de retorno Mensagem de criação de objeto<<create>> Figura 19: Notações para os diversos tipos de mensagens em diagra- mas de sequência. Fonte: Bezerra (2007, p. 195) adaptado. 30 CONSIDERAÇÕES FINAIS Neste último módulo, abordamos os relacionamen- tos de diagramas de classe e objetos� Estudamos o relacionamento de associação que especifica ob- jetos conectados uns aos outros e verificamos que a multiplicidade refere-se à quantidade de objetos que podem ser conectados pela instância de uma associação, enquanto que as classes associativas são classes que estão ligadas a associações, em vez de estarem ligadas a outras classes� Em seguida, verificamos que a associação reflexi- va associa objetos com papéis distintos da mes- ma classe� Tratamos da generalização e da espe- cialização como dois pontos de vista do mesmo relacionamento� Percebemos que os diagramas de sequências ofe- recem visualização de como os objetos interagem� Estudamos a criação de um objeto como um momen- to em que ele passa a existir no sistema, e passa a realizar suas responsabilidades� E que a destruição de um objeto é um momento no qual esse objeto deixa de existir no sistema. Finalmente, verificamos o comportamento de men- sagens síncronas e assíncronas� Espero que tenha aprendido bastante com a leitura deste conteúdo� 31 SÍNTESE MECANISMOS DE UML 1) Associação demonstra um relacionamento estrutural que especifica objetos conectados uns aos outros. 3) Classes associativas são aquelas que estão ligadas as associações, em vez de estarem ligadas a outras classes. 4) Associação Reflexiva ou autoassociação associa objetos com papéis distintos da mesma classe. 2) Multiplicidade se refere à quantidade de objetos que podem ser conectados pela instância de uma associação. ANÁLISE E PROJETO DE SISTEMAS 5) Associação bidirecional é representada por uma seta de duas pontas, é um par de propriedades inversamente vinculadas. 6) Agregações e composições podem ser assimétricas, propagam comportamentos, a utilização de um todo-parte. 7) Generalizações e especializações são dois pontos de vista do mesmo relacionamento. 9) Os diagramas de sequências oferecem uma visualização de como os objetos interagem. 10) A criação de um objeto é o momento em que esse objeto passa a existir no sistema, e passa a realizar suas responsabilidades. Enquanto que a destruição de um objeto é o momento no qual este objeto deixa de existir no sistema. 11) Mensagens síncronas indicam que o objeto remetente espera que o objeto receptor processe a mensagem antes de recomeçar o seu processamento. 12) Mensagem assíncrona é aquela na qual o objeto remetente não espera a resposta para prosseguir com o seu processamento. 8) Dependências podem existir por várias razões: uma classe envia uma mensagem para outra; uma classe tem outra como parte de seus dados; uma classe menciona uma outra como um parâmetro de uma operação. Referências Bibliográficas & Consultadas BEZERRA, E. Princípios de análise e projeto de sistemas com UML. Rio de Janeiro: EIsevier, 2007. FOWLER, M. UML essencial: um breve guia para a linguagem-padrão de modelagem de obje- tos. 3. ed. Porto Alegre: Bookman, 2005. [Minha Biblioteca] GONÇALVES, E� J� T� Análise e projeto de sistemas� 3. ed. Fortaleza: EdUECE, 2015. LARMAN, C� Utilizando UML e padrões� 3� ed� Porto Alegre: Bookman, 2004. [Minha Biblioteca] MARINHO, A� L� Análise e modelagem de sis- temas. São Paulo: Pearson Education do Brasil, 2016. [Biblioteca Virtual] MEDEIROS, E� Desenvolvendo software com UML 2.0: definitivo. São Paulo: Pearson Makron Books, 2004. [Biblioteca Virtual]PAGE-JONES, M� Fundamentos do desenho orien- tado a objeto com UML. 1. ed. São Paulo: Makron Books, 2001. [Biblioteca Virtual] PAULA FILHO, W. P. Engenharia de software: funda- mentos, métodos e padrões. 3. ed. Rio de Janeiro: LTC, 2009. Disponível em: [Minha Biblioteca] PRESSMAN, R. S.; MAXIM, B. R. Engenharia de sof- tware: uma abordagem profissional. 8. ed. Porto Alegre: AMGH, 2016. [Minha Biblioteca] SOMMERVILLE, I� Engenharia de software. 10. ed. São Paulo: Pearson Brasil, 2019. [Biblioteca Virtual] Introdução Relacionamentos com os diagramas de classes e objetos Associação Multiplicidade Interpretação em programas Nomes de associação, direção de leitura de papéis Classes associativas Associação reflexiva ou autoassociação Associação bidirecional Agregações e composições Generalizações e especializações Dependências Regras de Restrição Diagramas de sequências e interações Ocorrências de execução Criação e Destruição de Objetos Mensagens síncronas e assíncronas Considerações finais Síntese
Compartilhar