Você está na página 1de 51

Projeto de Software Orientado por Objetos

Realizao de Caso de Uso Modelagem de Interao

Tadeu dos Reis Faria Ago/2007

Introduo
O objetivo dos modelos vistos at agora fornecer um entendimento do problema correspondente ao SSOO a ser desenvolvido. Entretanto, esses modelos deixam algumas perguntas sem respostas. No modelo de casos de uso:
Quais so as operaes que devem ser executadas internamente ao sistema? A que classes estas operaes pertencem? Quais objetos participam da realizao deste caso de uso?

Introduo
No modelo de classes de anlise:
De que forma os objetos colaboram para que um determinado caso de uso seja realizado? Em que ordem as mensagens so enviadas durante esta realizao? Que informaes precisam ser enviadas em uma mensagem de um objeto a outro? Ser que h responsabilidades ou mesmo classes que ainda no foram identificadas?

Sesses CRC pode ajudar a identificar quais so as responsabilidades de cada objeto e com que outros objetos ele precisa colaborar.
Mas sesses CRC no fornecem um modo de documentar essas interaes.

Introduo
Para responder s questes anteriores, o modelo de interaes deve ser criado. Esse modelo representa mensagens trocadas entre objetos para a execuo de cenrios dos casos de uso do sistema. A construo dos diagramas de interao uma consolidao do entendimento dos aspectos dinmicos do sistema, iniciado nas sesses CRC. A modelagem de interaes uma parte da modelagem dinmica de um SSOO.
Diagramas de interao representam como o sistema age internamente para que um ator atinja seu objetivo na realizao de um caso de uso. A modelagem de um SSOO normalmente contm diversos diagramas de interao. O conjunto de todos os diagramas de interao de um sistema constitui o seu modelo de interaes.

Introduo
Os objetivos da construo do modelo de interao so:
1. Obter informaes adicionais para completar e aprimorar outros modelos (principalmente o modelo de classes) Quais as operaes de uma classe? Quais os objetos participantes da realizao de um caso de uso (ou cenrio deste)? Para cada operao, qual a sua assinatura? Uma classe precisa de mais atributos? 2. Fornecer aos programadores uma viso detalhada dos objetos e mensagens envolvidos na realizao dos casos de uso.

Mensagem
O conceito bsico da interao entre objetos a mensagem. Um sistema OO uma rede de objetos que trocam mensagens.
Funcionalidades so realizadas pelos objetos, que s podem interagir atravs de mensagens. Um objeto envia uma mensagem para outro objeto quando o primeiro deseja que o segundo realize alguma tarefa.

O fato de um objeto precisar de ajuda indica a necessidade de este enviar mensagens. Na construo de diagramas de interao, mensagens de um objeto a outro implicam em operaes que classes devem ter.
Uma mensagem representa a requisio de um objeto remetente a um objeto receptor para que este ltimo execute alguma operao definida para sua classe. Essa mensagem deve conter informao suficiente para que a operao do objeto receptor possa ser executada.

Sintaxe da UML para mensagens


Na UML, o rtulo de uma mensagem deve seguir a seguinte sintaxe:
[[expresso-seqncia] controle:] [v :=] nome [(argumentos)]

Onde o termo controle pode ser uma condio ou um iterao:


* [ clusula-iterao ] [ clusula-condio ]

O nico termo obrigatrio corresponde ao nome da mensagem.

Exemplos (sintaxe UML para mensagens)


Mensagem simples, sem clusula alguma. 1: adicionarItem(item) Mensagem com clusula de condio. 3 [a > b]: trocar(a, b) Mensagem com clusula de iterao e com limites indefinidos. 2 *: desenhar( ) Mensagem com clusula de iterao e com limites definidos. 2 *[i := 1..10]: figuras[i].desenhar( ) Mensagem aninhada com retorno armazenado na varivel x. 1.2.1: x := selecionar(e)

Exemplos (sintaxe UML para mensagens)

Exemplos (sintaxe UML para mensagens)

Notao para objetos


Nomeando objetos em Diagramas de interao
Objetos so desenhados como retngulos com nomes sublinhados As linhas de vida dos objetos so representadas por linhas tracejadas descendentes
Cursos disponveis
Cursos disponveis: Catalogo

:catalogo

classe

Instncia nomeada

Instncia

Sintaxe da UML para mensagens Multiobjetos


Um multiobjeto uma coleo de objetos de uma mesma classe. Pode ser utilizado para: representar o lado muitos de uma associao de conectividade um para muitos. representar uma lista (temporria ou no) de objetos sendo formada em uma comunicao. Uso: uma mensagem pode ser enviada para a coleo como um todo, ao invs de ser enviada para um nico objeto da coleo. Um multiobjeto representado graficamente atravs de dois retngulos superpostos.

Sintaxe da UML para mensagens Notao para Multiobjetos


3.1.1: conectar(prod)

3: adicionarItem(prod, quantidade) p: Pedido

3.1: criar(prod, quantidade) item: ItemPedido{new} {new} 3.2: adicionar(item) prod: Produto

