Sie sind auf Seite 1von 243

UML Viso Geral

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

ndice

Introduo
O que a UML?

Diagramas
Diagrama de casos de utilizao

Valor da UML
Origens da UML Parceiros da UML

Diagrama de classes
Diagrama de objectos Diagrama de componentes Diagrama de distribuio Diagrama de sequncia Diagrama de colaborao Diagrama de estados Diagrama de actividades

Modelos e diagramas

Elementos de modelao

Referncias

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

O que a UML?

UML = Unified Modeling Language UML uma linguagem (notao com semntica associada) para
visualizar especificar construir documentar

os artefactos de um sistema com uma componente intensiva de software (software intensive system)

UML no uma metodologia


no diz quem deve fazer o qu, quando e como UML pode ser usado segundo diferentes metodologias, tais como RUP (Rational Unified Process), FDD (Feature Driven Development), etc.

UML no uma linguagem de programao


UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

Valor da UML

um standard aberto
verso 1.1 aprovada pelo OMG (Object Management Group) em Novembro de 1997 verso 1.3 aprovada em Junho de 1999

Suporta todo o ciclo de vida do software


modelao do negcio (processos e objectos do negcio) modelao de requisitos alocados ao software modelao da soluo de software

Suporta diversas reas de aplicao baseado na experincia e necessidades da comunidade de utilizadores suportado por muitas ferramentas
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

Origens da UML
Meyer
Before and after conditions

Harel
Statecharts

Gamma, et al
Frameworks and patterns,

Booch
Booch method

HP Fusion
Operation descriptions and message numbering

Rumbaugh
OMT

Embley
Singleton classes and high-level view

Jacobson
OOSE

Wirfs-Brock
Responsibilities

Shlaer - Mellor
Object lifecycles

Odell
Classification
5

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

Parceiros da UML

Rational Software Corporation Hewlett-Packard I-Logix IBM ICON Computing Intellicorp MCI Systemhouse Microsoft

ObjecTime Oracle Platinum Technology Taskon Texas Instruments/Sterling Software Unisys

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

Modelos e Diagramas

Um modelo uma representao em pequena escala, numa perspectiva particular, de um sistema existente ou a criar
Atitude de abstraco (omisso de detalhes) fundamental na construo de um modelo Modelos so a linguagem por excelncia do projectista (designer) Modelos so veculos para comunicao com vrios interessados (stakeholders) Modelos permitem raciocinar acerca do sistema real, sem o chegar a construir

Ao longo do ciclo de vida de um sistema so construdos vrios modelos, sucessivamente refinados e enriquecidos

Um modelo constitudo por um conjunto de diagramas (desenhos) consistentes entre si, acompanhados de descries textuais dos elementos que aparecem nos vrios diagramas
Um diagrama uma vista sobre um modelo O mesmo elemento (exemplo: classe) pode aparecer em vrios diagramas de um modelo

No UML, h nove diagramas standard


Diagramas de viso esttica: casos de utilizao (use case), classes, objectos, componentes, distribuio (deployment) Diagramas de viso dinmica: sequncia, colaborao, estados (statechart), actividades
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

Modelos e Diagramas
Use Case Use Case Diagrams Diagramas Diagrams de Casos de Utilizao
State State Diagrams Diagramas Diagrams de Classes State State Diagrams Diagramas Diagrams de Objectos

Use Case Use Case Diagrams Diagramas Diagrams de Sequncia

Scenario Scenario Diagrams Diagramas Diagrams de Colaborao

Modelos

State State Diagrams Diagramas Diagrams de Componentes

Scenario Scenario Diagrams Diagramas Diagrams de Estados

Component Component Diagrams Diagrams de Diagramas

Diagramas de Actividades
UML Unified Modeling Language

Distribuio

Ademar Aguiar, Gabriel David, Joo Pascoal Faria

Elementos de Modelao (1)

Elementos estruturais
classe, interface, colaborao, caso de utilizao, classe activa, componente, n

Elementos de comportamento
interaco, mquina de estados

Fonte: Grady Booch

Elementos de agrupamento
pacote (package), subsistema

Outros elementos
nota
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

Elementos de Modelao (2)

Relaes
Dependncia Associao Generalizao Concretizao (realization)
Fonte: Grady Booch

Mecanismos de extensibilidade
Esteretipos Propriedades (tagged values)

Restries (constraints)

Fonte: Grady Booch


UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

10

Diagrama de Casos de Utilizao (Use Case Diagram)

Captura a funcionalidade do sistema tal como visto pelos utilizadores

Construdo nos primeiros estgios do desenvolvimento


Objectivo
Especificar o contexto de um sistema

Capturar os requisitos funcionais de um sistema


Validar a arquitectura de um sistema Dirigir a implementao e gerar casos de teste

Desenvolvido por analistas e especialistas de domnio

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

11

Diagrama de Casos de Utilizao (Use Case Diagram)

Fonte: Grady Booch


UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

12

Diagrama de Classes

Captura o vocabulrio de um sistema Construdo e refinado ao longo do desenvolvimento Objectivo


Nomear e modelar conceitos no sistema Especificar colaboraes

Especificar esquemas lgicos de bases de dados

Desenvolvido por analistas, designers e implementadores

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

13

Diagrama de Classes
composition

Fonte: Grady Booch


UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

14

Diagrama de Objectos

Mostra objectos (instncias de classes) e ligaes (instncias de associaes)

Construdo durante a anlise e design


Objectivo
Ilustrar estruturas de dados/objectos

Especificar instantneos (snapshots)

Desenvolvido por analistas, designers e implementadores

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

15

Diagrama de Objectos

Fonte: Grady Booch


UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

16

Diagrama de Componentes

Captura a estrutura fsica da implementao (tipicamente ficheiros)

Construdo como parte da especificao da arquitectura


Objectivo
Organizar o cdigo fonte

Construir uma release executvel


Especificar uma base de dados fsica

Desenvolvido por arquitectos e programadores

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

17

Diagrama de Componentes

Fonte: Grady Booch


UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

18

Diagrama de Distribuio (Deployment Diagram)

Captura a topologia do hardware de um sistema Construdo como parte da especificao da arquitectura Objectivo
Especificar a distribuio de componentes Identificar estrangulamentos de desempenho

Desenvolvido por arquitectos, engenheiros de redes, e engenheiros de sistemas

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

19

Diagrama de Distribuio (Deployment Diagram)

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

Fonte: Grady Booch 20

Diagrama de Sequncia

Captura comportamento dinmico (orientado ao tempo) Objectivo


Modelar fluxos de controlo Ilustrar cenrios tpicos

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

21

Diagrama de Sequncia

Fonte: Grady Booch


UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

22

Diagrama de Colaborao

Captura comportamento dinmico (orientado a mensagens) Objectivo


Modelar fluxo de controlo Ilustrar a coordenao entre estrutura de objectos e controlo

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

23

Diagrama de Colaborao

Fonte: Grady Booch


UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

24

Diagrama de Estados (Statechart Diagram)

Captura comportamento dinmico (orientado a eventos) Objectivo


Modelar ciclo de vida de objectos Modelar objectos reactivos (interfaces com o utilizador, dispositivos, etc.)

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

25

Diagrama de Estados (Statechart Diagram)

Fonte: Grady Booch


UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

26

Diagrama de Actividades

Captura comportamento dinmico (orientado a actividades) Objectivo


Modelar processos de negcio e workflows Modelar operaes (algoritmos)

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

27

Diagrama de Actividades

Fonte: Grady Booch


UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

28

Referncias

Ferramentas de modelao visual


Rational Rose (www.rational.com) Together (www.togethersoft.com) Platinum Paradigm Plus (www.platinum.com) Microsoft Visio Mais ferramentas em www.objectsbydesign.com

Livros
The Unified Modeling Language User Guide, Grady Booch et al, AddisonWesley, October, 1998 UML, Metodologias e Ferramentas CASE, Alberto Silva e Carlos Videira, Centro Atlntico, 2001

Especificaes
www.uml.org

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

29

UML - Diagramas de Casos de Utilizao (Use Case Diagrams)

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

30

Objectivo

Um diagrama de casos de utilizao de um sistema mostra actores (tipos de utilizadores), casos de utilizao e relaes entre eles
Fundamental acompanhar de descries textuais de casos de utilizao

Permite:
mostrar para que serve o sistema (a utilidade do sistema), ignorando a forma como est organizado internamente especificar o contexto do sistema
- com quem interage (actores) e com que finalidade (casos de utilizao)

capturar os requisitos funcionais do sistema


- casos de utilizao so funcionalidades do sistema vistas pelos utilizadores

Pode referir-se a um sistema de software, um sistema de negcio ou organizao, um equipamento, uma classe, etc. elaborado por analistas e especialista de domnio nos primeiros estgios do desenvolvimento

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

31

As trs perspectivas de um sistema

Casos de utilizao
para que serve o sistema (utilidade) num vdeo-gravador: reproduzir cassete, gravar cassete nem sempre evidente a partir da observao do interface! um caso de utilizao engloba uma sequncia de interaces com elementos da interface, para atingir resultado til (produto ou servio) para o utilizador!

Interface
sistema como caixa preta o que visvel na fronteira do sistema (estrutura e funcionamento) num vdeo-gravador: teclas, visor, abertura para cassete, tomadas

Implementao
sistema como caixa branca acrescenta o que est escondido (estrutura e funcionamento) num vdeo-gravador: motor, cabeas de gravao, sintonizador, ...

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

32

Exemplo 1: Telemvel
Telemvel

(equipamento)
nome do sistema fronteira do sistema

actor

Efectuar chamada

Rede

Utilizador

Receber chamada

associao de comunicao entre actor e caso de utilizao

caso de utilizao
Usar a agenda

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

33

Exemplo 2: Restaurante
Restaurante

(negcio)

Servir almoo
casos de utilizao primrios - servem directamente clientes

Cliente

Servir jantar

Comprar bens

Fornecedor
- utilizador ou utilizado? - o que importa que interage com o sistema!
UML Unified Modeling Language

caso de utilizao secundrio - no serve directamente clientes - envolve interaco com o exterior - serve casos de utilizao primrios - tem valor para o fornecedor

Ademar Aguiar, Gabriel David, Joo Pascoal Faria

34

Exemplo 3: Aplicao de Gesto de Restaurantes (software)


Aplicao de Gesto de Restaurantes

Registar pedido Cozinheiro Empregado de mesa

Emitir factura

A mesma coisa para o sistema de informao do restaurante (hardware+software)!


UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

35

Actores

ou

Actor = papel (role)

Cliente

actor Cliente

Um actor em relao a um sistema um papel que algum ou alguma coisa do ambiente envolvente desempenha quando interage com o sistema

Actor = classe
classes so frequentemente usadas para modelar papis que objectos individuais podem desempenhar

Actor = tipo de utilizador (em sentido lato)


pode ser uma pessoa ou outro sistema pode utilizar ou ser utilizado, o que interessa que interage com o sistema

Actor recurso do sistema


recursos so pessoas, mquinas, etc. que pertencem ao sistema e que so usados para levar a cabo tarefas dentro do sistema

Actor indivduo
o mesmo indivduo pode interagir com o sistema em vrios papis (como cliente, como fornecedor, etc.)

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

36

Casos de utilizao

Servir almoo

ou

Servir almoo

Definio: Um caso de utilizao uma descrio de um conjunto de sequncias de aces(1), incluindo variantes(2), que um sistema realiza(3) para produzir um resultado observvel com valor para um actor(4,5)
(1) a definio d nfase sequncia (modo) de funcionamento, mas este detalhe s surge numa 2 iterao, depois de se ter alguma ideia do interface do sistema (2) a sequncia concreta de aces pode variar de instncia para instncia do caso de utilizao (3) interessam-nos mais as aces do sistema, pois so essas que temos de implementar, mas tambm interessa descrever as aces do actor (5) esta utilidade ou objectivo que importa descrever numa 1 iterao (6) o resultado pode ser um produto, um servio, etc.

Mais simplesmente, um caso de utilizao :


uma funcionalidade do sistema vista pelos utilizadores um tipo de interaco (de alto nvel) entre actores e o sistema

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

37

Descoberta dos casos de utilizao

