.NET - Implementando Soluções OOP II

Programar é fácil desenvolver software de qualidade é uma arte.
Na primeira parte do artigo focamos na modelagem dos aspectos estáticos de uma solução OOP (ou POO - Programação Orientada a Objetos) e
vimos que:
É o DRS que define o escopo do sistema;
Utilizamos o diagramas de caso uso, para definir os limites do sistema e identificar as entidades externas que irão utilizar o sistema;
Usamos o diagramas de classe para definir o modelo da estrutura das classes que serão desenvolvidas para implementar o sistema;
Vamos continuar a discutir as técnicas de modelagem da UML focando na modelagem dos aspectos dinâmicos da solução. Para isso vamos abordar
os seguintes assuntos:
O propósito dos cenários e como eles estendem os modelos de casos de uso;
Como os diagramas de sequência modelo a interação dependente do tempo dos objetos em um sistema;
Como o diagrama de atividades mapeia o fluxo de atividades durante o processamento da aplicação;
A importância do desenha da interface do usuário e como ela se encaixa no processo de uma solução OOP;

Compreendendo Cenários
Os cenários nos ajudam a compreender as interações dinâmicas que irão ocorrer entre os objetos (objetos são instâncias de classes). Um cenário é
uma descrição textual de um processo interno necessário para implementar uma funcionalidade do sistema documentada em um caso de uso.
(Lembre-se que um caso de uso descreve a funcionalidade do sistema do ponto de vista dos usuários externos ao sistema). Assim um cenário
detalha a execução de um caso de uso descrevendo os passos que precisam ser realizados internamente pelos objetos que compõe o sistema.
Como exemplo vemos na figura 1.0 a representação do caso de uso Alugar Filme para uma aplicação de Video Locadora :

figura 1.0 - Caso de uso - Alugar Filme

O texto a seguir descreve este caso de uso:
Pré-Condições : O cliente faz uma solicitação para alugar um filme para o funcionário da locadora. O cliente faz parte dos membros
cadastrados para locação de filmes da locadora e entrega ao funcionário seu cartão de registro contendo sua identificação de membro. A
identificação do cliente como membro é verificada no sistema. As informações do cliente são exibidas sendo verificada se a conta do cliente
não possui pendências de locações a serem quitadas;
Descrição : O funcionário verifica se o filme solicitado para locação esta no estoque. As informações de locação são registradas e o cliente é
informado da data de devolução (vencimento da locação);
Pós-Condições : Nenhuma;
Dessa forma o seguinte cenário descreve o processamento interno do caso de uso Alugar Filme:
O filme é verificado no estoque;
O número de cópias existentes é atualizado sendo decrementado da unidade locada;
A data de vencimento da locação (data de devolução) é determinada;
A informação da locação é registrada. Esta informação inclui: o título do filme, o número da cópia, a data atual e a data de devolução;
O cliente é informado da locação;
Este cenário descreve a melhor execução possível para o caso de uso , mas exceções podem ocorrer e um único caso de uso pode gerar vários
cenários. Por exemplo, outro cenário criado pelo para o caso de uso Alugar Filme poderia descrever o que acontece quando um filme não esta
presente no estoque.
Depois de mapear os vários cenários para um caso de uso você pode criar diagrama de interações para determinar quais classes de objetos estarão
envolvidos na realização da funcionalidades dos cenários. Os diagramas de interação também revelam quais operações serão necessárias para
essas classes de objetos.
Na UML temos dois diagramas de interação:
Diagramas de seqüência
Diagramas de colaboração.