: ItemPedido

Itens do pedido p

Sintaxe da UML para mensagens Notao para Multiobjetos


Mensagens para uma coleo e um elemento
msg1() :Sale 1: create() sl: SalesLineItem

2: addElement(sl)

SalesLineItem :SalesLineItem

msg1() 2: print() :Sale sl: SalesLineItem

1: sl := get(key)

SalesLineItem :SalesLineItem

Tipos de diagrama de interao


H trs tipos de diagrama de interao na UML 2.0: diagrama de seqncia, diagrama de comunicao e diagrama de viso geral da interao.
O diagrama de seqncia e o diagrama de comunicao so equivalentes.
Diagrama de seqncia: foco nas mensagens enviadas no decorrer do tempo. Diagrama de comunicao: foco nas mensagens enviadas entre objetos que esto relacionados. Diagrama de viso geral de interao. Pode ser utilizado para apresentar uma viso geral de diversas interaes entre objetos, cada uma delas representada por um diagrama de interao. Diagrama til para modularizar a construo do diagramas de seqncia (ou de comunicao).

Diagrama de seqncia
Os objetos participantes da interao so organizados na horizontal. Abaixo de cada objeto existe uma linha (linha de vida) Cada linha de vida possui o seu foco de controle. Quando o objeto est fazendo algo. As mensagens entre objetos so representadas com linhas horizontais rotuladas partindo da linha de vida do objeto remetente e chegando a linha de vida do objeto receptor. A posio vertical das mensagens permite deduzir a ordem na qual elas so enviadas. Ordem de envio de mensagens em um diagrama de seqncia pode ser deduzida a partir das expresses de seqncia. Criao e destruio de objetos podem ser representadas.

Elementos grficos de um DS
Elementos bsicos em um diagrama de seqncia:
Atores Objetos, multiobjetos e classes Mensagens Linhas de vida e focos de controle Criao e destruio de objetos Iteraes

Elementos grficos de um DS

Exemplo DS

Public class A { private B meuB = new B(); public void fazerum() {meuB.fazerum(); meuB.fazerdois();} ...}

Exemplo DS

Public class Venda { private Pagamento pagamento; public void fazerPagamento(moeda dinheiroentregue) {pagamento = new Pagamento(dinheiroentregue) } ...}

Mensagem de retorno
: Registradora fazerX d1 = obterData obterData umadata : Venda

Mensagem Self ou this

Modularizao de interaes: Quadros (molduras) de interao


Elemento grfico, que serve para modularizar a construo de diagramas de seqncia (ou de comunicao). Objetivos especficos:
Dar um nome ao diagrama que aparece dentro do quadro; Fazer referncia a um diagrama definido separadamente; Definir o fluxo de controle da interao.

Notao:

Quadros de interao: operadores


Operador moldura alt loop Significado Fragmento alternativo para lgica condicional de excluso mtua, expresso em guarda Fragmento de loop enquanto a guarda for verdadeira. Pode-se usar tambm escrever loop(n) para indicar a iterao de n vezes.Existe discusso de que a especificao ser aperfeioada para definir um loop FOR , exemplo, loop(1,1,10) Fragmento opcional executado se a guarda for verdadeira Fragmentos paralelos executados em paralelo Regio crtica dentro do qual apenas uma linha (thread) de execuo pode ser executada

opt par regio

Modularizao de interaes: Diagramas nomeados


Dar um nome ao diagrama que aparece dentro do quadro

Modularizao de interaes: Diagramas referenciados


Fazer referncia a um diagrama definido separadamente.

Fluxo de controle: alternativas

Fluxo de controle: opes

Fluxo de controle: iteraes

Fluxo de controle: iteraes

Fluxo de controle: iteraes


Public class venda { Private List<LinhaItemvenda> linhasItem = new ArrayList<LinhaItemvenda>(); Public Moeda obterTotal() { Moeda total = new Moeda(); Moeda subtotal = null; for (linhaItemVenda linhaItem : linhasItens) { subtotal = linhaItem.obterSubtotal(); total.add(subtotal); } return total; } }

Diagrama de viso geral : caso de uso registrar inscrio


ref

Obter disciplinas Possveis

ref

Validar Matricula Aluno

ref

Adicionar Disciplina

[mais disciplinas a selecionar] [else]

ref

Registrar Inscries

[else] [h disciplinas selecionadas sem vagas]

Adicionar Aluno Lista espera

ref

Diagrama de comunicao
Chamado de diagrama de Colaborao na UML 1.X. Estruturalmente, bastante semelhante a um diagrama de objetos. A diferena que so adicionados setas e rtulos de mensagens nas ligaes entre esses objetos. As ligaes (linhas) entre objetos correspondem a relacionamentos existentes entre os objetos. Deve haver consistncia com o diagrama de classes... Os objetos esto distribudos em duas dimenses Vantagem: normalmente permite construir desenhos mais legveis comparativamente aos diagramas de seqncia. Desvantagem: no h como saber a ordem de envio das mensagens a no ser pelas expresses de seqncia. Direo de envio de mensagem indicada por uma seta prxima ao rtulo da mensagem.

