Modelando Comportamento © 2001 Jaelson Castro Modelando Comportamento1 Objetivos Explicar por que nós modelamos comportamento? Introduzir Diagramas de Estado Statechart. Introduzir Diagramas de Atividades. Explicar o relacionamento do Diagrama de Classes, Diagrama de Seqüência, Diagrama de Colaboração. © 2003 Jaelson Castro Modelando Comportamento 2 Por que Modelar Comportamento? Um Diagrama de Classes é uma visão estática das classes de objetos e suas associações. Um modelo de comportamento é usado para entender os aspectos do sistema como: © 2003 Jaelson Castro evolução, resposta aos estímulos externos, variação temporal. Modelando Comportamento 3 Por que Modelar Comportamento? Comportamento é o aspecto do sistema que descreve as seqüências de operações que ocorrem em resposta aos estímulos externos. Importante para descrever a seqüência de processamento (ex. Sistemas interativos, tempo real, etc) © 2003 Jaelson Castro Modelando Comportamento 4 Statecharts Estes são diagramas de transição de estados (com algumas adições) que descrevem o comportamento de alguns objetos (uma pessoa, um estudante,…) Transições representam ações que ocorrem rapidamente e não são interropidas. Estados representam atividades com uma duração mais longa. O que estabelece “rapidamente” e “mais longa” depende da aplicação. © 2003 Jaelson Castro Modelando Comportamento 5 Diagrama de Estado para Ordem de Pagamento /get order Checking [all items in stock] Dispatching Do/package items Do/check items start [some item not In stock] Item received [all items in stock] Item received [some item not In stock] Waiting © 2003 Jaelson Castro /deliver package Delivered Modelando Comportamento 6 Statecharts : Eventos & Estados Um evento acontece no mundo e o sistema precisa saber disso. Em resposta ao evento, objetos no sistema podem receber uma mensagem para realizar uma ação (cada ação é uma operação). Após o envio da mensagem, o objeto normalmente continua no mesmo estado até a outra mensagem chegar. © 2003 Jaelson Castro Modelando Comportamento 7 Tempo de Vida do Curso Initialization offerNewCourse/set count=0 ^create(CourseRoster) addStudent[count<10] Open [count=10] cancel Closed quarterStarted cancel [Lochovsky98] Canceled © 2003 Jaelson Castro /delete(CourseRoster) Modelando Comportamento 8 Estados Um estado representa um período de tempo durante a vida do objeto quando ele satisfaz condições, realiza ações ou espera por algum evento. Em geral um estado pode ser caracterizado por um predicado lógico, ex.: “operacional”. Um predicado pode ser definido em termos de: O(s) valor(es) de um ou mais atributos da classe A existência de uma ligação com outro objeto Ex. O endereço de uma pessoa © 2003 Jaelson Castro Modelando Comportamento 9 Diagramas Statechart Um diagrama para cada classe com comportamento não trivial. Diagrama Statechart mostra: Todos os eventos que afetam a classe; Todos os seus possíveis estados. Usado para: Verificar consistência com os Diagramas de Seqüência; Identificar gatilhos/parâmetros/restrições de operações. © 2003 Jaelson Castro Modelando Comportamento 10 Diagramas Statechart - Notação Notação generalizada event(parameters)[condition]/action Start State 1 State 2 End © 2003 Jaelson Castro Modelando Comportamento 11 Diagramas Statechart - Transições Ações são processos que ocorrem rapidamente e não são interrompidos Condições (Guarda) retornam um valor lógico “True/False” - a transição ocorre quando “True” Quando não existe Evento no rótulo a transição ocorre assim que as atividades do estado corrente são concluídas © 2003 Jaelson Castro Modelando Comportamento 12 Atividades do/stateDiagramName(parameterList) -“chama” outro diagrama de estado entry/action -- executa a ação quando entra no estado exit/action -- executa a ação quando sai do estado © 2003 Jaelson Castro Modelando Comportamento 13 Atividades State 1 entry: action do: activity exit: action © 2003 Jaelson Castro Modelando Comportamento 14 A Evolução de um Curso Initialization do / Initialize addStudentt count=0 ^CourseRoster.Create() addStudent [count<10] Open entry / RegisterStudent exit / ^CourseRoster.AddStudent(student) [count=10] cancel Cancelled cancel Closed do / FinalizeCourse ^CourseRoster.Delete() quarterStarted © 2003 Jaelson Castro Modelando Comportamento 15 Estados aninhados (Super Estados) Diagramas de transição de estados podem ser de difícil leitura (quando contém mais de uma dúzia de estados). Diagramas Statecharts em UML, estados podem conter estados aninhados. Tais composições servem para refinamento de estados. © 2003 Jaelson Castro Modelando Comportamento 16 Estados aninhados (Super Estados) Transmission select R Neutral Reverse select N select N select F Forward © 2003 Jaelson Castro Modelando Comportamento 17 Estados aninhados (Super Estados) Transmission select R Neutral Reverse select N select N select F Forward stop upshift First Second downshift © 2003 Jaelson Castro upshift Third downshift Modelando Comportamento 18 Diagrama de Classe: Processamento de um pedido O r d e m o t s u C r e R e t a d v i c d a p e r P s i s e r d a m u n g n i t S : r e b m a n e * 1 M : e c i r p o y e n r S : ) ( g n a R t i d e c m t i k e h c ) ( e s o l c ) ( h c t a p s i d y r v l d e a t n i m e t i 1 C p a e u o t r s m r e P m t u C l a n o s r e r e t a N n c m o e c # a C t i d e r L t d m i e r c t i a R i d t g n e e r c ) ( g n a R t i d r c { m t e n i l sM F l i r b o h n I e ) o ( t r g = " p o r } * m e r ) ( d n i * O r n i L e d 1 0 n l o B : d e f i t a S s o t r. P c u d * 1 M : e c i r p y e n o m E e y o l p r g e I : y i t n a u q © 2003 Jaelson Castro Modelando Comportamento 19 Super Transição Transições podem ocorrer a partir de vários estados para um único estado ex. uma ordem de pagamento pode ser cancelada em algum ponto antes de ser liberada. Isto pode ser desenhado com várias transições ou através da criação de um super estado. © 2003 Jaelson Castro Modelando Comportamento 20 Diagrama de Statechart do pedido Order Start /get first item get next item [Not all items checked] Checking [All items checked && all items available] do: check item Dispatching do: initiate delivery [All items checked && some items not in stock] Item Received [all items available] Delivered Waiting Delivered Item Received [some items not in stock] Adicione um novo estado e separe as transições para mostrar que um pedido pode ser cancelado antes da sua entrega. © 2003 Jaelson Castro Modelando Comportamento 21 Diagrama de Statechart do pedido: Super Estado & Super Transição Order Superstate name Start Active /get first item get next item [Not all items checked] Checking [All items checked && all items available] do: check item Dispatching do: initiate delivery [All items checked && some items not in stock] Item Received [all items available] Waiting Item Received [some items not in stock] cancellation Cancelled © 2003 Jaelson Castro Delivered Modelando Comportamento 22 Estados Concorrentes Usado quando um dado objeto tem um conjunto de comportamentos independentes ex. Uma ordem de pagamento pode estar num estado “sendo verificada” ou “sendo autorizada” © 2003 Jaelson Castro Modelando Comportamento 23 Estados Concorrentes: Pedido autorização Cancelled Waiting Checking Dispatching Delivered Authorizing Authorized Rejected © 2003 Jaelson Castro verificação Modelando Comportamento 24 Transições Complexas Transição para a fronteira do super estado transição para o estado inicial do super estado. Também podem existir transições diretas para um estado específico (como programa “gotos”). Transição a partir da fronteira de um super estado transição a partir do estado final de um super estado © 2003 Jaelson Castro Modelando Comportamento 25 Statecharts & Relacionamento para outros Diagramas Eventos no diagrama de statechart devem aparecer como um mensagem de entrada para o objeto apropriado num diagrama de seqüência e colaboração. Um diagrama de statechart é preparado para todas as classes de objeto do Diagrama de Classes com comportamento complexo. Todo evento deve corresponder a uma operação na classe apropriada. © 2003 Jaelson Castro Modelando Comportamento 26 Statecharts & Relacionamento para outros Diagramas Toda ação deve corresponder à execução de uma operação na classe apropriada. Entry/Action, Exit/Action e Do/Activity num Estado, normalmente será equivalente a operações no Diagrama de Classes. Toda mensagem de saída enviada a partir de um statechart deve corresponder a uma operação em outra classe. © 2003 Jaelson Castro Modelando Comportamento 27 Diagramas de Atividade Diagramas de atividade descreve as atividades que envolvem concorrência e sincronização. Variação de Statecharts que focaliza num fluxo de atividades que são orientadas pelo processamento interno de um objeto. © 2003 Jaelson Castro Modelando Comportamento 28 Diagramas de Atividade Pode ser usado © 2003 Jaelson Castro Para modelar uma tarefa humana (parte da modelagem do negócio). Para descrever uma função do sistema (representada por um Caso de Uso). Na especificação de operações, (descreve a lógica de uma operação). Modelando Comportamento 29 Outro Exemplo: Processamento de um Pedido O Caso de Uso do processamento do pedido: Quando recebemos um pedido, checamos cada item para vermos se temos no estoque. Se temos, nós atribuímos os itens ao pedido. Se com essa ordem os níveis de estoque do produto atingem um valor mínimo então será necessário fazer um pedido de compra de produtos para o estoque.Enquanto fazemos isso, nós checamos se o pedido foi pago. Se o pagamento foi feito e se tivermos os itens no estoque, o pedido é despachado. Se o pagamento foi feito e nós não tivermos os itens no estoque, deixamos o pedido em espera. Se o pagamento não foi feito, o pedido é cancelado. © 2003 Jaelson Castro Modelando Comportamento 30 Diagrama de Atividade do Processamento de um Pedido Receive Order for each line * item on order Check [failed] Authorize Line Payment Item [succeeded] [in stock] Cancel Order Assign to Order © 2003 Jaelson Castro [stock assigned to all line items and payment authorized] Dispatch Order [need to reorder] Reorder Item Modelando Comportamento 31 Diagramas de Atividade Pontos de decisão: Calculate total cost [cost < $50] [cost ≥ $50] Charge customer’s account Get authorization Fim: podem existir transições num diagrama de atividade com nenhum estado destino; isto pode significar que: Nem todo processamento deve ter sido especificado, Ou, que outro diagrama de atividade assumirá o controle. © 2003 Jaelson Castro Modelando Comportamento 32 Raias Um diagrama de atividade pode ser dividido em raias. Cada raia: Representa um foco de responsabilidae na atividade Pode manipular distintas operações de um ou mais objetos. © 2003 Jaelson Castro Modelando Comportamento 33 Raias swimlane Get Order Purchase Order Dept. Synchronization bar Waiting Checking Dispatching [cancelled] Authorizing Finance Dept. © 2003 Jaelson Castro [accepted] Authorized [rejected] Modelando Comportamento 34 Mais Swimlanes Finance Stock Manager Order Receive Processing Order [failed] Authorize Payment [succeeded] Cancel Order [stock assigned to all line items and payment authorized] Dispatch Order © 2003 Jaelson Castro for each line * item on order Choose Check Outstanding Line Order Items Item for each chosen [in stock] order item * Assign Assign to Goods to Order Order [need to reorder] Reorder Item Receive Supply [all outstanding order items filled] Add Remainder to Stock Modelando Comportamento 35 Leituras Adicionais [Booch99] Booch, G. et all. The Unified Modeling Language User Guide. Chapters 19, 20, 21, 24. Addison-Wesley. [Fowler00] Fowler, M. et all. UML Distilled: A Brief Guide to the Standard Object Modelling Language. Chapters 8, 9. Addison-Wesley. © 2003 Jaelson Castro Modelando Comportamento 36