Pensar em cada actor e nas interaces que tem com o sistema Um caso de utilizao agrupa interaces elementares de actores com elementos da interface do sistema, mas qual deve ser o nvel de agrupamento? Caso de utilizao simples: utilizao de funcionalidade de gro mais fino possvel que, uma vez implementada, acrescenta valor (do ponto de vista dos utilizadores) ao sistema que est a ser desenvolvido
Exemplo no multibanco:
"introduzir carto" no um caso de utilizao porque no tem valor isoladamente "levantar dinheiro" um caso de utilizao porque tem valor para o detentor do carto

O caso de utilizao inclui todas as aces a montante (de preparao) e a jusante (de finalizao) necessrias (numa relao de um para um) produo do resultado
- Levantamento no multibanco, vai desde a introduo do carto at recolha do carto, do talo e do dinheiro

Caso de utilizao composto: combinao de casos de utilizao mais simples


modelar apenas quando importa automatizar

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

38

Descrio dos casos de utilizao


3 nveis de detalhe, de acordo com as 3 perspectivas de um sistema

1) essncia / utilidade
descrio breve independente da interface que o sistema apresenta descrever o objectivo ou resultado a produzir opcionalmente, indicar lista de features e limitaes (nvel de requisitos)

2) interface
descrio de sequncias de funcionamento normais e excepcionais, em termos de interaces dos actores com elementos da interface opcionalmente, acompanhar de desenhos da interface para o utilizador e de diagramas dinmicos indicar quando que o caso de utilizao comea e acaba, quando ocorrem interaces com os actores, que objectos so trocados, quem faz o qu (o sistema ou um actor) pode ser aproveitado para o no manual do utilizador

3) implementao
realizao do caso de utilizao por uma colaborao de objectos internos ao sistema sequncias de funcionamento detalhadas com (inter)aces internas ao sistema j no compete ao analista, mais sim ao projectista/implementador j no faz parte do modelo de casos de utilizao, mas sim do modelo de design

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

39

Exemplo: descrio do caso de utilizao "servir almoo"

Objectivo:
servir uma refeio rpido a um cliente que se dirige ao restaurante ao almoo

Features e limitaes:
h dois pratos do dia pr-confeccionados, um de carne e outro de peixe, e uma lista fixa de pratos de preparao rpida no se fazem reservas

Sequncia normal de funcionamento:


o cliente chega ao restaurante e senta-se numa mesa vaga o empregado entrega ao cliente uma folha com o menu do dia o cliente indica ao empregado o prato e bebida pretendidos o empregado transmite o pedido do prato cozinha o empregado entrega a bebida ao cliente assim que est pronto, o empregado entrega o prato pedido ao cliente o cliente pede a conta o empregado faz a conta e entrega-a ao cliente o cliente paga a conta sada

Sequncia de funcionamento excepcional:


Quando o restaurante est cheio, os clientes que chegam ao restaurante formam fila entrada e o empregado vai chamando os clientes para as mesas h medida que vo vagando

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

40

Casos de utilizao e o processo de desenvolvimento

Casos de utilizao guiam o planeamento


Cada iterao do processo de desenvolvimento deve analisar detalhadamente e implementar um conjunto de casos de utilizao ou variantes de casos de utilizao Cada iterao resultar num incremento ao produto com utilidade para o cliente Comear pelos casos de utilizao ou variantes mais prioritrios ou com mais risco

Casos de utilizao guiam a captura e especificao de requisitos


Casos de utilizao definem implicitamente requisitos funcionais Alguns requisitos no funcionais podem tambm ser alocados a casos de utilizao Em sistemas simples, dispensam definio prvia de uma lista de requisitos

Casos de utilizao guiam o desenho do sistema


Arquitectura (forma) do sistema (diviso em mdulos e definio dos seus interfaces e dependncias) condicionada pelos casos de utilizao (funo) e requisitos adicionais A implementao de cada caso de utilizao sobre essa arquitectura modelada por uma colaborao de objectos, combinando estrutura e comportamento

Casos de utilizao guiam o teste do sistema


Casos de teste de "caixa preta" desenhados a partir dos casos de utilizao

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

41

Aplicao a sistemas de negcio


Actores modelam clientes, fornecedores, parceiros, etc. Casos de utilizao modelam processos de negcio
processos de negcio primrios: servem directamente clientes processos de negcio secundrios: no servem directamente clientes, mas envolvem interaco com o exterior e servem processos de negcio primrios

Nem todas as actividades de um sistema de negcio se podem englobar em processos de negcio, numa definio estrita
caso das actividades que no esto relacionadas, mesmo que indirectamente, com um actor individual essas actividades so englobadas em processos de suporte internos processos de gesto de recursos, planeamento, controlo, etc.

Processos de negcio e de suporte so relacionados e detalhados atravs de diagramas de actividades, at chegar a actividades que podem ser atribudas a trabalhadores ou equipas individuais

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

42

Estruturao dos diagramas de casos de utilizao

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

43

Formas de estruturar

Relao extend entre casos de utilizao Relao include entre casos de utilizao Relao de generalizao entre casos de utilizao Relao de generalizao entre actores

Agrupamento de casos de utilizao em pacotes de casos de utilizao

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

44

Relao extend entre casos de utilizao

Para simplificar a descrio dos casos de utilizao, podem-se organizar os casos de utilizao em casos bsicos (casos de utilizao de acordo com a definio) e extenses aos casos bsicos, que traduzem partes ou modalidades acrescentadas condicionalmente (opes)
extend

Significado:

A caso bsico

B extenso

uma instncia do caso de utilizao A pode incluir (sujeito a condies especificadas na extenso) o comportamento especificado por B o caso bsico deve fazer sentido sozinho os actores interagem com o caso bsico (A)

Em software, corresponde normalmente a seguir um boto ou um link num formulrio que desencadeia uma aco ou d acesso a outro formulrio ou relatrio

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

45

Relao extend entre casos de utilizao

Exemplo:
Servir jantar extend Servir uma entrada extend Servir uma sobremesa extend Servir luz de velas

Podem-se indicar explicitamente os pontos em que um caso de utilizao bsico pode ser estendido (pontos de extenso)
Servir jantar

Na descrio textual do caso bsico: .... (sobremesa). ...

Extension points sobremesa

extend (sobremesa)

Servir uma sobremesa

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

46

Relao extend entre casos de utilizao


Manuteno da Lista de Disciplinas: Visualizar Lista de Disciplinas extend Visualizar Ficha de Disciplina extend Adicionar Disciplina extend extend

extend Modificar Disciplina

Eliminar Disciplina

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

47

Relao include entre casos de utilizao (1)

Quando vrios casos de utilizao tm uma sub-sequncia de funcionamento comum, conveniente separar essa parte comum para um novo caso de utilizao que includo pelos primeiros Notao:
A include B (parte comum a outros casos de utilizao alm de A)

Significado

uma instncia do caso de utilizao A inclui obrigatoriamente o comportamento especificado por B os actores interagem com A na descrio textual de A: include(B)

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

48

Relao include entre casos de utilizao (2)

Exemplo:

Servir almoo include Pagar refeio include

Servir jantar

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

49

Relao de generalizao entre casos de utilizao

Relao de generalizao: entre uma coisa mais genrica e uma coisa mais especializada Significa que o caso de utilizao "filho" (mais especializado) herda o comportamento, significado e actores do caso de utilizao "pai" (mais genrico)
O filho pode adicionar ou substituir comportamento do pai O filho pode aparecer em qualquer contexto em que o pai pode aparecer

Notao: mesmo que generalizao entre classes


Exemplo:
Servir almoo Servir uma refeio Servir jantar
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

50

Relao de generalizao entre actores

Exemplo:
Cliente

Um cliente empresarial um (is a) cliente O cliente empresarial herda as associaes (de comunicao com casos de utilizao) do cliente genrico Permite simplificar e estruturar os diagramas

Cliente Empresarial

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

51

Pacotes de casos de utilizao

Num sistema complexo, podem existir demasiados casos de utilizao para visualizar com clareza num nico diagrama!

Uma soluo: um diagrama de casos de utilizao inicial, com pacotes de casos de utilizao, e um diagrama de casos de utilizao relativo a cada pacote
Critrios de agrupamento de casos de utilizao em pacotes:
- por actores - por sub-sistemas

Pacotes de casos de utilizao correspondem normalmente a menus em sistemas de software

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

52

Exemplo: Restaurante
Restaurante
Servir almoo Servir uma refeio Cliente extend extend Servir uma entrada Servir uma sobremesa Servir luz de velas include Pagar refeio

Servir jantar extend

Comprar bens Fornecedor


UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

53

Exemplo: Sistema de Gesto de Restaurantes


Sist. de Gesto de Restaurantes (SGR)

Relao com Fornecedores Cozinheiro

Empregado de mesa

Relao com Clientes

Empregado de caixa

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

54

Exemplo: SGR (2)


SGR Relao com Clientes

Elaborar menu do dia

Cozinheiro
Registar pedido

Empregado de mesa

Tirar a conta

Pagar a conta

Empregado da caixa

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

55

Exemplo: SGR (3)


SGR Relao com Fornecedores

Preparar encomenda

Cozinheiro

Registar compra

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

56

Caso de Estudo:
Transportes Urbanos

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

57

Objectivo

Modelar uma empresa de transportes urbanos cuja misso transportar passageiros ao longo de carreiras pr-definidas, entre paragens, com horrios estabelecidos, usando veculos guiados por motoristas, cobrando bilhetes ou usando ttulos de transporte Tratando-se de uma empresa moderna, possui sistemas de seguimento dos veculos o que permite monitorizar o cumprimento dos horrios e fornecer informao aos passageiros no s sobre os horrios mas sobre o tempo que demora efectivamente um veculo a atingir uma paragem

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

58

Caso de Estudo: Sistema de Informao de uma Biblioteca

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

59

Objectivo

Pretende-se projectar o Sistema de Informao de uma Biblioteca (SIB), para apoiar as seguintes actividades:
gesto de aquisies de publicaes
- registar a aquisio

gesto de consultas e fotocpias de publicaes dentro da biblioteca


- interessa contar o n de vezes que cada publicao foi consultada

consulta da base de dados de publicaes (pblico e empregados) gesto de scios


- inscrio, renovao, cancelamento

gesto de requisies
- s os scios podem requisitar publicaes - requisio com levantamento, devoluo

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

60

Metodologia

Captura e especificao de requisitos:


listar requisitos candidatos construir um modelo de casos de utilizao da biblioteca detalhar casos de utilizao da biblioteca atravs de diagramas de actividades, identificando as actividades automatizadas com recurso ao SIB e os trabalhadores envolvidos construir um modelo de domnio construir um glossrio de conceitos de domnio construir um modelo de casos de utilizao do SIB (sistema de software) detalhar alguns casos de utilizao da SIB atravs de diagramas de sequncia
- sistema representado por um nico objecto

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

61

Diagrama de casos de utilizao da biblioteca


Biblioteca
cone para actor em relao ao negcio
Consultar base de dados de publicaes Leitor cone para caso de utilizao do negcio Consultar publicao

Obter fotocpia de publicao <<include>> Levantar publicao Scio Requisitar publicao <<include>>

Devolver publicao

Em UML 1.3, devia ser uma seta de dependncia


Fornecedor Adquirir publicao

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

62

Actores em relao biblioteca

Leitor
Pessoa que se dirige biblioteca para consultar publicaes, sendo ou no scio da biblioteca.

Scio
Leitor que est inscrito como scio da biblioteca.

Fornecedor
Empresa a quem a biblioteca adquire publicaes.

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

63

Casos de utilizao da biblioteca

Consultar base de dados de publicaes


Consultar a base de dados com a lista de publicaes existentes na biblioteca, incluindo informao sobre o estado das publicaes.

Consultar publicao
O leitor consulta a publicao dentro das instalaes da biblioteca. Para fins de gesto, mantido um contador do nmero de vezes que cada publicao consultada dentro da biblioteca.

Obter cpia de publicao


O leitor pode tirar fotocpias de partes de publicaes numa fotocopiadora da biblioteca.

Requisitar publicao
A biblioteca empresta uma publicao a um scio para consulta no exterior da biblioteca mediante uma requisio. Envolve dois contactos com a biblioteca, para o levantamento e a devoluo da publicao.

Adquirir publicao
A biblioteca adquire livros a fornecedores.

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

64

Diagrama de casos de utilizao do SIB


Sistema de Informao da Biblioteca (SIB)

