5.1 Programa do Módulo 2 Orientação a Objetos Conceitos Básicos Análise Orientada a Objetos (UML) Diagramas de Interação: Seqüência, Comunicação Processo Unificado (RUP) Métodos Orientados a Objetos UML Diagramas UML 5.2 Analisar através de Casos de Uso, Casos de Uso, Cenários: Comunicação e Seqüência
Métodos Orientados a Objetos UML Diagramas UML Os Objetos Precisam Colaborar 5.3 Objetos não têm utilidade se eles não puderam colaborar para resolver um problema. Cada objeto é responsável por seu próprio comportamento e status. Nenhum objeto pode responder unicamente por todas as responsabilidades do sistema. Como os objetos interagem? Através de Mensagens. Uma mensagem apresenta como um objeto solicita a outro objeto que este execute alguma atividade As mensagens são o mecanismo que permitem que os objetos se comuniquem. Uma mensagem normalmente é implementada por uma ação simples Quando a ação é executada o controle retorna a que enviou a mensagem com um valor de retorno (caso exista). Mensagem getcourseofferings(forsemester) :RegistrationController : Car buyer :CourseCatalogSystem Métodos Orientados a Objetos UML Diagramas UML Diagramas de Interação Um Cenário é uma instância de um Caso de Uso: ele é um caminho através dos fluxos de eventos de um Caso de Uso particular Um Caso de Uso é um classificador, uma unidade de reagrupamento de Cenários. 5.4 Cenários são utilizados para descrever como os casos de uso são realizados em termos de interações entre conjuntos de objetos Cenários são desenvolvidos para auxiliar a identificação de objetos e classes e também das interações entre objetos necessárias a execução de uma parte da funcionalidade de um sistema capturada em um caso de uso. Através dos cenários pode-se explicitar como as responsabilidades de um sistema, especificadas através dos casos de uso, são distribuídas entre os objetos e as classes do sistema. O fluxo dos eventos de um sistema é capturado de maneira textual, enquanto cenários são capturados em Diagramas de Interação que são uma representação gráfica de cenários podendo ser de quatro tipos: Diagramas de Seqüência Diagrama de Comunicação Diagramas de Temporização Diagramas de Visão Geral da Interação
Métodos Orientados a Objetos UML Diagramas UML Diagramas de Interação I 5.5 Diagrama de Seqüência Visão orientada a temporização da interação entre os objetos para implementar um dos comportamentos esperados do sistema. Diagrama de Comunicação Visão estrutural da troca de mensagens entre os objetos Originário do diagrama de colaboração do UML 1. Seqüência Comunicação Métodos Orientados a Objetos UML Diagramas UML Diagramas de Interação II 5.6 Diagrama de Temporização Visão com as restrições temporais entre as mensagens enviadas e recebidas em uma interação. Diagrama opcional que talvez tenha maior interesse em aplicações de Tempo Real, onde a temporização representa um fator crítico. Diagrama de Visão Geral da Interação Visão de alto nível dos conjuntos de interações combinadas em uma seqüência lógica e incluindo lógica do fluxo de controle para navegação entre as interações. Integração de Diagramas de Seqüência para os conjuntos de interações com Diagramas de Atividades para a seqüência lógica. Temporização Visão Geral da Interação
Métodos Orientados a Objetos UML Diagramas de Interação Diagrama de Seqüência I 5.7 Diagrama de Interação que enfatiza a ordenação temporal das mensagens. Modelagem do Fluxo de Controle em relação a temporização. Conjunto dos objetos e atores (com suas linhas de vida) que colaboram na realização de um Caso de Uso. Utilizados para descrever as interações entre objetos de um ponto de vista temporal: Conjunto de mensagens trocadas entre os objetos; Sequenciamento cronológico com a notação da vida do objeto ; Passagem do tempo na vertical/troca de mensagens na horizontal com a representação de paralelismo de existência, de alternativas, etc. Utilização mais comum na documentação de Casos de Uso Realização para apresentar como os objetos interagem para implementar a totalidade ou uma parte da funcionalidade representada pelo caso de uso. Normalmente se tem um Diagrama de Seqüência para o fluxo principal e diferentes diagramas para cada um dos sub-fluxos. Diagramas de Seqüência são importantíssimos para os projetistas pois clarificam os papéis dos objetos em um fluxo e fornecem informações básicas para a determinação das responsabilidades das classes e de suas interfaces. e JP mp Métodos Orientados a Objetos - UML - Diagramas de Interação Seqüência Diagrama de Seqüência II 5.8 Os objetos se comunicam através do envio de Mensagens que partem de um objeto cliente (emissor) em direção a um objeto provedor (receptor) A ordem do envio das mensagens é dada pela posição destas em um eixo vertical (abaixo do objeto). Mensagens síncronas, assíncronas, atraso na transmissão, restrições temporais... Os diagramas de seqüência mostram os objetos e classes envolvidos em um cenário assim como o seqüenciamento de mensagens trocadas entre os objetos para que estes implementem a funcionalidade do cenário. Pode-se ter um diagrama de seqüência para cada sub-fluxo de um caso de uso. Criação, destruição de objetos/duração da ativação de um objeto/loops, condições podem ser representadas. Classes de Fronteira são adicionadas a um diagrama de seqüência para mostrar a interação com um usuário ou outro sistema.
Métodos Orientados a Objetos - UML - Diagramas de Interação Seqüência Diagrama de Seqüência: Exemplo Caso de Uso: Register For Courses Sub-Fluxo Create a Schedule 5.9 : Student :RegisterForCoursesForm :RegistrationController :CourseCatalogSystem : Course Catalog 3: get course offerings(forsemester) Métodos Orientados a Objetos - UML - Diagramas de Interação Seqüência Diagrama de Seqüência: Exemplo Caso de Uso: Register For Courses Sub-Fluxo Create a Schedule 5.10 : Student :RegisterForCoursesForm :RegistrationController :CourseCatalogSystem : Course Catalog 3: get course offerings(forsemester) RegisterForCoursesForm conhece os dados que ele precisa apresentar mas não sabe como obtê-los. Esta é uma das responsabilidades de RegistrationControler.
Métodos Orientados a Objetos - UML - Diagramas de Interação Seqüência Diagrama de Seqüência: Exemplo Caso de Uso: Register For Courses Sub-Fluxo Create a Schedule 5.11 : Student :RegisterForCoursesForm :RegistrationController :CourseCatalogSystem : Course Catalog 3: get course offerings(forsemester) Somente RegisterForCoursesForm interage com o ator Student. Métodos Orientados a Objetos - UML - Diagramas de Interação Seqüência Diagrama de Seqüência: Exemplo Caso de Uso: Register For Courses Sub-Fluxo Create a Schedule 5.12 : Student :RegisterForCoursesForm :RegistrationController :CourseCatalogSystem : Course Catalog 3: get course offerings(forsemester) O RegistrationControler compreende como os estudantes e o schedules estão relacionados. Ele devolve as informações necessárias a construção do schedule. Como?
Métodos Orientados a Objetos - UML - Diagramas de Interação Seqüência Diagrama de Seqüência: Exemplo Caso de Uso: Register For Courses Sub-Fluxo Create a Schedule 5.13 : Student :RegisterForCoursesForm :RegistrationController :CourseCatalogSystem : Course Catalog 3: get course offerings(forsemester) Somente CourseCatalogSystem interage com o ator externo Course Catalog. Métodos Orientados a Objetos - UML - Diagramas de Interação Seqüência Diagrama de Seqüência: Objetos 5.14 :RegisterForCoursesForm :RegistrationController SWTSU Catalog : CourseCatalogSystem Objetos Anônimos Objetos com Nome Linhas da Vida Objetos são apresentados como uma linha tracejada denominada linha da vida do objeto Esta linha representa a existência do objeto durante um certo tempo. Um retângulo representando o objeto é desenhado no topo da linha da vida utilizando a notação nome do objeto : nome da classe. Pode-se representar objetos sem classe (normalmente no início da modelagem), classes sem objetos (todos os objetos da classe) ou um objeto específico da classe O três tipos de representações podem estar presentes no mesmo diagrama.
Métodos Orientados a Objetos - UML - Diagramas de Interação Seqüência Diagrama de Seqüência: Atores 5.15 SWTSU Catalog : :RegisterForCoursesForm :RegistrationController CourseCatalogSystem : Student : Course Catalog Instâncias dos Atores Normalmente os atores são representados como o primeiro elemento a esquerda nos diagramas de seqüência, como o elemento que está invocando a ação. Se um diagrama tiver mais que um ator deve-se procurar colocá-los nas laterais do diagrama. Interações entre atores não são representadas pois atores são por definição externos ao modelo. Métodos Orientados a Objetos - UML - Diagramas de Interação Seqüência Diagrama de Seqüência: Mensagens 5.16 SWTSU Catalog : :RegisterForCoursesForm :RegistrationController CourseCatalogSystem : Student : Course Catalog Mensagens Reflexivas 3: get course offerings(for Semester) Mensagem A mensagem é o meio de comunicação entre dois objetos e transporta informação para que a ação possa ocorrer. É representada por uma seta entre duas linhas de vida de objetos ou partindo e chegando na mesma linha de vida para o caso de Mensagens Reflexivas A mensagem é representada por um nome e pelos parâmetros que representam as informações transportadas. Um mensagem não precisa obrigatoriamente ser o nome de uma operação específica do objeto que a recebe, embora com o progresso da modelagem isto venha a ocorrer.
Métodos Orientados a Objetos - UML - Diagramas de Interação Seqüência Diagrama de Seqüência: Ativação 5.17 SWTSU Catalog : :RegisterForCoursesForm :RegistrationController CourseCatalogSystem : Student : Course Catalog 3: get course offerings(for Semester) Ativação A ativação mostra o período de tempo durante o qual o objeto está realizando uma ação, seja diretamente ou através de uma solicitação de serviço a outro objeto, sendo representada por um retângulo colocado sobre a linha da vida do objeto. O início do retângulo fica alinhado com o início da ação e o final com seu término. Métodos Orientados a Objetos - UML - Diagramas de Interação Seqüência Diagrama de Seqüência: Eventos 5.18 SWTSU Catalog : :RegisterForCoursesForm :RegistrationController CourseCatalogSystem : Student : Course Catalog 3: get course offerings(for Semester) Eventos Um evento caracteriza o envio ou o recebimento de uma mensagem por um objeto e não é apresentado explicitamente como um conceito do diagrama de seqüência. Ele pode ser visto como a intersecção das mensagens com as linhas de vida dos objetos, já que uma mensagem conecta a ocorrência de dois eventos em duas linhas de vida.
Métodos Orientados a Objetos - UML - Diagramas de Interação Seqüência 5.19 Diagrama de Seqüência: Quadro de Interação SWTSU Catalog : :RegisterForCoursesForm :RegistrationController CourseCatalogSystem : Student : Course Catalog ref 3: get course offerings(for Semester) Select Offerings Quadro de Interação Uma região do diagrama que é dividida em um ou mais fragmentos Cada quadro tem um operador e pode ter uma sentinela. Utilizados para representar laços e comportamento condicional, embora para estas representações os diagramas de atividades apresentem melhores resultados. Métodos Orientados a Objetos - UML - Diagramas de Interação Seqüência Quadro de Interação: Conceitos 5.20 Operador Sentinela procedure despachar foreach (itemdelinha) if(produto.valor>10k) cuidadoso.despachar else regular.despachar end if end for if(precisaconfirmação) mensageiro.confirmar end procedure loop opt [para cada item] alt [valor > $10.000] [else] [necessitaconfirmação] Quadro Operadores definem a finalidade do quadro de interação. Sentinelas são expressões condicionais colocadas entre colchetes para indicar a base da interação. Não disponível na versão atual da ferramenta Rational Rose. [FOO04]
Métodos Orientados a Objetos - UML - Diagramas de Interação Seqüência Quadro de Interação: Conceitos 5.21 Operador alt opt par loop region ref sd Significado Múltiplos fragmentos alternativos Somente aquele cuja condição for verdadeira será executado. Opcional indicando que o fragmento é executado somente se a condição fornecida for verdadeira alt com um só caminho. Paralelo indicando que cada fragmento é executado em paralelo. Laço indicando que o fragmento pode ser executado diversas vezes com a sentinela indicando a base da interação. Região crítica indicando que o fragmento pode ter unicamente uma linha de execução ativa por vez. Referência que faz referência a um interação definida em outro diagrama. O quadro é desenhado de forma a abordar as linhas de vida envolvidas na interação. Pode-se definir parâmetros e um valor de retorno. Diagrama de Seqüência sendo utilizado para circundar um diagrama de seqüência inteiro. [FOO04] Métodos Orientados a Objetos - UML - Diagramas de Interação Diagramas de Comunicação Modelar o Fluxo de Controle, enfatizando a organização dos objetos que participam da interação. 5.22 Maneira alternativa de se apresentar um cenário Diagramas organizados em torno de objetos, representando as interações de um objeto e as ligações (instâncias das associações das classes) deste objeto com outros objetos. Diagramas apresentam: Objetos que participam da interação (desenhados como retângulos). Ligações entre objetos representadas por linhas entre eles. Mensagens representadas como texto associado a um flecha que aponta do objeto cliente para o objeto fornecedor. Utilizado pelos projetistas para definir e clarificar os papéis dos objetos que implementam um fluxo de eventos particular de um caso de uso Constituem a fonte de informação primária para determinar as responsabilidades das classes e suas interfaces. Devido a suas características este diagrama apresenta maior interesse em atividades de análise, na definição das interações entre um pequeno número de classes. Com um grande número de classes o diagrama torna-se de difícil leitura e neste caso os diagramas de seqüência apresentam melhores resultados. e JP mp
Métodos Orientados a Objetos - UML - Diagramas de Interação Comunicação Diagrama de Comunicação: Exemplo 5.23 : Student : Course Catalog : RegisterForCoursesForm 3: get course offerings(forsemester) : RegistrationController : CourseCatalogSystem Como no diagrama de seqüência tem-se neste diagrama instâncias de classes e atores com suas ligações e mensagens descrevendo como os objetos estão relacionados e como interagem. O diagrama indica a comunicação entre os objetos participantes através da troca de mensagens. Pode-se ter um diagrama de comunicação para cada sub-fluxo de um caso de uso. Métodos Orientados a Objetos - UML - Diagramas de Interação Comunicação Diagrama de Comunicação: Objetos 5.24 O objeto é representado como um retângulo com a notação nome do objeto : nome da classe. Do mesmo modo que no diagrama de seqüência, pode-se representar objetos sem classe (normalmente no início da modelagem), classes sem objetos (todos os objetos da classe) ou um objeto específico da classe O três tipos de representações podem estar presentes no mesmo diagrama. Na ferramenta Rational Rose, os Diagramas de Comunicação são criados diretamente a partir dos de Seqüência, pressionando a tecla F5. : RegisterForCoursesForm : RegistrationController Objetos SWTSU Catalog : CourseCatalogSystem
Métodos Orientados a Objetos - UML - Diagramas de Interação Comunicação Diagrama de Comunicação: Atores 5.25 Normalmente os atores estão presentes neste diagrama como os invocadores das interações. Deve-se deixar os atores nas bordas dos diagramas. Como no diagrama de seqüência a interação entre os atores não deve ser apresentada. : Student : RegisterForCoursesForm Atores : RegistrationController : Course Catalog SWTSU Catalog : CourseCatalogSystem Métodos Orientados a Objetos - UML - Diagramas de Interação Comunicação Diagrama de Comunicação: Ligações e Mensagens 5.26 Mensagens : Student : RegisterForCoursesForm : RegistrationController Nome da Mensagem: Verbo Cada mensagem cria um ligação entre os objetos Uma Associação entre suas classes. Ligações 3: get course offerings(forsemester) : Course Catalog SWTSU Catalog : CourseCatalogSystem A flecha deve apontar o objeto fornecedor e deve-se usar uma numeração para ordenamento.
Métodos Orientados a Objetos - UML - Diagramas de Interação Comunicação Exemplo: Que Associações pode-se Deduzir? 5.27 1: submit schedule( ) 2: submit schedule( ) : Student : Student : RegisterForCoursesForm 6: has pre-requisites(courseoffering) 8: any conflicts?( ) : Schedule 5: is selected?( ) 10: mark as enrolled in( ) 3: save( ) 4: submit( ) 7: still open?( ) 9: add student(schedule) : RegistrationController : CourseOffering : PrimaryScheduleOfferingInfo Métodos Orientados a Objetos - UML - Diagramas de Interação 5.28 Relação entre os Diagramas de Interação Diagramas de Seqüência e Comunicação são semanticamente equivalentes Pode-se diretamente converter, sem perda de informação, um diagrama no outro (F5 no Rational Rose). Ambos modelam aspectos dinâmicos de um sistema através da modelagem de um cenário de um caso de uso. Os Diagramas de Seqüência fornecem uma maneira para observar-se um cenário de uma maneira temporal: o que acontece primeiro e o que vem depois Este tipo de diagrama é muito útil nas fases iniciais de uma modelagem. Os Diagramas de Comunicação fornecem um grande quadro para um cenário, pois as colaborações são organizadas em torno das ligações que um objeto tem com outros objetos Estes diagramas tendem a ser mais utilizados nas fases de desenvolvimento quando se deve planejar a implementação das associações. &
Métodos Orientados a Objetos - UML - Diagramas de Interação Diferenças entre os Diagramas 5.29 Diagramas de Seqüência Diagramas de Comunicação Apresentam uma seqüência explicita de mensagens. Apresentam as ativações Melhores para a visualização geral do fluxo. Melhores para especificações de sistemas de tempo real e cenários complexos. Apresentam relações em adição às interações. Melhores para visualizar padrões de comunicação. Melhores para a visualização de todos os efeitos de um objeto específico. Mais facilmente utilizados para sessões de brainstorming. Métodos Orientados a Objetos - UML - Diagramas de Interação Revisão 5.30 Qual o objetivo dos Diagramas de Interação? O que é um Diagrama de Seqüência? E um Diagrama de Comunicação? Quais são as semelhanças entre os Diagramas de Seqüência e Comunicação? Quais são as diferenças entre os Diagramas de Seqüência e Comunicação?
Métodos Orientados a Objetos - UML - Diagramas de Interação Exercício 5.31 Conhecendo os seguintes dados: 1. O Ator Comprador em Perspectiva (CP) inicia a seqüência requisitando ao Perfil do Planejador Pessoal (PPP) que mantenha um perfil. 2. O Perfil Pessoal do Planejador (PPP) solicita que o Perfil Pessoal do Controlador (PPC) mantenha um perfil. 3. O PPC envia uma mensagem a um objeto Registro do Comprador solicitando-lhe que encontre um registro do planejador. 4. O PPP então apresenta o registro do planejador. 5. O ator CP atualiza as informações do perfil e solicita ao PPP que salve a informação do perfil. 6. O PPP pega a nova informação e solicita ao PPC que salve a informação do perfil. 7. O PPC solicita o Registro do Comprador que atualize o registro com as últimas informações que o ator introduziu. 8. O PPC solicita ao objeto de Perfil do Consumidor (PC) que crie um novo perfil para o sistema. Desenhe um Diagrama de Seqüência e um de Comunicação. Métodos Orientados a Objetos - UML - Diagramas de Interação Solução do Exercício 5.32
Métodos Orientados a Objetos - UML Diagramas de Casos de Uso Exercício 2: Sistema de Controle de Pedidos 5.33 Uma empresa pretende desenvolver um Sistema de Informação para a gerência dos pedidos recebidos pela empresa. Este sistema de informação deve ser capaz de controlar o cadastro dos clientes, dos pedidos e dos produtos com todas as funcionalidades características (inclusão, alteração, supressão). Para realizar qualquer operação com o sistema o funcionário deve ter realizado o login no sistema. No sistema um login é caracterizado por um username e uma password. Os Clientes que serão gerenciados pelo SI podem ser do tipo Cliente Corporativo ou Cliente Pessoal. Cada Cliente pode estar associado a diversos Pedidos, mas um Pedido está associado unicamente a um Cliente. Um Pedido é composto por diversas Linhas de Pedido e cada Linha de Pedido logicamente só pode fazer parte de um único Pedido. As linhas de Pedido nascem e morrem com os Pedidos. Cada Linha de Pedido está associada a unicamente um Produto, mas um Produto pode estar associado a diversas Linhas de Pedido. Clientes Corporativos são definidos por um código, um nome, um endereço, um nome de contato, uma classe de crédito e um limite de crédito. Clientes Pessoais são definidos por um código, um nome, um endereço, e um número de cartão de crédito. Um Pedido é definido por uma data, um preço e um número. Cada Linha do Pedido é definida por uma quantidade e um preço e cada Produto é definido por um código, uma descrição e um preço. Exercício 2: Sistema de Controle de Pedidos Diagrama de Seqüência para o Fluxo de Eventos Cadastrar Cliente Corporativo Possibilidade 1 5.34 : Funcionario 1: setcodido(string) 2: setnome 3: setendereco 4: setcontato : ClienteCorporativo Inserir Cliente Alterar Cliente Excluir Cliente (from Controlar Clientes) (from Controlar Clientes) (from Controlar Clientes) <<realize>> <<realize>> <<realize>> Inserir Cliente Alterar Cliente Exlcuir Cliente 5: setclassecredito 6: setlimitecredito
Exercício 2: Sistema de Controle de Pedidos Diagrama de Seqüência para o Fluxo de Eventos Cadastrar Cliente Corporativo Possibilidade 1 5.35 Controle se o Cliente está cadastrado ou não. Exercício 2: Sistema de Controle de Pedidos Diagrama de Seqüência para o Fluxo de Eventos Cadastrar Cliente Corporativo Possibilidade 2 Descoberta de uma Classe de Interface 5.36
Exercício 2: Sistema de Controle de Pedidos Diagrama de Seqüência para o Fluxo de Eventos Cadastrar Cliente Corporativo Possibilidade 2 Sistema Externo 5.37 Exercício 2: Sistema de Controle de Pedidos Diagrama de Seqüência para o Fluxo de Eventos Cadastrar Cliente - Herança 5.38
Métodos Orientados a Objetos - UML - Diagramas de Interação Bibliografia 5.39 [FOO04] Martin Fowler, UML Essencial 3 ª Edição, Bookman, 2004. [IBM04] IBM Corporation, Essentials of Visual Modeling with UML 2.0, Material disponibilizado através do programa University da IBM.