Diagramas de Sequência
Um diagrama de seqüência é um diagrama de objetos, ou seja, ele contém como um conjunto de objetos de diferentes classes. O objetivo dos
diagramas de seqüência é descrever as comunicações necessárias entre objetos para a realização dos processos de um sistema. Os diagramas de
seqüência têm este nome porque descrevem ao longo de uma linha de tempo a seqüência de comunicações entre objetos.
Como podem existir muitos processos em um sistema, sugere-se proceder à construção dos diagramas de seqüência por caso de uso.(Primeiro, se
define qual o papel do sistema (Casos de Uso), depois é definido como o software realizará seu papel (Sequência de operações) - fonte:
http://pt.wikipedia.org/wiki/Diagrama_de_sequ%C3%AAncia)

A figura 2.0 apresenta uma representação de um diagrama de sequência como um modelo visual em duas dimensões :

Uma seta tracejada representa a resposta do objeto. Na figura 2.ufpr.Exemplos de representação de ativação.inf. pe ativação e mensagem (fonte: http://www. Os objetos são representados juntos no topo e cada um possui uma linha tracejada e um retângulo vertical que representa a ativação do objeto onde a altura do retângulo representa o tempo de ativação do objeto.1 .0 o diagrama de sequência para o cenário representando pelo caso de uso Alugar Filme: .Um diagrama de sequência representa um cenário de caso de uso Mostra os eventos que partem do ator para o sistema O sistema irá emitir uma resposta para cada evento recebido do ator Descreve ao logo de uma linha de tempo a sequência de comunicação entre os objetos O tempo é visualizado no sentido vertical de cima para baixo As mensagens trocadas entre os objetos são representadas por setas fornecem entrada básica para determinar responsabilidades de classes e interfaces. As mensagens descritas no diagrama de sequência irão formar a base dos métodos das classes do sistema. período de ativação e mensagem de objetos representados em um diagrama de sequência: figura 2. figura 2.Representação de um diagrama de sequência Observe que o fluxo de mensagens de objeto para objeto é representando horizontalmente enquanto que o fluxo de tempo entre as interações é representando por verticalmente iniciando a partir do topo e progressivamente decrescendo até a base.1 abaixo vemos exemplos de ativação. Como exemplo vemos na figura 3.0 .br/silvia/ES/UML/Diagramaseqsis Os objetos trocam mensagens entre si e uma seta iniciando do objeto que iniciou a mensagem e terminando no objeto que irá receber a mensagem descreve esta interação.

A linha traçada com uma ponta de seta aberta no diagrama de seqüência representa de mensagens assíncronas.0 . Tipos de mensagens entre objetos Ao analisar o diagrama de seqüência. você pode determinar quais mensagens devem ser passadas entre os objetos envolvidos no processamento. O diagrama de sequência da figura 3. . Isto é referido como recursão.Tipos de mensagens Para o exemplo do diagrama de sequência do cenário Alugar Filme podemos perceber que o objeto Funcionário inicia uma mensagem síncrona com o objeto Filme. A linha traçada com uma ponta de flecha fechada no diagrama de seqüência representa mensagens síncronas. as mensagens são transmitidas de forma síncrona ou assíncrona. Quando um objeto envia uma mensagem assíncrona. Por exemplo. Na POO.Diagrama de sequência referente ao cenário do caso de uso Alugar Filme Conforme você analisa o diagrama de seqüência. A seta de mensagem que circula de volta para o objeto de chamada representa a recursão no diagrama de seqüência. representando uma segunda ativação do objeto desenhado na parte superior do retângulo de ativação original (ver Figura 5). Mensagens recursivas Não é incomum na POO um objeto ter uma operação que invoca uma outra instância do próprio objeto. o objeto Filme retorna uma mensagem ao funcionário que existe uma cópia em estoque. A seta tracejada mostra geralmente uma mensagem de resposta.0 revela que haverá quatro objetos envolvidos na realização do caso de uso Alugar Filme. Estes documentos de projeto deve ser continuamente cruzados e revistos sempre quando necessário para que correções e aperfeiçoamentos seja feitos. Estas linhas são mostrados na Figura 4. ele necessita chamar-se várias vezes. você ganha uma compreensão das classes de objetos que irão estar envolvidos na realização do processamento do programa e quais métodos você terá que criar e anexar a essas classes. um objeto Conta calcula juros compostos para os pagamentos em atraso. O objeto Filme é uma instância da classe Filme e é responsável por encapsular e manutenção das informações relativas a um vídeo disponível para aluguel. Além disso temos as seguintes informações: O objeto Cliente é uma instância da classe Cliente e é responsável por encapsular e manter as informações referentes a um cliente. Quando as mensagens são transmitidas de forma síncrona. O fim da seta aponta para um retângulo de menor ativação.figura 3. o objeto continua o processamento e não fica esperando uma resposta imediata do objeto receptor. figura 4. requisitando informação sobre se existe uma cópia do filme no estoque.0 . para calcular os juros compostos ao longo de períodos diversos. o objeto de envio suspende o processamento e aguarda uma resposta antes de continuar. Você também deve modelar as classes e métodos descritos no diagrama de seqüência no diagrama de classes. O objeto Locação é uma instância da classe Alugar e é responsável por encapsular a manutenção das informações relativas a um vídeo atualmente sendo alugado. O objeto Funcionario é uma instância da classe Funcionario e é responsável pela gestão do processamento envolvido em alugar um filme.

A representação de tais mensagens é feita por um retângulo que envolve a mensagem no diagrama de sequência. A isso chamamos iteração. Assim para totalizar o valor de uma locação um método é chamado repetidas vezes até que todas as locações de um cliente sejam calculadas.figura 5.0 mostra um exemplo de mensagem iterativa: figura 7.Exemplo de mensagem recursiva Mensagens Iterativas Algumas vezes uma mensagem é chamada repetidas vezes até que uma condição seja satisfeita. A figura 7.0 . A condição de vinculação da iteração é descrita canto superior esquerdo do retângulo.Mensagem iterativa Mensagens Restritivas .0 .

mensagens diferentes podem ser invocados. Um diagrama de atividade consiste em o ponto de partida do processo representado por um círculo sólido e setas de transição que representam o fluxo ou a transição de uma atividade para outra. Diagrama de Atividades Um diagrama de atividades ilustra o fluxo de atividades que precisam ocorrer durante uma operação ou processo. Diagramas de fluxo de nível médio ocorrem em um caso de uso particular. Você pode construir o diagrama de atividades para ver o fluxo de trabalho em vários níveis de foco. uma mensagem é enviada para o objeto Locação para criar uma locação.O Foco em nível de sistema representa cada caso de uso como uma atividade e diagramas do fluxo de trabalho entre os diferentes casos de uso. é feita a verificação da identificação do cliente. Quanto isso precisa ser descrito colocamos a restrição entre colchetes ([]) na sequência. Um diagrama de atividades representa a condicionalidade por um ponto de decisão (representado por um losango) com a guarda da decisão (a condição deve ser verdadeira para a atividade continuar) em colchetes([ ]) próxima da linha do fluxo conforme mostra a figura 11 abaixo: . A mensagem será enviada somente se a condição for avaliada como verdadeira (figura 8. Um retângulo desenhado em torno das mensagens mostra os caminhos alternativos que podem ocorrer dependendo da condição. Retângulos arredondados representam as atividades.0 . afim de alugar um filme .Diagrama de atividades Freqüentemente uma atividade irá condicionalmente seguir outra atividade . figura 10 . dependendo da condição.0 . Diagrama de fluxo de baixo nível ocorrem no interior de uma operação particular de uma determinada operação de uma das classes do sistema.0): figura 8. A figura 9 representa um uma restrição condicional ao solicitar um aluguel de um filme: Figura 9. e um círculo com uma bola representa o ponto final do processo. Nível Alto . uma mensagem é enviada para o objeto Reservar para criar uma reserva. Por exemplo.Mensagem restritiva Mensagens Ramificadas Quando as restrições condicionais são vinculadas a uma mensagem.As mensagens trocadas entre os objetos pode ter alguma restrição condicional. a Figura 10 mostra um diagrama de atividades genérico que representa um processo que começa com a atividade A. Por exemplo: os clientes precisam estar em dia com suas locações para poderem efetuar uma nova locação.Restrição condicional Se o status do item Filme é sim indicando que o filme existe em estoque. por exemplo. muitas vezes isso ocorre em uma situação de ramificação onde. Se o status do item Filme for não indicando que ele não existe no estoque. passa para a atividade B e conclui.

Processamento Paralelo O propósito do diagrama de atividades é modelar o controle de fluxo de cada atividade enquanto o programa esta sendo processado. Ele não nos indicada qual objeto possui a responsabilidade sobre cada atividade.Ponto e Garda de decisão Em alguns casos duas ou mais atividades podem ser executadas em paralelo. A figura 13 abaixo mostra o diagrama de atividades para o processamento do caso de uso Alugar FIlme exibindo os painéis e cada objeto responsável por cada atividade: . Uma linha sólida desenhada perpendicularmente para setas de transação representam a divisão do fluxo em duas ou mais atividades. A figura 12 representa um diagrama de atividade para o processo de devolução de um filme. Para atribuir a responsabilidade de cada atividade aos objetos podemos segmentar o diagrama de atividades em painéis verticais particionados para cada atividade definido o objeto responsável pela atividade no topo do painel.figura 11 . A ordem na qual os fluxos para incrementar o estoque e baixar o filme da locação não importa: figura 12 .

Na figura 14 vemos um diagrama de atividades modelando as atividades que o usuário realiza durante o processo de registro de informação de locação: Figura 14 .Registro de informação de locação .figura 13 .Diagrama de Atividades . Embora não seja um papel específico da UML modelar a interface do usuário podemos usar alguns de seus diagramas para nos ajudar nesta tarefa. O primeiro passo no desenvolvimento da interface do usuário e definir uma análise das tarefas para descobrir como os usuários irão interagir com o sistema. Podemos dessa forma criar diagramas de atividades para modelar como a interação entre o usuário e o sistema irá ocorrer.Atribuindo responsabilidades aos objetos Para encerrar vou mostrar como podemos usar os diagramas de atividades para modelar a interface do usuário de uma aplicação. A análise das tarefas esta baseado nos casos de uso e nos cenários que já foram modelados anteriormente.

Primeiros passos .Conceitos OOP.NET .Use Case e modelo .Decomposição de software UML ..NET .VI VB .Modelando sistemas com UML usando casos de uso.Revisitando conceitos OOP VB .E assim neste artigo apresentei os conceitos básicos sobre cenários.NET e C# UML .Finalmente uma linguagem orientada a objetos.Modelando sistemas .com/violet/ Modelando sistemas com UML ." Lucas 18-17 Referências: Super DVD .Unified Modeling Language e Visual Modeler.NET .Modelando sistemas . http://www.Macoratti. .NET . diagramas de sequência e diagramas de atividades de forma a dar uma idéia de como usar esses diagramas da UML para modelar a interação entre os objetos. .Vídeo Aula sobre VB .Casos de Uso UML .Primeiros passos .net José Carlos Macoratti .VI.A sua porta de entrada na plataforma .Conceitos .NET .net UML .Diagrama de classes .NET .Finalmente uma linguagem orientada a objetos.Macoratti.Conceitos . "Em verdade vos digo que.umlet.Modelando sistemas .com/ http://horstmann.NET .Revisitando conceitos OOP VB .Conceitos OOP VB . OOP noções para iniciantes O que significa "orientação a objetos" ? Conceitos sobre Projetos .Casos de Uso. VB .Decomposição de software.Casos de Uso UML .. Seção UML do site Macoratti.Macoratti. não entrará nele.net UML conceitos básicos .net UML .NET. qualquer que não receber o reino de Deus como menino.NET .Unified Modeling Language e Visual Modeler VB. VB . ASP . VB. OOP noções para iniciantes O que significa "orientação a objetos" ? Conceitos sobre Projetos .NET Super DVD Vídeo Aulas .NET .