Leitor
(f rom Modelo de Casos de Utilizao da Biblioteca)

Consultar base de dados de publicaes


(f rom Modelo de Casos de Utilizao da Biblioteca)

Registar scio Registar publicao Registar levantamento de publicao

Gestor

Funcionrio

cone para trabalhador do negcio

Obter estatsticas de utilizao Registar devoluo de publicao

Registar consulta de publicao

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

65

Actores em relao ao SIB

Leitor
Pessoa que se dirige biblioteca para consultar publicaes, sendo ou no scio da biblioteca.

Funcionrio
Empregado da biblioteca que atende os leitores e scios.

Gestor
Empregado da biblioteca que trata das aquisies de publicaes e consulta estatsticas de utilizao.

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

66

Casos de utilizao do SIB (1)

Consultar base de dados de publicaes


Consultar a base de dados com a lista de publicaes existentes na biblioteca, incluindo informao sobre o estado das publicaes.

Registar scio
Inscrever leitor como scio da biblioteca.

Registar levantamento de publicao


Registar o levantamento de uma publicao por um scio (emprstimo da publicao ao scio).

Registar devoluo de publicao


Registar a devoluo biblioteca de uma publicao que estava emprestada por um scio.

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

67

Casos de utilizao do SIB (2)

Registar consulta de publicao


Registar que uma publicao foi consultada por um leitor dentro da biblioteca. No necessrio identificar o leitor.

Registar publicao
Registar publicao j existente (na instalao do sistema) ou adquirida.

Obter estatsticas de utilizao


Obter estatsticas sobre a taxa de utilizao das vrias publicaes, teis para a aquisio de novas publicaes.

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

68

Exerccios

Para um caso prtico:


Definir o mbito do sistema em anlise Identificar os actores envolvidos Identificar os casos de utilizao do negcio Relacionar os casos de utilizao entre si, quando apropriado Descrever os casos de utilizao em forma textual

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

69

UML Diagramas de Classes

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

70

ndice

Objectivo dos diagramas de classes Objectos, classes, atributos e operaes Relaes entre classes: associao, agregao e composio Relaes entre classes: generalizao

Relaes entre classes: dependncia e concretizao


Restries, elementos derivados, pr-condies e pscondies

Classes especiais: classes parametrizadas, interfaces, tipos, meta-classes e utilitrios


UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

71

Objectivo dos diagramas de classes

Um diagrama de classes serve para modelar o vocabulrio de um sistema, do ponto de vista do utilizador/problema ou do implementador/soluo
Ponto de vista do utilizador/problema na fase de captura e anlise de requisitos, em paralelo com a identificao dos casos de utilizao Vocabulrio do implementador/soluo na fase de projecto (design)

Construdo e refinado ao longo das vrias fases do desenvolvimento do software, por analistas, projectistas (designers) e implementadores Tambm serve para:
Especificar colaboraes (no mbito de um caso de utilizao ou mecanismo) Especificar esquemas lgicos de bases de dados Especificar vistas (estrutura de dados de formulrios, relatrios, etc.)

Modelos de objectos de domnio, negcio, anlise e design


UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

72

Objectos, classes, atributos e operaes

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

73

Objectos

Um objecto algo com fronteiras bem definidas, relevante para o problema em causa, com estado,
modelado por valores de atributos (tamanho, forma, peso, etc.) e por ligaes que num dado momento tem com outros objectos

comportamento
um objecto exibe comportamentos invocveis (por resposta a chamadas de operaes) ou reactivos (por resposta a eventos)

e identidade
no espao: possvel distinguir dois objectos mesmo que tenham o mesmo estado
- exemplo: podemos distinguir duas folhas de papel A4, mesmo que tenham os mesmos valores dos atributos

no tempo: possvel saber que se trata do mesmo objecto mesmo que o seu estado mude
- exemplo: se pintarmos um folha de papel A4 de amarelo, continua a ser a mesma folha de papel
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

74

Objectos do mundo real e objectos computacionais

No desenvolvimento de software orientado por objectos, procurase imitar no computador o mundo real visto como um conjunto de objectos que interagem entre si Muitos objectos computacionais so imagens de objectos do mundo real Dependendo do contexto (anlise ou projecto) podemos estar a falar em objectos do mundo real, em objectos computacionais ou nas duas coisas em simultneo Exemplos de objectos do mundo real:
o Sr. Joo a aula de ES no dia 11/10/2000 s 11 horas

Exemplos de objectos computacionais:


o registo que descreve o Sr. Joo (imagem de objecto do mundo real) uma rvore de pesquisa binria (objecto puramente computacional)
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

75

Classes (1)

No desenvolvimento de software OO, no nos interessam tanto os objectos individuais mas sim as classes de objectos

Uma classe um descritor de um conjunto de objectos que partilham as mesmas propriedades (semntica, atributos, operaes e relaes)
Trata-se de uma noo de classe em compreenso, no sentido de tipo de objecto, por oposio a uma noo de classe em extenso, como conjunto de objectos do mesmo tipo

Um objecto de uma classe uma instncia da classe A extenso de uma classe o conjunto de instncias da classe Em Matemtica, uma classe um conjunto de objectos com uma propriedade em comum, podendo ser definida indiferentemente em compreenso ou em extenso
C = {x |N : x mod 3 = 2} = {2, 5, 8, 11, 14, ...}
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

76

Classes (2)

O conjunto de todos os objectos num determinado contexto forma um universo (UoD - Universe of Discourse)

As extenses das classes so subconjuntos desse universo

classe
UoD
x Joo x Maria x Rui Aluno Curso x Informtica x Electrotecnia Funcionrio

objecto

x D Rita x Sr. Silva

ligao
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

77

Classes (3)

Classes podem representar:


Coisas concretas: Pessoa, Turma, Carro, Imvel, Factura, Livro Papis que coisas concretas assumem: Aluno, Professor, Piloto Eventos: Curso, Aula, Acidente Tipos de dados: Data, Intervalo de Tempo, Nmero Complexo, Vector

Decomposio orientada por objectos : comea por identificar os tipos de objectos (classes) presentes num sistema
contrapor com decomposio funcional ou algortmica tipos de objectos so mais estveis do que as funes, logo a decomposio orientada por objectos leva a arquitecturas mais estveis

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

78

Classes (4)

Em UML, uma classe representada por um rectngulo com o nome da classe


Aluno Curso

Habitualmente escreve-se o nome da classe no singular (nome de uma instncia), com a 1 letra em maiscula Para se precisar o significado pretendido para uma classe, devese explicar o que (e no ...) uma instncia da classe
Exemplo: Um aluno uma pessoa que est inscrita num curso ministrado numa escola. Uma pessoa que esteve no passado inscrita num curso, mas no est presentemente inscrita em nenhum curso, no um aluno.

Em geral, o nome da classe no suficiente para se compreender o significado da classe

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

79

Atributos de instncia

O estado de um objecto dados por valores de atributos (e por ligaes que tem com outros objectos)

Todos os objectos de uma classe so caracterizados pelos mesmos atributos (ou variveis de instncia)
o mesmo atributo pode ter valores diferentes de objecto para objecto

Atributos so definidos ao nvel da classe, enquanto que os valores dos atributos so definidos ao nvel do objecto
Exemplos:
uma pessoa (classe) tem os atributos nome, data de nascimento e peso Joo (objecto) uma pessoa com nome Joo Silva, data de nascimento 18/3/1973 e peso 68 Kg
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

80

Atributos de instncia

Atributos so listados num compartimento de atributos (opcional) a seguir ao compartimento com o nome da classe

Uma classe no deve ter dois atributos com o mesmo nome


Os nomes dos tipos no esto pr-definidos em UML, podendo-se usar os da linguagem de implementao alvo
classe Pessoa compartimento de atributos nome: string data de nascimento: date peso: real = 75 kg valor inicial por omisso
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

nome do atributo

tipo de dados

81

Operaes de instncia

Comportamento invocvel de objectos modelado por operaes


uma operao algo que se pode pedir para fazer a um objecto de uma classe

Objectos da mesma classe tm as mesmas operaes Operaes so definidos ao nvel da classe, enquanto que a invocao de uma operao definida ao nvel do objecto

Princpio do encapsulamento: acesso e alterao do estado interno do objecto (valores de atributos e ligaes) controlado por operaes
Nas classes que representam objectos do mundo real mais comum definir responsabilidades em vez de operaes Pessoa nome: string morada: string setMorada(novaMorada:string): bool
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

compartimento de operaes

82

Atributos e operaes estticos ( de instncia)

Atributo esttico: tem um nico valor para todas as instncias (objectos) da classe
valor est definido ao nvel da classe e no ao nvel das instncias

Factura nmero: Long data: Date valor: Real ltimoNumero: Long = 0 criar(data:Date, valor:Real) destruir() valorTotal(): Real
retorna a soma dos valores de todas as facturas

Operao esttica: no invocada para um objecto especfico da classe Notao: nome sublinhado

Correspondem a membros estticos (static) em C++, C# e cria nova factura com a data e valor especificados, e um n sequencial atribudo Java
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

automaticamente com base em ultimoNumero


83

Visibilidade de atributos e operaes

Visibilidade:
+ (public) : visvel por todos

(private) : visvel s por operaes da prpria classe

Toolbar # currentSelection: Tool # toolCount: Integer + getTool(i: Integer): Tool + addTool(t: Tool) + removeTool(i: Integer) - compact()
usada internamente por outras operaes

# (protected): visvel por operaes da prpria classe e descendentes (subclasses)

Princpio do encapsulamento: esconder todos os detalhes de implementao que no interessam aos clientes (utilizadores) da classe
permite alterar representao do estado sem afectar clientes permite validar alteraes de estado

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

84

*Multiplicidade de classes e atributos

Multiplicidade de classe: nmero de instncias que podem existir


por omisso, 0..*

NetworkController 1 consolePort [2..*]: Port

Multiplicidade de atributo: nmero de valores que o atributo pode tomar do tipo especificado
por omisso 1 qual a diferena em relao a especificar a multiplicidade no prprio tipo de dados do atributo?

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

85

Relaes entre classes: associao, agregao e composio

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

86

Associaes binrias
Participante-1

Nome da associao papel-1 papel-2

Participante-2

Uma associao uma relao entre objectos das classes participantes (um objecto de cada classe em cada ligao) No gera novos objectos Matematicamente,uma associao binria uma relao binria, i.e., um subconjunto do produto cartesiano das extenses das classes participantes Assim como um objecto uma instncia duma classe, uma ligao uma instncia duma associao Pode haver mais do que uma associao (com nomes diferentes) entre o mesmo par de classes Papis nos extremos da associao podem ter indicao de visibilidade (pblica, privada, etc.)
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

87

Multiplicidade de associaes binrias


Muitos-para-Muitos Professor * * Curso Muitos-para-1 1-para-1 Curso 1 1 Plano de Curso

Aluno

1 Curso

(sem restries)
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

88

Notao para a multiplicidade


1 0..1 * 0..* - exactamente um - zero ou um (zero a 1) - zero ou mais - zero ou mais

1..*
1, 3..5

- um ou mais
- um ou trs a 5

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

89

Associao reflexiva

Pode-se associar uma classe com ela prpria (em papis diferentes)

pai 0..1

Pessoa filho * * filho

me 0..1

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

90

Nome de associao

A indicao do nome opcional O nome indicado no meio da linha que une as classes participantes Pode-se indicar o sentido em que se l o nome da associao
Trabalha-para empregado Emprega

Empresa

empregador

Pessoa

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

91

Associaes unidireccionais
As associaes so classificadas quanto navegabilidade em:
bidireccionais
(normal) Class-1 Class-1

Class-2
Class-2

unidireccionais

um objecto da classe 1 tem a responsabilidade de dar o(s) objecto(s) correspondente(s) da classe 2 (nvel de especificao)

ou
um objecto da classe 1 tem apontador(es) para o(s) objecto(s) correspondente(s) da classe 2 (nvel de implementao)

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

92

Classe-Associao
Association Name Class-1 Association Name Class-2

link attribute ...


link operation ... rene as propriedades de associao e classe o nome pode ser colocado num stio ou noutro, conforme interessa realar a natureza de associao ou de classe, mas a semntica a mesma o nome tambm pode ser colocado nos dois stios no possvel repetir combinaes de objectos das classes participantes na associao
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

93

Associaes n-rias