Diagramas de comunicao
Diagramas de comunicao
Um diagrama de comunicao o uma maneira alternativa de representar as mensagens trocadas por um conjunto de objetos o diagrama de comunicao mostra as interaes a partir dos objetos e dos links entre os objetos Um diagrama de comunicao contm: objetos ligaes entre objetos (links) mensagens trocadas entre objetos fluxo de objetos entre objetos, se existir

Diagrama de comunicao
Mostra os objetos relevantes para a realizao de um caso de uso (ou cenrio deste). Estruturalmente, bastante semelhante a um diagrama de objetos. A diferena que so adicionados setas e rtulos de mensagens nas ligaes entre esses objetos. Objetos (nomeados e annimos) e classes podem aparecer. As ligaes (linhas) entre objetos correspondem a relacionamentos existentes entre os objetos

Diagrama de comunicao
No h como saber a ordem de envio das mensagens a no ser pelas expresses de seqncia. Direo de envio de mensagem indicada por uma seta prxima ao rtulo da mensagem. Os objetos esto distribudos em duas dimenses
normalmente permite construir desenhos mais legveis comparativamente aos diagramas de seqncia.

Diagrama de comunicao
Representao para criao e destruio de objetos ou de ligaes entre objetos.
{new}: objetos ou ligaes criados durante a interao. {destroyed}: objetos ou ligaes destrudos durante a interao. {transient}: objetos ou ligaes destrudos e criados durante a interao.

Elementos grficos de um DC
Elementos bsicos em um diagrama de comunicao:
Atores Objetos, multiobjetos e classes Mensagens Ligaes entre objetos Criao e destruio de objetos Iteraes

Elementos grficos de um DC

Escolhendo entre diagramas de seqncia e de comunicao


Diagrama de seqncia: Exibe as mensagens ordenadas no tempo. A visualizao fica dificultada conforme o nmero de objetos cresce (disposio em uma dimenso). Diagrama de comunicao: Exibe mensagens enfatizando relacionamentos. Melhor utilizao do espao (disposio em duas dimenses). O diagrama de seqncia equivalente ao diagrama de comunicao Ferramentas CASE: transformao automaticamente.

Procedimento de construo
1. Para cada caso de uso, defina um conjunto de cenrios relevantes. 2. Para cada cenrio definido, faa: a) Posicione os atores, objeto de fronteira e objeto de controle no diagrama. b) Para cada passo do cenrio selecionado, defina as mensagens a serem enviadas de um objeto a outro. c) Defina as clusulas de condio e de iterao, se existirem, para as mensagens. d) Adicione multiobjetos e objetos de entidade medida que a sua participao se faz necessrio no cenrio selecionado.

Observaes sobre o procedimento


A definio dos cenrios depende da complexidade dos passos do caso de uso. Definio de mensagens com base nas responsabilidades de cada objeto envolvido:
O nome da mensagem Os argumentos de cada mensagem, se existirem. O valor de retorno da operao correspondente, se existir. Clusulas de condio e de repetio, se existirem.

Observaes sobre o procedimento


Consistncia em relao ao modelo de casos de uso e ao contexto utilizado do diagrama de classes.
Cada cenrio relevante para cada caso de uso foi considerado? A mensagens que um objeto recebe esto consistentes com suas responsabilidades?

Mais de um controlador podem ser criados em um mesmo caso de uso. Mensagem de um ator a um objeto de fronteira normalmente rotulada com a informao fornecida (por exemplo, item de pedido, id e senha, etc).

Modelo de interaes no processo de desenvolvimento


So utilizados na fase de construo de um ciclo de vida incremental e iterativo.
So construdos para os casos de uso alocados para uma iterao desta fase.

Controvrsia sobre utilizao na anlise ou no projeto. Inicialmente (+anlise), pode exibir apenas os objetos participantes e mensagens exibindo somente o nome da operao. Posteriormente (+projeto), pode ser refinado.
criao e destruio de objetos, tipo e

Modelo de interaes no processo de desenvolvimento


Em um processo incremental e iterativo, os modelos evoluem em conjunto. Embora estes modelos representem vises distintas do sistema, eles so interdependentes.
Modelo de classes modelo de interaes. Modelo de interaes refinamento do modelo de casos de uso. Modelo de interaes operaes para o modelo de classes. Modelo de interaes novos atributos para o modelo de classes.

Exemplo: projeto detalhado


Roteiro Seja o caso de uso Usurio Consulta Contato do Sistema AGENDA

1. Identificamos o caso de uso no modelo da anlise (Modelo Lgico Diagrama de Classes)

Exemplo: projeto detalhado


2. Criamos o Prottipo de Tela

Exemplo: projeto detalhado


3. Em seguida, geramos os Diagramas de Interao de Objetos Diagrama de sequncia

Exemplo: projeto detalhado


Diagrama de Comunicao

TelaContato:JFrame

Exemplo: projeto detalhado


4. Finalmente, a codificao

Modelo de interaes no processo de desenvolvimento

Você também pode gostar