Notao
Association Name Class-1 role-1 role-3 Class-3 role-2 Class-2

Multiplicidade
Class-1 0..1 Class-3
a cada par de objectos das restantes classes (1 e 2), correspondem 0 ou 1 objectos da classe 3

Class-2

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

94

Exemplo: associaes n-rias


poca
poca * * * Guarda-redes

Equipa

equipa

Jogador

Registo

Golos marcados Golos sofridos Vitrias Derrotas empates

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

95

Atributos versus Associaes

Uma propriedade que designa um objecto de uma classe presente no modelo, deve ser modelada como uma associao e no como um atributo Exemplo:
Pas nome: string capital: string capital: Cidade 1 0..1 Pertence a * Cidade

1 nome: string capital

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

96

*Associaes qualificadas
Classe A

qualificador

Associao

Classe B

Qualificador: lista de um ou mais atributos de uma associao utilizados para navegar de A para B "Chave de acesso" a B (acesso a um objecto ou conjunto de objectos) a partir de um objecto de A
para cada par Clube + n de scio 0..1

uma Pessoa pode ser scia de vrios clubes *

Clube

n de scio

Pessoa nome morada

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

97

Agregao

Associao com o significado contm ( constitudo por) / faz parte de (part of)

Relao de incluso nas instncias das classes


Hierarquias de objectos Exemplo:
Equipa 0..1 * Jogador Uma equipa contm 0 ou mais jogadores

Um jogador faz parte de uma equipa (num dado momento), mas tambm pode estar desempregado

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

98

Composio

Forma mais forte de agregao aplicvel quando:


existe um forte grau de pertena das partes ao todo cada parte s pode fazer parte de um todo (i.e., a multiplicidade do lado do todo no excede 1) o topo e as partes tm tempo de vida coincidente, ou, pelo menos, as partes nascem e morrem dentro de um todo

a eliminao do todo propaga-se para as partes, em cascata

Notao: losango cheio ( ) ou notao encaixada Membros-objecto em C++

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

99

Composio: notaes alternativas


Window

1
scrollbar Slider 2

1 body 1 Panel

title 1 Header

Window

Window
scrollbar: Slider title: Header body: Panel

2 1
1

scrollbar[2]: Slider title: Header body: Panel

(sub-objectos no compartimento dos atributos)


UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

100

Relaes entre classes: generalizao

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

101

Generalizao
Pessoa generalizao Aluno super-classe especializao sub-classe

Relao semntica is a ( um / uma) : um aluno uma pessoa Relao de incluso nas extenses das classes:
UoD
super-classe sub-classe x x x x objecto

extenso (sub-classe) extenso (super-classe)

Relao de herana nas propriedades: A sub-classe herda as propriedades


(atributos, operaes e relaes) da super-classe, podendo acrescentar outras
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

102

As trs facetas da generalizao

Substitutabilidade
onde se espera um objecto da super-classe pode-se passar um objecto duma subclasse

Herana de interface
a subclasse herda as assinaturas (e significados) das operaes da super-classe

Herana ou overriding de implementao


a subclasse pode herdar as implementaes das operaes da superclasse, mas tambm pode ter novas implementaes de algumas dessas operaes quando em UML se repete numa subclasse a assinatura de uma operao da super-classe, quer dizer que tem uma nova implementao na subclasse
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

103

Polimorfismo

Substitutabilidade + Overriding Polimorfismo + Late Binding


Quando se tem uma varivel do tipo referncia ou apontador para super-classe (que pode guardar uma referncia para objecto da super-classe ou de uma subclasse), e se invoca uma operao, usada a implementao da classe do objecto referenciado (determinada em tempo de execuo late binding), e no a implementao de acordo com o tipo de referncia (determinada em tempo de compilao early binding) Em C++ e C# s acontece com funes ou mtodos virtuais

Mecanismo muito poderoso, que permite estender software atravs da criao de novas subclasses que so usadas a partir de classes pr-existentes (que dependem apenas da interface e no da implementao das operaes), sem que estas tenham conhecimento dessas extenses
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

104

Exemplo em C++
class Pessoa { private: string nome; Data dataNascimento; public: Pessoa(string, Data); string getNome() const; Data getDataNascimento() const; int getIdade() const; void setNome(string); void setDataNascimento(Data); virtual void imprime() const; };

Ferramenta: Microsoft Visual Modeler

class Aluno : public Pessoa { private: string curso; public: Aluno(string nm, Data, string crs); string getCurso() const; void setCurso(string); virtual void imprime() const; };
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

105

Hierarquias de classes

Em geral, pode-se ter uma hierarquia de classes relacionadas por herana / generalizao
em cada classe da hierarquia colocam-se as propriedades que so comuns a todas as suas subclasses evita-se redundncia, promove-se reutilizao!

(...)
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

106

Notaes alternativas para hierarquias de classes


Pessoa

Aluno

Professor

Pessoa

Aluno

Professor

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

107

Subclasses sobrepostas (disjuntas)

caso em que um objecto da superclasse pode pertencer simultaneamente a mais do que uma subclasse

indicado por restrio {overlapping}


o contrrio {disjoint} (situao por omisso?)
Superclass {overlapping} ou Superclass

{overlapping}
Subclass-1 Subclass-2

Subclass-1

Subclass-2

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

108

Subclasses incompletas (completas)

caso em que um objecto da superclasse pode no pertencer a nenhuma das subclasses

indicado por restrio {incomplete}


o contrrio {complete} (situao por omisso?)

Funcionrio {incomplete} Tcnico Comercial

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

109

Herana mltipla (simples)

ocorre numa subclasse com mltiplas super-classes geralmente suportada por linguagens de programao OO
Acadmico nome e-mail {overlapping} Estudante curso Professor categoria pelo menos conceptualmente, existe uma super-classe comum

S faz sentido assim!

Professor-Estudante
reduo de horrio

herda propriedades de Estudante e Professor e, indirectamente, de Acadmico (uma nica vez!)


110

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

Classificao dinmica (esttica)

classificar objecto: atribuir classe a objecto


caso em que a(s) classe(s) a que um objecto pertence pode(m) variar ao longo da vida do objecto indicado por esteretipo dynamic geralmente no suportada por linguagens de programao OO atributo discriminante (atributo de pessoa que indica a
subclasse a que pertence)

Gestor Pessoa tarefa dynamic Engenheiro Vendedor


Uma pessoa que num dado momento tem a tarefa de gestor, pode noutro momento ter a tarefa de vendedor, etc.
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

111

Classificao mltipla (simples)

caso em que um objecto pode pertencer num dado momento a vrias classes, sem que exista uma subclasse que represente a interseco dessas classes (com herana mltipla) geralmente no suportado pelas linguagens de programao OO (pode ento ser simulada por agregao de papis)
Mdico Homem Mulher sexo Pessoa paciente Paciente exemplo de combinao legal: {Mulher, Paciente, Enfermeira}
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

funo Enfermeira

Fisioterapeuta

112

Classes e operaes abstractas (concretas)

Classe abstracta: classe que no pode ter instncias directas


pode ter instncias indirectas pelas subclasses concretas

Icon origin: Point display() getID(): Integer

Operao abstracta: operao com implementao a definir nas subclasses


uma classe com operaes abstractas tem de ser abstracta funo virtual pura em C++

RectangularIcon height: Integer width: Integer

ArbitraryIcon

edge:LineCollection
display() isInside(p:Point):Bool

Notao : nome em itlico ou propriedade {abstract}

Button
Fonte: The UML User Guide, Booch et al

display()
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

113

Associao versus Agregao / Composio versus Generalizao


Pessoa classe Cursos e disciplinas

Professor generalizao Aluno Jos

Joo Maria

Curso de Modelao de Software UML associao VDM++ objecto agregao ou composio

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

114

Exemplo: meta-modelo parcial


Generalizao 2 no caso de agregao superclasse * * Classe nome subclasse 1 * Extremo de Associao 2..* multiplicidade papel visibilidade 1 Associao nome Relao

Agregao

Classe-Associao

Composio

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

115

Relaes entre classes: dependncia e concretizao

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

116

Relao de dependncia

Relao de uso entre dois elementos (classes, componentes, etc.), em que uma mudana na especificao do elemento usado pode afectar o elemento utilizador Exemplo tpico: classe-1 que depende de outra classe-2 porque usa operaes ou definies da classe-2

teis para gesto de dependncias

cliente

servidor

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

117

Relao de concretizao (realization)

Relao entre elementos a diferentes nveis de abstraco, isto , entre um elemento mais abstracto (que especifica uma interface ou um "contracto", entre clientes e implementadores) e um elemento correspondente mais concreto (que implementa esse contracto) Difere da generalizao porque h apenas herana de interface e no herana de implementao
LinkedStack type Stack interface ISerializable
Caso de utilizao
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

XMLDocument
Colaborao

118

Dependncia e concretizao

Aparecem frequentemente combinados Cliente usa o servidor sem dele depender directamente (depende apenas da interface ou contracto que o servidor implementa)

cliente

contracto ou interface

servidor
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

119

Restries, elementos derivados, pr-condies e ps-condies

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

120

Restries

Uma restrio especifica uma condio que tem de se verificar no estado do sistema (objectos e ligaes)

Uma restrio indicada por uma expresso ou texto entre chavetas ou por uma nota posicionada junto aos elementos a que diz respeito, ou a eles ligada por linhas a trao interrompido (sem setas, para no confundir com relao de dependncia)
Podem ser formalizadas em UML com a OCL - "Object Constraint Language"

Tambm podem ser formalizadas (como invariantes) numa linguagem de especificao formal como VDM++
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

121

Restries em classes
Pessoa nome dataNascimento localNascimento dataFalecimento {chave candidata: (nome, dataNascimento, localNascimento)} {dataFalecimento > dataNascimento}

Factura

LinhaFactura 1 * nmero artigo quantidade valor

nmero data

{chave candidata: (nmero)}

{chave candidata: (factura, nmero)}


UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

122

Restries em associaes
Factura {ordered} 1 * LinhaFactura uma factura constituda por um conjunto ordenado de 0 ou mais linhas

Pessoa

* 1

Membro-de {subset} Director-de

* * Comit

Pessoa Conta {xor} Empresa empregado Pessoa * chefe 0..1 * subordinado empregador 1 Pessoa.empregador = Pessoa.chefe.empregador

associaes mutuamente exclusivas

Empresa

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

123

Elementos derivados

Elemento derivado (atributo, associao ou classe): elemento calculado em funo doutros elementos do modelo Notao: barra / antes do nome do elemento derivado Um elemento derivado tem normalmente associada uma restrio que o relaciona com os outros elementos

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

124

Exemplo de elementos derivados


Empresa 1 empregador 1 Departamento 1 TrabalhaEmDepartamento * * Pessoa dataNascimento /idade *

/TrabalhaEmEmpresa {Pessoa.empregador = Pessoa.departamento.empresa}

{idade = dataActual() - dataNascimento}

Movimento data valor

/ TotalMensal ms valor

{valor = (select sum(valor) from Movimento where month(data)=ms)}


UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

125

* Pr-condies e ps-condies

Semntica de operaes pode ser captada atravs de prcondies e ps-condies

Pr-condio: uma condio nos argumentos e estado inicial do objecto, a verificar na chamada (incio) da operao
Ps-condio: uma condio nos argumentos, estado inicial do objecto, estado final do objecto e valor retornado pela operao, a verificar no retorno (fim) da operao Podem ser expressas em UML atravs da OCL (Object Constraint Language) Tambm podem ser expressas numa linguagem de especificao formal, como VDM++
VDM++ tem a vantagem de permitir tambm implementar as operaes e executar as pr-condies e ps-condies

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

126

Classes especiais: classes parametrizadas, interfaces, tipos, meta-classes, utilitrios

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

127

* Classes parametrizadas (templates)


classe parametrizada FArray parmetros actuais data [k] : T
bind (Point,3) ThreePoints

T k: Integer

parmetros formais
generalizao, porque no se podem acrescentar propriedades!

ou

Farray<Point,3>

classe ligada ("bound")


C++ template <class T, int k> class FArray { public: T[k] data; }; typedef Farray<Point,3> ThreePoints;
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

128

Interfaces

Uma interface especifica um conjunto de operaes (com sintaxe e semntica) externamente visveis de uma classe de (ou componente, subsistema, etc.)
semelhante a classe abstracta s com operaes abstractas e sem atributos nem associaes (em C++ mesmo isso!) separao mais explcita entre interface e (classes de) implementao interfaces so mais importantes em linguagens como Java, C# e VB.NET que tm herana simples de implementao e herana mltipla de interface

Relao de concretizao de muitos parta muitos entre interfaces e classes de implementao

Vantagem em separar interface de implementao: os clientes de uma classe podem ficar a depender apenas da interface em vez da classe de implementao
Notao: classe com esteretipo interface (ligada por relao de concretizao classe de implementao) ou crculo (ligado por linha simples classe de implementao)
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

129

Interfaces: notaes alternativas


ClientClass
Cliente depende s da interface e no da implementao

ClientClass

InterfaceClass

interface InterfaceClass

ou

operations
relao de concretizao

ImplementationClass attributes operations attributes

ImplementationClass

operations

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

130

* Tipos

Um tipo usado para especificar um domnio de objectos em conjunto com as operaes aplicveis a esses objectos, sem especificar a implementao fsica desses objectos
no pode incluir mtodos (implementao de operaes) pode ter atributos e associaes (abstractos!), mas apenas para especificar o comportamento das operaes, sem compromisso de implementao notao: classe com esteretipo type semelhante a tipo abstracto de dados

Uma classe de implementao (classe normal) define a estrutura fsica de dados (para atributos e associaes) e mtodos de um objecto tal como implementado numa linguagem tradicional
notao: classe normal ou classe com esteretipo implementationClass diz-se que uma classe de implementao concretiza ("realizes") um tipo se proporciona todas as operaes definidos no tipo, com o mesmo comportamento especificado no tipo
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

131

* Tipos: exemplo
type FinitePriorityQueue isFull():Boolean
relao de concretizao

maxSize:Integer

type PriorityQueue elems: set of (priority: Integer, value:T)

T HeapFinitePriorityQueue maxSize:Integer

insert(value:T, priority:Integer) deleteMax():T isEmpty():Boolean

- elems [0..maxSize]: T - size: Integer = 0 + insert(value: T, priority: Integer) + deleteMax():T + isEmpty(): Boolean + isFull(): Boolean - HeapifyUp - HeapifyDown bind (Paciente, 100)

HeapFilaPacientes

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

132

* Meta-classes

Uma meta-classe uma classe cujas instncias so classes Notao: classe com esteretipo metaclass Usadas geralmente em meta-modelos Relao de instanciao (entre classe e meta-classe) pode ser indicada por dependncia com esteretipo instanceOf
metaclass
SYSCLASSES
name instanceOf

Class-1

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

133

* Utilitrios

Um utilitrio um agrupamento de variveis globais e procedimentos como classe

Pode ser implementado por classe em que todos os atributos e operaes so estticos
Notao: classe com esteretipo utility
utility MathPack pi: Real sin(ang: Real): Real cos(ang: Real): Real

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

134

* Esteretipos de classes em modelos de negcio


Um modelo de negcio descreve a implementao dos processos de negcio (de fronteira) e de suporte (internos) atravs de colaboraes entre objectos dos seguintes tipos:

business actor

actor em relao ao negcio (cliente ou outra entidade ou sistema que interage com o negcio); actor externo

business worker

perfil de trabalhador do negcio, interno (no interage com actores do negcio) ou de fronteira (interage com actores do negcio); actor interno

objecto passivo manipulado pelos trabalhadores e actores nas actividades dos processos de negcio
business entity

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

135

* Esteretipos de classes em modelos de anlise


Um modelo de anlise descreve implementaes "ideais" dos casos de utilizao de um sistema de software, com vista a melhor compreender os seus requisitos, atravs de colaboraes entre objectos dos seguintes tipos: actor em relao ao sistema de software (pode ser interno ou externo ao negcio)
actor

objecto de fronteira (formulrio, janela, etc.)


boundary

objecto de controlo (controla sequncia de funcionamento, transaces, etc.; estabelece ligao entre objectos de fronteira e entidades)
control

objecto passivo que guarda estado mais ou menos persistente


entity
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

136

Biblioteca: modelo de domnio


Biblioteca nome morada telefone 1 1 Publicao
isbn n de patrimnio ttulo * ano editora data de aquisio custo contador de consultas / estado : (disponvel,emprestada)

S se considera a existncia dma instncia

* * Scio
nmero nome morada telefone data de inscrio validade da inscrio estado : (activo,inactivo)

Autor
nome nacionalidade

1 * * Requisio

nmero data de requisio prazo de devoluo data de devoluo

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

137

Biblioteca: modelo de desenho (lgica de negcio)

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

138

Exerccios

Para um caso prtico:


Identificar os conceitos do domnio do problema Identificar propriedades dos conceitos Identificar associaes entre os conceitos (tipos, nomes, cardinalidades, papis)

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

139

UML Diagramas de Objectos

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

140

Finalidade dos diagramas de objectos

Um diagrama de objectos mostra instncias de classes (objectos) e de associaes (ligaes entre objectos) Utilizados para ilustrar cenrios / configuraes particulares Base para diagramas de colaborao

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

141

Objectos

Um objecto uma instncia de uma classe


representado por um rectngulo com o nome sublinhado
Joo: Aluno
ou

: Aluno

ou

Joo:

nome do objecto

separador

nome da classe

objecto annimo

classe no especificada

classe Aluno nome: string data de nascimento: date peso: real = 75 kg

objecto

Joo: Aluno
nome = Joo Silva data de nascimento = 18/3/1973 peso = 70 kg
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

142

Objectos compostos

Um objecto composto uma instncia de uma classe que tem classes associadas por relaes de composio

Componentes de objecto composto podem ser apresentados de forma encaixada


Componentes podem estar ligados entre si
composto 1: Classe 1

componente 1: Classe 2

componente 2: Classe 2

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

143

Ligaes

Assim como um objecto uma instncia duma classe, uma ligao uma instncia duma associao

Nomes de papis e associaes podem ser suprimidos se no h ambiguidade


Nome da associao quando aparece sublinhado

A multiplicidade no aparece
Adornos de agregao, composio e navegao podem aparecer

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

144

Instanciao

Relao de instanciao entre objecto e classe pode ser indicada por dependncia com esteretipo instanceOf

Class-1 instanceOf object-1: Class-1

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

145

Exemplo 1: Estrutura Organizacional


C&A : Organization Unit

0..* Organization Unit +name 0..1

Board : Organization Unit Financial Department : Organization Unit Production : Organization Unit SalesDepartment : Organization Unit

Web sales : Organization Unit Telesales Department : Organization Unit Product Development : Organization Unit Purchase Department : Organization Unit System Department : Organization Unit Marketing Department : Organization Unit

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

146

Exemplo 2: rvore genealgica


1 0..* Homem Casal 0..* 0..1 0..* -descendente 1 Mulher

Pessoa -nome

Joo : Homem

Maria : Mulher

Pedro : Homem

Manuela : Mulher

Joo & Maria : Casal

Pedro & Manuela : Casal

-descendente Afonso : Homem

-descendente Leonor : Mulher

-descendente Carlos : Homem

-descendente Josefa : Mulher

Carlos & Leonor : Casal -descendente Filipe : Homem UML Unified Modeling Language

Ademar Aguiar, Gabriel David, Joo Pascoal Faria

147

Exemplo 3: Objecto composto


Formulrio

Ficha de Scio: Formulrio

-nome 1

Nmero: Caixa de Texto Nome: Caixa de Texto Fotografia: Imagem


Boto

0..* Controlo -nome

Caixa de Texto

Imagem

Ok: Boto

Cancelar: Boto

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

148

UML Diagramas de Pacotes (Packages) e Modelao da Arquitectura Lgica

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

149

Pacotes

Um pacote (package) em UML um mecanismo de agrupamento genrico

Notao: pasta com o nome no interior ou na pega


No caso de um pacote contido noutro, o nome completo do pacote contido inclui o nome do seu contentor

Client Client

Sensors::Vision

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

150

Diagramas de pacotes

Um diagrama de pacotes mostra pacotes e relaes entre pacotes

Na realidade, no existem propriamente diagramas de pacotes em UML; em vez disso, pacotes e relaes entre pacotes aparecem noutros diagramas, de acordo com o tipo de pacote
Pacotes de classes (pacotes lgicos) - em diagramas de classes Pacotes de componentes em diagramas de componentes Pacotes de ns em diagramas de distribuio Pacotes de casos de utilizao em diagramas de casos de utilizao

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

151

Pacotes lgicos

Um pacote lgico (ou mdulo lgico) um agrupamento lgico de classes e relaes entre essas classes
diviso de um sistema em pacotes lgicos uma diviso de responsabilidades

Corresponde ao conceito de package em Java ou de namespace em C++ e C# No confundir com empacotamento fsico do software em ficheiros de cdigo fonte, executveis, dll's, etc. (designados componentes em UML) Um pacote lgico pode atravessar vrios ficheiros Diagramas de pacotes lgicos utilizadas para modelar a arquitectura lgica de um sistema de software (organizao em mdulos lgicos e especificao de interfaces e dependncias entre mdulos)
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

152

Contedo de um pacote

Uma vez que representa um agrupamento, um pacote em geral dono de diversos elementos: classes, interfaces, componentes, ns, colaboraes, casos de uso, diagramas, e at outros pacotes Esses elementos podem ser indicados no interior do pacote, na forma de uma lista de nomes ou diagrama
Client + OrderForm + TrackingForm - Order Client + OrderForm - Order + TrackingForm

Um pacote forma um espao de nomes


classe Order do pacote Client designada Client::Order
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

153

Visibilidade dos elementos contidos num pacote

Pode-se indicar a visibilidade dos elementos:


+ (pblico) : visvel por todos que importam ou acedem ao pacote (nomes sem :: no 1 caso, com :: no 2 caso) # (protegido): visvel s pelos pacotes-filhos (por relao de generalizao - ver adiante) - (privado): visvel s por outros elementos do pacote

Os elementos pblicos de um pacote so chamados tambm os elementos exportados pelo pacote

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

154

Dependncias entre pacotes

Dependncia simples: uma alterao do pacote de destino afecta o pacote de origem (dependente) (informao til para controlo de alteraes) Dependncia com esteretipo access: o pacote de origem (dependente) acede a elementos exportados pelo pacote de destino (precisa de :: nos nomes)

Dependncia com esteretipo import: o pacote de origem (dependente) importa os elementos exportados pelo pacote de destino (no precisa de :: nos nomes)
Client + OrderForm + TrackingForm - Order GUI + Window + Form # EventHandler
155

import
UML Unified Modeling Language

Ademar Aguiar, Gabriel David, Joo Pascoal Faria

Generalizao de pacotes

Usada para especificar famlias de pacotes relacionados por herana


GUI + Window + Form # EventHandler

herda sem alterao (default) substitui (overrides) o elemento Form de GUI adicionado herda os elementos pblicos e protegidos de GUI
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

WindowsGUI + GUI::Window + Form # GUI::EventHandler +VBForm

MacGUI

156

Esteretipos em pacotes

system - pacote que representa o sistema completo que est a ser modelado (incluindo todos os modelos e elementos dos modelos) subsystem - pacote que representa uma parte independente de sistema completo que est a ser modelado; corresponde normalmente a um corte "vertical" facade (fachada) - pacote que constitui uma vista sobre outro pacote (no acrescenta funcionalidades, apenas apresenta de forma diferente)

framework (infra-estrutura aplicacional) - pacote que representa um conjunto de classes abstractas e concretas concebido para ser estendido, implementando a funcionalidade tpica de um determinado domnio de aplicao
stub - pacote que serve como proxy para o contedo pblico de outro pacote layer - pacote que representa uma camada horizontal de um sistema

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

157

Composio de pacotes (1)

Sub-pacotes podem ser indicados dentro do pacote-dono ou com relao de composio


system Retail Enterprise System

subsystem Customer Service subsystem

subsystem In Store Management subsystem

subsystem Warehouse Management subsystem

Neste exemplo segue-se uma diviso vertical, por subsistemas!


UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

158

Composio de pacotes (2)


system Retail Enterprise System layer Retail Enterprise System - GUI
Graphical User Interface

layer Retail Enterprise System - BL

Business Logic

layer Retail Enterprise System - DB

Database

Neste exemplo segue-se uma diviso horizontal, por camadas!


UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

159

Biblioteca: diviso em reas funcionais

<<subsystem>> Relao com Clientes (Leitores e Scios)

<<subsystem>>

Relao com Fornecedores

<<subsystem>> Gesto de Recursos (Publicaes)

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

160

Biblioteca: diviso em camadas tcnicas


<<layer>> Interface com o Utilizador

<<layer>> Lgica de Negcio

<<layer>>
Base de Dados

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

161

Biblioteca: diviso em camadas tcnicas e reas funcionais


IU - Clientes IU - Recursos

Lgica de Negcio Clientes


(from Lgica de Negcio)

Lgica de Negcio Recursos


(from Lgica de Negcio)

Base de Dados Clientes

Base de Dados Recursos

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

162

UML - Diagramas de Actividades (activity diagrams)

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

163

Objectivo

Um diagrama de actividades decompe uma actividade em sub-actividades (actividades de mais baixo nvel), podendo chegar a aces atmicas, com fluxo de controlo sequencial ou concorrente entre sub-actividades
Opcionalmente, podem-se definir as unidades organizacionais, entidades ou objectos responsveis pela execuo de aces ou actividades Opcionalmente, podem-se indicar fluxos de objectos - objectos que so entrada ou sada de sub-actividades Pode-se usar toda a notao dos diagramas de estados

Um diagrama de actividades essencialmente um fluxograma com concorrncia

A actividade que est a ser decomposta pode ser:


Um caso de utilizao Uma operao de uma classe Um grupo de casos de utilizao relacionados entre si Uma parte de uma actividade de mais alto nvel
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

164

Tipos de estados

Estado de espera: a sada causada por eventos


Pode ter actividade e aces associadas Transies de sada tm eventos e possivelmente condies e aces

Estado

Estado de aco: estado de execuo de uma aco, cuja concluso determina a sada do estado
Aco: operao atmica, instantnea, que no pode ser interrompida Transies de sada no tm eventos, mas podem ter condies e aces

aco

Estado de (sub)actividade: estado de execuo de uma (sub)actividade, cuja concluso determina a sada do estado
(Sub)Actividade: operao no atmica, possivelmente detalhada noutro diagrama (com cone), potencialmente demorada, que pode ser interrompida Transies de sada no tm eventos, mas podem ter condies e aces

activ.

Deciso: estado de passagem em que so testadas condies


As condies aparecem nas transies de sada No um estado verdadeiro, mas uma ramificao numa transio

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

165

Exemplo: Preparar bebida


Procurar Bebida barra de sincronizao (separao) [h caf] [h cola] deciso e ramificao [no h caf] [no h cola]

Pr Caf no Filtro

Pr gua no Reservatrio

Pr Chvenas

Pr Filtro na Maquina

Buscar latas de cola

barra de sincronizao (fuso)

Ligar Mquina

envio de sinal

/send ligar cafeteira estado de espera (cantos arredondados) Esperar que aquea luz desliga-se transio disparada por recepo de sinal Deitar caf subactividade (lados arredondados) Beber

UML Unified Modeling Language

Ademar Aguiar, Gabriel David, Joo Pascoal Faria

166

Notao alternativa para envio e recepo de sinais

Ligar Mquina Transio com aco de envio de sinal ligar cafeteira cafeteira opcional

Esperar que aquea


Transio causada por evento de recepo de sinal luz desliga-se Deitar caf

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

167

Pistas de responsabilidade (swimlanes)

Um diagrama de actividades pode ser dividido em pistas de responsabilidade (swimlanes), separadas por linhas contnuas Cada pista encabeada pelo nome da unidade organizacional, entidade ou objecto responsvel pelas aces e actividades a localizadas Cada aco ou actividade localizada numa nica pista, mas uma transio pode atravessar vrias pistas til para modelar fluxos de trabalho relativos a processos de negcio

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

168

Fluxos de objectos

Um objecto pode ser entrada (para consulta) ou sada (para criao, modificao ou destruio) de uma aco
indica-se por uma seta a trao interrompido (seta de dependncia) entre a aco e o objecto, no sentido do fluxo

cria, modifica ou destri


aco 1

obj1:C1

consulta
aco 2

Quando uma aco tem como sada um objecto que entrada para a aco seguinte, desnecessrio indicar o fluxo de controlo (a transio), basta o fluxo de/para objectos (tipo DFD)
aco 1

obj1:C1

aco 2

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

169

Exemplo: Processo de encomenda


Cliente Faz encomenda Vendas Armazm Regista encomenda

e: Encomenda [pendente]

Despacha encomenda

Emite factura

e: Encomenda [despachada]

Paga factura

f: Factura [pendente]

Estado de objecto

f: Factura [paga]

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

170

Modelao de processos de negcio


Processo de negcio actividade estereotipada Processo pode ter sub-diagrama encaixado


Requisitar Publicao Levantar Devolver

Dependncias com esteretipos "supply", "controls", ..., entre processos

Processos transformam objectos de entrada, produzem objectos de sada, usam recursos e pretendem atingir "goals"
Ver "Business Modeling with UML: Business Patterns at Work", de Hans-Erik Eriksson UML e Magnus Penker, Wiley & Sons, 2000 Unified Modeling Language
Ademar Aguiar, Gabriel David, Joo Pascoal Faria

171

Caso de estudo: Biblioteca

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

172

Diagrama de actividades relativo ao caso de utilizao de negcio "Requisitar publicao"


requisitante : Leitor a biblioteca : Biblioteca

Vem requisitar

Verifica disponibilidade [ indisponvel ] [ espera ] [ disponvel ]

[ desiste ]

Coloca em lista de espera

: requisio [espera disponibilidade]

Aguarda disponibilidade
disponvel

Vem levantar

Avisa o requisitante

: requisio [espera levantamento]

Empresta a publicao Recebe a publicao Consulta a publicao Devolve a publicao

: requisio [espera devoluo]

Recolhe a publicao

: requisio [finalizada]

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

173

Exerccios

Para um caso prtico:


Detalhar os casos de utilizao do negcio atravs de diagramas de actividades

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

174

UML - Diagramas de Sequncia

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

175

Objectivo

Um diagrama de sequncia mostra uma interaco, isto , uma sequncia de mensagens trocadas entre vrios objectos num determinado contexto (caso de utilizao, operao, etc.) Enfatiza a comunicao e passagem de controlo entre objectos ao longo do tempo til para descrever uma sequncia particular de funcionamento, mas no muitas sequncias alternativas e ciclos nem aces realizadas por um objecto que no envolvem comunicao com outros objectos

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

176

Objectos e linhas de vida

Cada objecto participante representado por uma caixa em cima duma linha vertical a trao interrompido (linha de vida) Podem aparecer actores (objectos externos ao sistema), normalmente a iniciar interaces O tempo cresce de cima para baixo
objecto1:Classe1
mensagem

objecto2:

:Classe3

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

177

Mensagens

Uma mensagem uma comunicao entre objectos (emissor e receptor) que veicula informao na expectativa de provocar uma resposta (aco ou actividade)
Uma aco de um objecto capaz de provocar uma resposta noutro objecto pode ser modelada como uma mensagem do primeiro para o segundo objecto

Uma mensagem representada por uma seta horizontal, do emissor para o receptor, com o nome e possveis argumentos Tipos de mensagens
sncrona - o emissor fica parado espera de resposta

retorno de mensagem sncrona

corresponde tipicamente a chamada de operao/procedimento no receptor desnecessrio indicar quando se usam barras de activao (ver adiante)

assncrona - o emissor no fica parado espera de resposta simples ou indiferenciada - no se decide se sncrona, de retorno ou assncrona
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

corresponde tipicamente a envio de sinal entre dois objectos concorrentes

usadas normalmente na modelao de interaces na fronteira do sistema (entre actores e o sistema representado por um ou mais objectos)
178

Criao e destruio de objectos

Criao de objecto representada por mensagem dirigida prpria caixa que representa o objecto (em vez de ser dirigida linha de vida)
Mensagem de criao pode ter esteretipo create

ob1:C1

Destruio de objecto representada por um X no fim da linha de vida do objecto


Mensagem de destruio pode ter esteretipo destroy Pode ocorrer na recepo de mensagem ou no retorno de chamada Objecto pode auto destruir-se

ob1:C1

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

179

Mensagens condicionais, iteradas e com retorno

O valor de retorno de uma mensagem sncrona pode ser indicado na chamada, com atribuio :=, ou na mensagem de retorno
Exemplo: ret := msg(args) Nome ret ser usado em mensagens e condies a seguir Tambm se pode escrever ret na mensagem de retorno

Uma mensagem condicional indicada por uma condio de guarda entre parntesis rectos [ ]
Exemplo: [x<0] invert(x,color) A mensagem s enviada se a condio se verificar Condies permitem mostrar vrias sequncias alternativas num nico diagrama

Uma mensagem iterada indicada com asterisco *, seguido ou no de uma frmula de iterao
Exemplo: *[i:=1..n] update(i)

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

180

Barra de activao

Uma barra de activao mostra o perodo de tempo durante o qual um objecto est a executar uma aco, quer directamente quer indirectamente atravs de um procedimento chamado
inclui situao em que est espera de retorno de uma chamada sncrona no inclui situao em que um processo est adormecido espera de receber uma mensagem assncrona que o acorde

Em termos de processos, significa que o objecto tem um processo ou thread activo associado A sua indicao opcional Retorno de chamada implcito no fim da barra de activao

Chamadas recursivas provocam barras empilhadas


UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

181

Exemplo: Fazer chamada telefnica


quem chama: Pessoa :Sistema telefnico quem chamado: Pessoa levanta auscultador d sinal de marcar marca (1 dgito) termina sinal de marcar marca (2 dgito) ... marca (ltimo dgito) d sinal de chamada pra sinal de chamada nesta altura decorre a conversao d sinal de conexo terminada poisa auscultador
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

{b-a < 10 seg.}

a b

marca temporal restrio temporal

toca o telefone levanta auscultador pra de tocar

poisa auscultador mensagem simples


182

Exemplo: Tratar pedido de stock


:Janela de Seleco de Pedidos tratar()

:Pedido

:Linha de Pedido

:Item de Stock
Quantidade pedida

* tratar() e:=existe?(q)
Para cada linha do pedido

[e=sim"]retirar(q) b:=baixo?() [b=sim] criar() [e=nao] criar()

Para repor stock

e2:Encomenda

e1:Encomenda

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

Para poder satisfazer pedido

criao de objecto
183

Exemplo: Executar transaco com subtransaces concorrentes


e executar

criar

t: Transaco

criar criar
Adormecida espera de sinal de sub-transaco

s1: Subtransaco s2: Subtransaco

sucesso restam subtransaces? sucesso restam subtransaces? auto-destruio

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

184

Bifurcao e fuso de linhas de vida


:Utilizador
introduz carto introduz PIN selecciona opo de levantamento selecciona montante entrega dinheiro entrega talo avisa saldo insuficiente entrega carto
fuses sincronizadas Usar em vez de ou em combinao com mensagens condicionais
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

: Multibanco

:SIBS

solicita transaco

bifurcaes sincronizadas

sucesso

saldo insuficiente

185

Relao com outros diagramas

Relao com diagramas de colaborao


Diagramas de sequncia e de colaborao colectivamente designados diagrama de interaco Diagrama de colaborao = diagrama de objectos + diagrama de sequncia

Relao com diagramas de casos de utilizao


A um caso de utilizao podem corresponder vrios diagramas de sequncia, para descrever sequncias normais e sequncias excepcionais de funcionamento Inicialmente, o sistema pode ser representado por um nico objecto; depois de conhecida a sua estrutura interna, podem-se representar objectos internos ao sistema

Relao com diagramas de estados


Enquanto que um diagrama de interaco mostra um comportamento possvel de um conjunto de objectos, com passagem de controlo entre objectos, um diagrama de estados mostra todos os comportamentos possveis de um nico objecto, com passagem de controlo entre estados
Envio e recepo de mensagens so aces e eventos nos diagramas de estados Intervalo de tempo entre duas mensagens um estado no diagrama de estados

Relao com diagramas de actividades


Adequados para mostrar aces realizadas por um objecto que no envolvem comunicao com outros objectos Com "swimlanes", permitem para mostrar sequncias alternativas e ciclos envolvendo vrios objectos

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

186

Caso de estudo (biblioteca): diagrama de sequncia relativo ao caso de utilizao "Emprstimo"


: Scio : Funcionrio

: SIB

Pede publicao emprestada Identifica publicao Mostra restantes dados da publicao Pede carto de scio Mostra carto de scio Identifica scio Mostra restantes dados do scio Confirma dados Imprime requisio Entrega requisio para assinar Devolve requisio assinada Empresta publicao Informa prazo para devoluo

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

187

Exerccios

Para um caso prtico:


Descrever sequncias normais e excepcionais de funcionamento dos casos de utilizao do negcio

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

188

Outros exerccios

Elaborar diagramas de sequncia relativamente aos seguintes casos de utilizao:


Levantamento de dinheiro num terminal multibanco
Sequncia normal Sequncia excepcional no caso do saldo ser insuficiente Viso simplificada apenas com utilizador e sistema Viso detalhada envolvendo o SIBS (Servios Interbancrios), o banco emissor do carto e a conta envolvida

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

189

UML Diagramas de Estados (Statechart Diagrams)

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

190

Introduo

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

191

Objectivo

Um diagrama de estados especifica uma mquina de estados, com estados (duradoiros e em nmero finito) e transies entre estados (instantneas) causadas por eventos (instantneos) Pode tambm especificar as aces (instantneas) e actividades (duradoiras) realizadas em resposta a eventos ou durante a permanncia em estados, respectivamente Usado normalmente para modelar o ciclo de vida dos objectos de uma classe (objecto visto como mquina de estados) Em geral, serve para modelar a dinmica de um sistema ou objecto cujo estado evolui por saltos (transies instantneas) em resposta a eventos, com um nmero finito de estados
(de sistema, objecto, etc.)

estado

evento

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

tempo
192

Comportamento e ciclo de vida de objectos ou sistemas reactivos (1)

Um diagrama de estados til para modelar o comportamento e o ciclo de vida de um objecto ou sistema reactivo

Objecto/sistema reactivo: funciona por resposta (reaco) a estmulos (eventos)


Comportamento reactivo comportamento invocvel (operaes) Sistema reactivo sistema transformacional (tipo filtro Unix)

Sistemas de interaco com o utilizador (com formulrios, botes, etc.) so tipicamente reactivos
Sistemas de tempo real (ex: semforo) podem ser vistos como sistemas reactivos que reagem a eventos temporais (timeout, ...) Sistemas reactivos geralmente tm memria - um estado interno que acumula o efeito dos estmulos recebidos no passado e afecta a resposta a estmulos futuros

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

193

Comportamento e ciclo de vida de objectos ou sistemas reactivos (2)

Ciclo de vida de um objecto/sistema: as sequncias de estados por que pode passar durante a sua vida em resposta a eventos, em conjunto com as respostas a esses eventos, ou seja:
os estados possveis (exemplo - estado civil: solteiro, casado, ...) as transies de estado possveis (exemplo: pode passar de solteiro para casado, mas no o contrrio) os eventos que causam essas transies (exemplo: o casamento implica a passagem ao estado de casado) as aces do objecto em resposta a esses eventos (ex: despedida de solteiro)

Objecto como mquina de estados Objectos da mesma classe tm o mesmo ciclo de vida, pelo que basta construir um diagrama de estados por classe relevante
Interaces entre objectos aparecem pouco explcitas, como trocas de mensagens
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

194

Relao com outros diagramas dinmicos

Diagramas de estados focam o fluxo (passagem) de controlo de estado para estado num objecto, mostrando todas as sequncias possveis de funcionamento de um nico objecto
Bom para especificao Comunicao entre objectos do mesmo sistema aparece de forma pouco explcita, atravs de eventos gerados (como aces) na mquina de estados de um objecto que so testados (como eventos) na mquina de estados doutro objecto

Diagramas de interaco (sequncia ou colaborao) focam o fluxo (passagem) de controlo de objecto para objecto numa sequncia particular de funcionamento de um sistema
Comunicao entre objectos aparece de forma explcita Bom para ilustrao mas mau para especificao

Diagramas de actividades focam o fluxo de controlo de actividade para actividade numa actividade de mais alto nvel (operao, caso de utilizao, etc.) de um objecto ou sistema
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

195

Notao e conceitos bsicos

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

196

Notao bsica
Estado 1 do / actividade entry / aco evento(parmetros) [condio] / aco Estado 2

exit / aco
evento / aco Sequncia de mudana de estado:
- Ocorre o evento associado transio e a condio de guarda verdadeira - interrompida a actividade associada ao estado de origem, se no tinha j terminado - executada a aco sada do estado de origem - executada a aco associada transio - executada a aco entrada do estado de destino - iniciada a actividade associada ao estado de destino
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

transio

197

Estados

Um estado uma condio ou situao na vida de um objecto, durante a qual o objecto satisfaz alguma condio, realiza alguma actividade ou espera por algum evento
Exemplo (relativamente ao estado civil de uma pessoa): solteira, casada, ...

Escolha dos estados e relao com atributos e ligaes:


Foi dito anteriormente que o estado de um objecto dado pelos valores de atributos e ligaes com outros objectos que mantm num dado momento Essa definio conduz, em geral, a demasiados estados Ora, no diagrama de estados, interessa apenas distinguir estados que apresentam diferentes respostas a eventos Assim, os estados que interessa considerar aqui correspondem, em geral, a conjuntos de valores de atributos e ligaes (possivelmente expressos por condies), e ignoram-se atributos e ligaes irrelevantes para o comportamento do objecto

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

198

Eventos

Um evento uma ocorrncia significativa que tem uma localizao no tempo (instante de tempo do evento) e no espao No contexto de uma mquina de estados, um evento pode ter como resposta uma transio (mudana de estado) e/ou uma aco Os eventos so instantneos
O que interessa que se lhe possa atribuir um instante de tempo de ocorrncia

Os eventos podem ser de vrios tipos:


Sinais - eventos simblicos sinalizados explicitamente Chamadas - invocao de operaes (porque no tambm o retorno?) Eventos temporais - passagem de tempo ou ocorrncia de um data-hora Eventos de mudana - uma condio tornar-se verdadeira

Os eventos podem ter parmetros [ exemplo: dgito-marcado(5) ]


UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

199

Sinais (eventos simblicos)

Sinais so modelados por classes com esteretipo signal


Parmetros (argumentos) do sinal so atributos da classe Hierarquias de sinais so modeladas como hierarquias de generalizao

Envio de sinal representado por aco send


Receptor pode ser conhecido do emissor ou no (graas a mecanismo publish/subscribe)

Sinais em linguagens de programao


Sinais assncronos, enviados imediatamente (kill, suspend, ... ) ou de forma diferida (eventos em COM+) para processos concorrentes, usando primitivas do sistema operativo Sinais sncronos, em que a gerao do evento provoca a chamada de rotinas que tratam o evento (event handlers) no mesmo processo, usando primitivas das linguagens de programao (eventos em C# e Visual Basic.NET) Excepes, representadas por objectos lanados com "throw" e apanhados com "catch", em que o lanamento da excepo provoca o retorno automtico de vrios nveis de chamadas e o salto para uma rotina de tratamento de excepes no mesmo processo
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

200

Exemplo de hierarquia de sinais


signal Event time
signal User Input Event device

signal Mouse Event position

signal Key Pressed character

signal Mouse Down

signal Mouse Up

signal Control Key Pressed

signal Printable Key Pressed

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

201

Chamadas

Um chamada representa a invocao de uma operao


Para quem faz a chamada (ponto de vista do actuador), trata-se de uma aco Para quem testa se a operao foi chamada (ponto de vista do observador), trata-se de um evento

Um chamada geralmente sncrona


Quando uma operao de um objecto invoca uma operao noutro objecto, o controlo passa para o 2 objecto

Nome do evento tem a sintaxe da invocao da operao


Exemplo: insert(record) Diferena entre evento e aco por contexto

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

202

Eventos temporais

Evento de tempo relativo:


Representa a passagem de um certo tempo desde um certo instante Notao: after(perodo-de-tempo) Por omisso, tempo conta desde a entrada no estado de origem da transio a que est associado o evento Tambm se usa a palavra chave timeout quando no se quer precisar o perodo de tempo Exemplo: after(5 segundos)

Evento de tempo abosluto:


Representa a chegada a um certo instante de tempo (data e/ou hora)

Notao: when(instante-de-tempo)
Exemplo: when(11:59PM)

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

203

Eventos de mudana

Um evento de mudana (change event) um evento que representa o facto de uma condio se tornar verdadeira

Notao: when(expresso booleana)


A expresso booleana pode ser usada para marcar um tempo absoluto (ver atrs) ou para o teste contnua de uma expresso Exemplo: when(altitude < 1000)

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

204

Transies

Uma transio uma relao entre dois estados indicando que um objecto no 1 estado realizar uma certa aco (opcional) e passar ao 2 estado quando um evento especificado ocorrer se uma condio especificada (opcional) for satisfeita Duas transies a sair do mesmo estado devem ter eventos diferentes ou condies mutuamente exclusivas, para que o diagrama de estados seja determinstico Se, num dado estado, ocorrer um evento que no corresponde a nenhuma transio, nenhuma transio disparada e o evento ignorado

Transio automtica: transio sem evento


Tem como evento implcito o fim da actividade associada ao estado de origem Se tiver uma condio, fica espera que a condio seja satisfeita
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

205

Actividades

Uma actividade uma execuo contnua (ongoing execution) no atmica numa mquina de estados
Tem durao
Pode ser interrompida Pode ter fim (termina por si s) ou no (s termina se for interrompida)

associada a estados
Inicia-se ao entrar no estado Termina por si s ou interrompida na sada do estado (causada por um evento)

Exemplo (num telefone): do / d sinal de marcar

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

206

Aces

Uma aco uma computao atmica executvel que resulta numa mudana de estado ou no retorno de um valor
A mudana de estado pode ser noutro objecto No tem durao (pelo menos no modelo) e no pode ser interrompida Ocorre em resposta a um evento Exemplo (num telefone): poisa auscultador / pra sinal de marcar Aces so associadas a transies (mais comum) ou estados

Aco entrada num estado: entry/aco


equivale a associar a aco a cada transio que entra no estado

Aco sada de um estado: exit/aco


equivale a associar a aco a cada transio que sai do estado

Aco em resposta a evento interno a um estado: evento/aco


difere de auto-transio, porque no so executadas aces sada e entrada e no interrompida a actividade associada ao estado

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

207

Exemplo: Jogo de xadrez


Estado Transio

Vez das brancas

xeque-mate paralisado

Vitria das pretas

jogada das brancas

jogada das pretas

Empate

paralisado Vez das pretas


Estado inicial (criao do objecto e incio da mquina de estados) Estado final (fim da mquina de estados e destruio do objecto)
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

Vitria das brancas

xeque-mate

208

Exemplo: Semforo
N O S E
Norte/Sul pode seguir em frente after( 30 seg )[ tem carros na pista esquerda N/S ] Norte/Sul pode virar esquerda

N O S E

after( 30 seg )[ sem carros na pista esquerda N/S ]


after( 15 seg ) after( 15 seg )

after( 30 seg )[ sem carros na pista esquerda E/O ] Este/Oeste pode virar esquerda Este/Oeste pode seguir em frente

N O E

after( 30 seg )[ tem carros na pista esquerda E/O ]

O
S

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

209

Exemplo: Menu popup


cursor deslocado / reala item do menu

boto direito em baixo / mostra menu popup Inactivo Menu visvel

boto dirteito em cima / apaga menu popup e lana aco associada ao item seleccionado

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

210

Exemplo: Porta com motor


A abrir entry/ motor para cima exit/ motor desligado acciona porta aberta Aberto

Fechado

acciona

porta fechada

acciona A fechar entry/ motor para baixo exit/ motor desligado

Como seria este diagrama com as aces associadas s transies?


UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

211

Exemplo: Telefone (fazer chamadas)


no descanso

Inactivo
levantado

no descanso

Sinal de marcar tempo mximo Tempo mximo do/toca sinal do/ toca apito
dgito(n) dgito(n) tempo mximo

Discando
Ligando

Sinal de ocupado
do/sinal ocupado lento

nmero ocupado

nmero nmero vlido invlido

Mensagem gravada do/ passa mensagem

Sinal de interrompido
do/ sinal ocupado rpido

ramal ocupado

do/ busca ligao encaminhada do/ toca campanha resposta/ liga linha

Tocando

no descanso/ desliga linha

Ligado

mensagem dada

chamado desliga/desliga linha

Desligado
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

212

Subestados sequenciais

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

213

Exemplo: Estado civil


subestados sequenciais
Nascimento

Solteiro

Vivo

Divorciado

Casamento

Falecimento do cnjuge

estado composto (ou super-estado ou contorno)


Divrcio

Casado

Separao judicial

Separado judicialmente

Equivale a vrias transies, com origem em cada um dos subestados! Evita exploso combinatria de transies!

Falecimento

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

214

Exemplo: Transmisso automtica


carrega R
Transio dirigida a (subestado inicial de) estado composto Estado composto

Ponto morto carrega N


carrega F carrega N

Marcha atrs

Frente subida Primeira


paragem

subida Segunda Terceira reduo

reduo

Transio com origem em superestado e dirigida a sub-estado

Subestados sequenciais de Frente


UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

215

Subestados sequenciais

Vrios estados de um diagrama (e transies entre esses estados) podem ser agrupados num nico estado composto

Os primeiros estados passam a chamar-se subestados sequenciais


Subestados por estarem encaixados dentro doutro Sequenciais por no ser possvel estar em dois estados simultaneamente

Estado composto pode ser visto simplesmente como um contorno

Estados e transies agrupados no estado composto formam um diagrama de estados encaixado, podendo ter estado inicial e final
Tambm se chama a isto composio ou
Estar no estado composto estar no 1 subestado ou...ou no n-simo subestado

Tambm se chama a isto generalizao de estados


O estado composto tambm chamado um superestado Estar num subestado estar tambm no respectivo superestado

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

216

Transies com estados compostos

Podem-se definir transies com origem no estado composto


Equivale a repetir a mesma transio com origem em cada um dos subestados (excepto ). Por outras palavras, os subestados herdam a transio. Simplifica-se o diagrama porque se desenha 1 transio em vez de n transies (tantas quantos os subestados), evitando-se a exploso combinatria de transies! A transio pode ser dirigida a um subestado ou a um estado externo

Podem-se definir transies com destino ao estado composto


Equivale a definir a mesma transio com destino ao respectivo estado inicial (ou melhor, ao estado apontado por ), que tem de estar definido

Vantagem comum: abstraco de detalhes do estado composto


O estado composto pode at ser detalhado separadamente

No entanto, tambm se podem definir transies que atravessam o estado composto, com origem ou destino em subestados
O estado inicial apenas um estado inicial por omisso
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

217

Propriedades de estados compostos

Um estado composto pode ter todas as propriedades dos estados simples, mas normalmente s tem o nome, que mesmo assim opcional

Um estado composto pode ter aces entrada e sada


Ao entrar no estado composto, executa primeira as aces entrada no estado composto, e depois as aces entrada no subestado de destino Ao sair do estado composto, executa primeira as aces sada do subestado de origem, e depois as aces sada do estado composto

A actividade do estado composto detalhada pelos subestados e transies entre eles, isto , pelo diagrama de estados encaixado
Em alternativa, pode-se dar um nome actividade do estado composto (com do/...) , e detalha-se essa actividade separadamente (com o mesmo diagrama de estados encaixado)
As aces entrada e sada so representadas no 1 diagrama Uma actividade pode ser detalhada por um diagrama de estados ou actividade

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

218

Subestados concorrentes

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

219

Subestados concorrentes

Um estado (estado composto) pode ser dividido em duas ou mais regies concorrentes, separadas por linhas a trao interrompido, representando subestados concorrentes (que , por sua vez, tm normalmente subestados sequenciais) Subestados concorrentes correspondem a aspectos do objecto (grupos de atributos e ligaes ou sub-objectos) que evoluem de forma mais ou menos independente

Dependncias entre regies podem ser expressas atravs de condies de guarda (num componente testar o estado doutro)
Tambm se chama a isto composio e:
Estar no estado composto estar no 1 e ... e no n subestado concorrente

Notar que, a um nvel mais global, os objectos (e portanto os respectivos diagramas de estados) so concorrentes entre si

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

220

Exemplo: Concorrncia num objecto


Preparao do despertador
E

X
Subestados concorrentes de Preparao do despertador

Seleco do programa comuta(banda) sintoniza(frequncia) programa banda Seleco escolhida Seleco do escolhido da Banda Programa
Activao do alarme
Ao entrar, inicia os dois subdiagramas concorrentes

Alarme ligado

marca(hora)
Seleco da Hora hora escolhida

Sai quando terminarem os dois subdiagramas concorrentes

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

221

O mesmo exemplo sem subestados concorrentes


Preparao do despertador
sintoniza(frequncia) banda escolhida Seleco do Programa e Hora

programa escolhido

comuta(banda) Seleco da Banda e Hora marca(hora)

Seleco da Hora
marca(hora)

hora escolhida

marca(hora)
hora escolhida hora escolhida comuta(banda) Seleco da Banda banda escolhida

sintoniza(frequncia)
Seleco do Programa programa escolhido

Tem-se (quase) o produto cartesiano dos estados do diagrama anterior!


UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

222

Sincronizao: separao e fuso

Separao - quando um objecto passa a fazer vrias actividades concorrentemente (ordem irrelevante)
transio para estado com subdiagramas concorrentes activa cada um deles

Fuso - quando as actividades concorrentes tm que terminar antes de passar ao estado seguinte
subdiagramas que no estejam na fuso so automaticamente terminados

Emisso (Multibanco) do/ liberta carto pronto Preparao do/ liberta dinheiro

recolhe carto Concludo

recolhe dinheiro
223

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

Conceitos avanados

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

224

Variveis num estado

Um estado pode ter um compartimento de variveis Estas variveis so atributos da classe dona do diagrama de estados, distinguidos porque so usadas ou afectadas por aces no diagrama de estados Todos os compartimentos (nome, variveis e actividade interna) so opcionais

compartimento de variveis

compartimento de actividade interna

Typing Password
password: String = fails: Integer = 0 entry / set echo invisible exit / set echo normal do / echo typing help / display help

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

225

Transies complexas

Uma transio complexa uma transio com mltiplos estados fonte (normalmente de subdiagramas concorrentes) ou mltiplos estados de destino (normalmente de subdiagramas concorrentes) Representa uma separao e/ou fuso de controlo em/de fios de controlo concorrentes Aplicvel mesmo sem subdiagramas concorrentes Desenha-se com uma barra forte (barra de sincronizao):
Estado fonte 1 Estado destino 1

ev1
... evn Estado destino m

...
Estado fonte n

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

226

Eventos diferidos

Uma aco possvel em resposta a um evento defer, que significa guardar o evento at chegar a um estado capaz de o consumir aplicvel num par evento/aco interno a um estado Exemplo (mquina de fax):
Repouso

enviar fax

chegada de fax

A enviar fax chegada de fax/defer

A receber faz enviar fax/defer

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

227

Descrio de eventos compostos com diagramas de estados

Um evento composto corresponde a uma sequncia de eventos mais simples


O instante da ocorrncia do evento composto o instante da ocorrncia do ltimo evento da sequncia Exemplo: o evento composto introduzir nmero uma sequncia de uma ou mais ocorrncias do evento introduzir dgito, seguido de uma ocorrncia do evento enter

Um evento composto pode ser definido atravs de um diagrama de estados (mquina de estados) que funciona como um detector de eventos
Detector sequencial: a deteco do evento composto corresponde chegada a um estado final com o nome do evento Detector cclico: o evento composto sinalizado explicitamente, podendo ser lanado vrios vezes

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

228

Exemplo: Mquina de vendas (1)


Diagrama pincipal:

Inactivo

moeda ( montante ) / pe balano cancelar / devolve moedas

Recolhe dinheiro
moeda(montante) / adiciona ao balano

[item vazio]

escolhe(item)

[troco<0]

do/ testa item e calcula troco [troco=0] [troco>0]

do/ entrega(item)

do/ faz troco

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

229

Exemplo: Mquina de vendas (2)


Detalhe do evento composto escolhe(item):
dgito(n) do/ inicializa item dgito(n) limpa escolhe(item)

do/ acrescenta dgito aceita

Detalhe da actividade entrega(item):


do/ move o brao para a fila correcta do/ move o brao para do/ tira item da a coluna correcta brao brao prateleira pronto pronto

tirado

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

230

Estados histricos (history states)

Estado histrico (dentro de um estado composto) referese ao ltimo subestado em que se encontrava o estado composto til para reentrar num estado composto no subestado em que se encontrava anteriormente

No aplicvel na primeira entrada


B A interrupt H B2 estado histrico
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

B1

resume

231

Resduos de subestados (stubs)

Aplicveis quando se escondem os detalhes de um estado composto, mas h transies que o atravessam
p W E u B r F t s

C
q D

abstraco p
W

A B

s q

C D

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

232

Exemplos e exerccios

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

233

Exemplo: Rdio-despertador (a rever)


minutos horas alarme tempo off radio alarme

desligar

dormir
vol

sintonia

18:35

89.5

FM

obter o diagrama de estados


o boto dormir faz tocar durante uma hora (desligar cala-o logo) ao chegar ao instante do alarme, comea a tocar durante 1 hora (desligar s desliga durante 10 minutos)
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

234

- Diagrama principal
Desligado Rdio-despertador Interruptor radio alarme Despertador Funcionar off do/ radio activo radio Boto de volume ajusta(nvel)/alterar nvel Activo Cortado [nvel=0] ajusta(nvel)/ alterar nvel Altifalante [em Estao e Activo e (Funcionar ou Despertar ou Adormecer)] Desligado Tocar [em (Rudo ou Cortado) ou (Desligado ou Armado ou Latente)]
235

Boto de sintonia sintoniza(freq) Rudo dessintoniza Display Hora actual do/ mostra hora actual boto alarme carregado Hora despertar boto alarme do/ altera hora despertar livre Estao

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

- Subdiagrama Hora despertar


Hora despertar boto minutos carregado

Pe minutos Mostra do/ mostra boto minutos do / incrementa livre minutos despertar hora despertar mod 60 boto horas boto horas carregado livre Pe horas do/ incrementa horas despertar mod 24

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

236

- Subdiagrama Hora actual


Hora actual Mostra do/ mostra hora actual boto tempo boto tempo carregado livre

Acerta horas do/ incrementa horas mod 24

boto horas livre


boto horas carregado

Altera hora do/ mostra hora actual

boto minutos carregado Acerta minutos do/ incrementa boto minutos minutos mod 60 livre

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

237

- Subdiagrama Despertador
Despertador minuto [hora_actual = hora_despertar] Armado Despertar do/ rdio activo minuto [hora actual - hora despertar>60] desligar /desliga 60 minutos / desliga Adormecer dormir do/ rdio activo

desligar/desliga

Latente do/ incrementa 10 minutos minutos mod 60

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

238

Caso de estudo: Biblioteca

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

239

Estados de uma Publicao


consulta / incrementa contador

aquisio

Disponvel

devoluo

emprstimo

mediante requisio

Emprestada

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

240

Estados de um Scio
evento ocorre quando a condio se torna verdadeira

when(esgotado prazo da inscrio e no tem exemplares emprestados) / avisa scio

inscrio

Activo

Inactivo

renovao

desistncia

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

241

Estados de uma Requisio


requisio[ publicao indisponvel ] / coloca em lista de espera
requisio[ publicao disponvel ] / empresta exemplar Significa que ocorreu a devoluo ou aquisio de um exemplar ou que uma requisio espera de levantamento foi anulada, na condio de no existir outra requisio espera de disponibilidade mais antiga do que esta

Espera disponibilidade
publicao disponvel / avisa requisitante

Espera levantamento
esgotado prazo devoluo / avisa requisitante

desistncia

levantamento esgotado prazo levantamento / avisa requisitante

Espera devoluo devoluo Requisio Encerrada

Requisio Anulada

Prev j vrios exemplares por publicao e possibilidade de requisio ficar em lista de espera!
UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

242

Exerccios

Para um caso prtico:


Representar o ciclo de vida de um conceito do domnio do problema (documento, entidade, etc.) atravs de um diagrama de estados.

UML Unified Modeling Language Ademar Aguiar, Gabriel David, Joo Pascoal Faria

243

Das könnte Ihnen auch gefallen