Você está na página 1de 121

Modelagem de Software

Orientado a Objetos
utilizando a
Linguagem UML
Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

Contedo Programtico
princpios de O-O
mtodo, casos de uso, classes
relacionamentos, restries, interfaces,
tipos parametrizados, esteretipos,
pacotes
estados e eventos
seqncia, colaborao, atividades,
componentes, implantao

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

Bibliografia Bsica
UML Toolkit
UML in a Nutshell
Object-Oriented Software Construction
Modelagem de Objetos atravs da UML
Design Patterns: Elements of Reusable
Object-Oriented Software
Modelagem e Projeto baseados em Objetos

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

Princpios de
Orientao a Objetos

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

Sumrio
Tipos de dados abstratos
Classes e instncias
Operaes e atributos
Construo de objetos
Referncias para objetos
Pacotes de classes
Encapsulamento
Modos de visibilidade/acesso

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

Sumrio
Asseres e invariantes de classe
Tratamento de excees
Objetos compostos
Herana, sobrecarga, polimorfismo
Herana mltipla
Interfaces
Tipos parametrizados

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

Tipos de Dados Abstratos


(ADT)

Um ADT um modelo matemtico para


descrio de um tipo independente de sua
representao fsica.
Um tipo uma coleo de objetos
caracterizados atravs de funes, axiomas e
pr-condies.
Um objeto que pertence ao conjunto de
objetos descritos por um ADT dito ser uma
instncia do ADT.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

Exemplo de ADT
Pilha (Stack)

Opes de representao:
array
listas
...

Questo bsica:
Como definir formalmente uma pilha de
forma independente de sua
representao?

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

Exemplo de ADT
Primeira Parte: Tipos
Especificao ADT para pilhas

TYPES
STACK [G]

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

Exemplo de ADT
Segunda Parte: Funes

FUNCTIONS
put: STACK[G] X G --> STACK[G]
remove: STACK[G] -/-> STACK[G]
item: STACK[G] -/-> G
empty: STACK[G] --> BOOLEAN
new: STACK[G]

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

10

Exemplo de ADT
Terceira Parte: Axiomas
AXIOMS
Para todo x : G, s : STACK[G]
A1 - item ( put ( s, x ) ) = x
A2 - remove ( put ( s, x ) ) = s
A3 - empty ( new )
A4 - not empty ( put ( s, x ) )

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

11

Exemplo de ADT
Quarta Parte: Pr-condies

PRECONDITIONS
remove ( s : STACK[G] ) require not
empty(s)
item ( s : STACK[G] ) require not empty(s)

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

12

Modularizao
Construo de software orientado a
objetos a construo de um sistema
de software como uma coleo de
implementaes de ADTs
possivelmente parciais.
Um ADT corresponde a um mdulo de
um sistema de software.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

13

Classe
Uma classe um tipo abstrato de dados
equipado com uma implementao
possivelmente parcial.
A definio de uma classe inclui uma lista
de atributos e uma lista de operaes.
Um sistema de software orientado a
objetos definido por um conjunto de
classes.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

14

Instncia
Todo objeto instncia de alguma classe.
A execuo de um sistema de software
orientado a objetos corresponde a
interaes entre objetos atravs de
mensagens (chamadas de operaes).
Toda execuo iniciada em um objeto
raiz, com a chamada de uma de suas
operaes.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

15

Classe X Objeto
Um classe um elemento de
construo de software. Portanto, um
elemento definido e criado
estaticamente.
Um objeto um elemento de run-time,
isto , s existe em tempo de execuo
de um sistema de software. Portanto,
criado dinamicamente.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

16

Atributo
A definio de uma classe inclui uma lista
de atributos.
Toda instncia de uma classe contm
todos os atributos definidos pela classe.
Cada atributo tem um nome, um tipo e,
opcionalmente, um valor default.
O conjunto de valores dos atributos de
um objeto define o seu estado.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

17

Atributo

Tipos de atributos:
de instncia: h um valor especfico para
cada instncia
de classe: h um nico valor
(compartilhado) para todas as instncias

O valor de um atributo pode ser uma


constante.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

18

Operao
A definio de uma classe inclui uma lista de
operaes que correspondem interface da
classe.
Uma operao uma funo ou
transformao que pode ser aplicada a todo e
qualquer objeto de uma classe.
Uma operao tem um nome, uma lista de
argumentos, um tipo de retorno e uma
implementao (um mtodo).

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

19

Operao
Em um sistema de software, existe
apenas uma nica ocorrncia de cada
operao de uma classe,
independentemente do nmero de
instncias da classe.
Operaes so definidas e criadas
estaticamente.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

20

Construo de Objetos
Toda classe define um ou mais operaes
especficas para a criao (iniciao) de
novos objetos, normalmente denominadas
construtores da classe.
Toda vez que um novo objeto criado, um
construtor da correspondente classe deve
ser selecionado para execuo.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

21

Referncia para Objeto

Uma referncia um valor de run-time que


pode ser void ou attached.
Quando o valor de uma referncia for attached,
a referncia identifica um nico objeto. (A
referncia est fixada em um certo objeto.)
Podem existir vrias referncias para um
mesmo objeto.
Copiar uma referncia diferente de copiar um
objeto.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

22

Pacote de Classes
Classes podem ser logicamente organizadas
em grupos denominados pacotes.
Pacotes so estrurados de forma hierrquica.
H pacotes disponibilizados em bibliotecas.
Usurios podem criar seus prprios pacotes.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

23

Encapsulamento
Processo de ocultamento de partes
internas da implementao de um objeto e
permisso de acesso ao estado do objeto
somente atravs de uma interface bem
definida.
Os atributos de um objeto so manipulados
(para leitura e escrita) somente por
operaes definidas para o objeto.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

24

Modos de
Visibilidade/Acesso

Pode-se controlar a manipulao de atributos e


operaes (membros, de forma geral)
considerando-se os escopos de classe,
subclasse e pacote, de forma combinada.
Modificadores:
private
protected
package
public

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

25

Modificador private

Um membro qualificado como private


somente acessvel a partir de
mtodos da prpria classe qual
pertence o membro.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

26

Modificador public

Um membro qualificado como public


acessvel a partir de qualquer operao
de qualquer classe,
independentemente de subclasse e de
pacote.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

27

Modificadores public e
private Exemplo
1
class Pessoa
{ private int idade;
private int altura;
public Pessoa(int i, int a) { idade = i; altura = a; }
private void cresce( ) { idade++; altura++; }
private void decresce( ) { idade++; altura--; }
public void envelhece( )
{ if (idade < 22) cresce( ) else decresce( ); }
}
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

28

Modificadores public e
private Exemplo
2
class Funcionario extends Pessoa
{ private int nivel; private int horas;
public Funcionario(int i, int a, int n, int h)
{ super(i, a); nivel = n; horas = h; }
public double salario( )
{ return ( nivel * 80 * horas) ; }
}
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

29

Modificador package

Um membro qualificado como package


acessvel a partir de qualquer
operao de qualquer classe
pertencente ao mesmo pacote que a
classe qual pertence o membro,
independentemente de subclasse.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

30

Modificador protected

Um membro qualificado como protected


acessvel a partir de qualquer
operao de qualquer classe, exceto se
a classe de acesso estiver em pacote
distinto e no for subclasse da classe
qual pertence o membro.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

31

Modificadores package e
protected
class Veiculo { Exemplo
int ano; // package1
protected int potencia; ... }
class Carro extends Veiculo
{ ... potencia++;
ano++;
... }
class Retificadora
{ ... Carro c = new Carro (...) ;
c.ano = 1980;
c.potencia = 100; ... }
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

32

Modificadores package e
protected
Exemplo
2
package Basico; //
arquivo 1
class Veiculo { int ano; // package
protected int potencia; ... }
package Extensao; // arquivo 2
class Carro extends Veiculo
{ ... potencia++; ... } // sem acesso a ano
class Retificadora
{ ... Carro c = new Carro (...) ; ... }
// sem acesso a ano e potencia
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

33

Asseres
P {A} Q
A execuo de A, iniciando em um
estado no qual P verdadeira, terminar
em um estado no qual Q verdadeira.
P : pr-condio
Q : ps-condio
A : uma operao (ou parte de)
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

34

Asseres - Exemplos
{x >= 9} x := x + 5 {x >= 13}
{x >= 0} y := sqrt(x) { true }
{false} y := x * x { y >= 0 }
{not full} put(x : G) { not empty AND
item = x AND count = old count + 1 }

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

35

Invariante de Classe
Uma invariante uma propriedade
inaltervel durante todo o ciclo de vida
de um objeto.
Exemplos:

0 <= count
count <= capacity
empty = (count = 0)

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

36

Tratamento de Exceo

Excees so acontencimentos fora do


comportamento normal ou desejado para um
programa. O gerenciamento de exees
permite o controle sobre erros e
possivelmente uma soluo de contorno.
Exemplos: entrada em formato invlido,
arquivo corrompido, conexo de rede no
disponvel, ndice invlido para vetor, ...

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

37

Exemplo de cdigo frgil


class TestNullP
{ static String s = null;
public static void main(String args[ ])
{
char c1 = s.charAt(2);
// java.lang.NullPointerException (programa pra)
s = new String("Curitiba");
char c2 = s.charAt(2);
// c2 = 'r'
char c3 = s.charAt(8);
// java.lang.StringIndexOutOfBoundsException (programa pra)
}
} // fim

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

38

Exemplo de cdigo frgil


class TestNullP
{ static String s = null;
public static void main(String args[ ])
{
char c1 = s.charAt(2);
// java.lang.NullPointerException (programa pra)
s = new String("Curitiba");
char c2 = s.charAt(2);
// c2 = 'r'
char c3 = s.charAt(8);
// java.lang.StringIndexOutOfBoundsException (programa pra)
}
} // fim

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

39

Exemplo modificado com


ifs

class TestNullP
{ static String s = null;
public static void main(String args[ ])
{
if (s != null && s.length( ) > 2)
char c1 = s.charAt(2);
s = new String("Curitiba");
if (s != null && s.length( ) > 2)
char c2 = s.charAt(2);
// c2 = 'r'
if (s != null && s.length( ) > 8)
char c3 = s.charAt(8);
} } // fim

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

40

Exemplo modificado com


tratamento de excees

class TestNullP
{ static String s = null;
public static void main(String args[])
{
try
{
char c1 = s.charAt(2);
}
catch (Exception e)
{
System.out.println("Exceo " + e);
// Exceo: java.lang.NullPointerException
}
// continua

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

41

Exemplo modificado com


tratamento de excees
(cont.)

s = new String("Curitiba");

try
{
char c2 = s.charAt(2);
// c2 = 'r'
}
catch (Exception e)
{
System.out.println("Exceo " + e);
}
// continua

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

42

Exemplo modificado com


tratamento de excees
(cont.)

try
{
char c3 = s.charAt(8);
}
catch (Exception e)
{
System.out.println("Exceo " + e);
// Exceo: java.lang.StringIndexOutOfBoundsException
}
}
} // fim

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

43

Hierarquia de excees
Throwable

Error

Exception

...
RuntimeException

IOException

...

...

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

...
44

A clusula throws
class TestNullP
{ static String s = null;
static void work( ) throws Throwable
{
try
{ char c1 = s.charAt(2); }
catch (Exception e)
{ System.out.println("Exceo"); throw(e); }
catch (Error e)
{ System.out.println("Erro"); throw(e); }
finally
{ System.out.println("Adios, amigos");}
}
// continua

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

45

A clusula throws (cont.)


public static void main(String args[ ])
{
try
{ work( ); }
catch(Throwable t)
{ System.out.println("Erro ou Exceo " + t); }
finally
{ System.out.println("Adios, amigos II");}
}
} // fim

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

46

Definindo suas prprias


excees
class ProblemaEmWork extends Exception
{
public ProblemaEmWork( ) { }
public ProblemaEmWork(String msg) { super(msg); }
}

// continua
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

47

Definindo suas prprias


excees (cont.)

class TestNullP
{ static String s = null;
static void work( ) throws ProblemaEmWork
{
try
{ char c1 = s.charAt(2); }
catch (Exception e)
{ throw(new ProblemaEmWork("Exceo em work " + e)); }
catch (Error e)
{ throw(new ProblemaEmWork("Erro em work " + e)); }
finally
{ System.out.println("Adios, amigos");}
}
// continua

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

48

Definindo suas prprias


excees (cont.)
public static void main(String args[ ])
{
try
{ work(); }
catch(ProblemaEmWork p)
{ System.out.println(p); }
finally
{ System.out.println("Adios, amigos II");}
}
} // fim

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

49

Objeto Composto

Um objeto pode conter uma referncia


para outro objeto, recursivamente.
Nesse caso, o objeto dito ser
composto ou complexo.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

50

Generalizao
Relacionamento entre uma classe e uma
ou mais verses refinadas ou
especializadas da classe.
Especializao: relacionamento inverso
Superclasse: verso mais abstrata de
outra classe, a subclasse
Subclasse: verso mais refinada de outra
classe, a superclasse

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

51

Herana
Mecanismo baseado em objetos que
permite que as classes compartilhem
atributos e operaes baseados em um
relacionamento, geralmente
generalizao.
Uma subclasse herda atributos e
operaes da superclasse.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

52

Classes Abstratas e
Concretas

Classe abstrata: classe que no pode ter


instncias diretas, mas cujos descendentes
sim; organizam caractersticas comuns a
diversas classes; mecanismo para reutilizar
cdigo; pode definir operaes abstratas
(sem um correspondente mtodo)
Classe concreta: classe que pode ter
instncias diretas; no pode definir
operaes abstratas

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

53

Interface
Um classe totalmente abstrata dita
ser uma interface.
A definio de uma interface no inclui
qualquer implementao.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

54

Interfaces
- definio bsica

Uma interface possui um nome, e define apenas


mtodos abstratos e constantes (descreve uma
abstrao, normalmente um comportamento)
Uma interface no pode ser instanciada
Uma interface pode ser implementada por uma ou
mais classes
Cada classe pode estender somente uma classe,
mas pode implementar diversas interfaces
(alternativa para a falta de herana mltipla em Java)

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

55

Interfaces
- definio bsica

Uma classe que implementa uma interface deve


implementar todos os mtodos abstratos definidos
pela interface (no pode deixar qualquer
implementao para suas subclasses)
Uma interface pode estender uma ou mais interfaces
Se uma classe herda duas constantes de duas
interfaces distintas mas com o mesmo nome, deve
fazer referncia a cada constante precedendo-a com
o nome da interface e um ponto

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

56

Interfaces
- como usar - exemplo 1 public interface F
{ int k = 10; // public, static, final (constante)
int f ( ); // public, abstract
}
class C implements F
{
public int f ( ) { return k; } // tem que ser public
}
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

57

Interfaces
- como usar - exemplo 2 public interface F
{ int k = 10;
int f( );
}
interface G extends F
// G e seus membros tem visibilidade package
{ void g( ); }
class C implements G
{ public
int f( ) { return k; }
public
void g( ) {}
}

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

58

Interfaces
- como usar - exemplo 3 public interface F
{ int k = 10; int f( ); }
interface H
{ int k = 10; int h( ); }
interface G extends F, H
{ void g( ); }
class C implements G
{ public
int f( ) { return F.k;}
public
int h( ) { return H.k;}
public
void g() {}
}
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

59

Interfaces
- como usar - exemplo 4 public interface F
{ int k = 10; int f( ); }
interface H
{ int k = 10; int h( ); }
class D
{}
class E extends D implements F, H
{ public
int f( ) { return F.k;}
public
int h( ) { return H.k;}
}
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

60

Sobrecarga

Atributos e operaes podem ser


redefinidos (sobrecarregados) por
subclasses.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

61

Sobrecarga para extenso

A nova operao igual operao


herdada, exceto pelo fato de
acrescentar alguns detalhes de
comportamento, normalmente afetando
novos atributos da subclasse.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

62

Sobrecarga para restrio


A nova operao restringe o protocolo
(assinatura da operao), podendo
reduzir os tipos de argumentos.
A operao herdada fica fechada
(restrita) dentro de cada subclasse
especfica.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

63

Sobrecarga para
otimizao
O novo mtodo tem o mesmo protocolo
externo e apresenta o mesmos
resultados
A implementao do novo mtodo
(algoritmo utilizado) pode ser
completamente diferente

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

64

Sobrecarga por
convenincia
Emprego adhoc de herana para reutilizar
classes.
Uma nova classe tornada subclasse de
uma classe existente e substitui os mtodos
inconvenientes.
Semanticamente errado e conduz a
problemas de manuteno; recomenda-se
criar uma terceira classe (superclasse das
demais)

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

65

Polimorfismo

Assume muitas formas


A propriedade segundo a qual uma operao
pode comportar-se diferentemente em classes
diferentes.
A subclasse redefine a implementao de uma
operao herdada da superclasse.
Onde se espera uma instncia de um certa
classe pode aparecer uma instncia de
qualquer subclasse daquela classe.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

66

Herana Mltipla
Uma classe possui mais de uma
subclasse e herda caractersticas de
todos os seus ancestrais.
Maior capacidade de especificao de
classes.
Maior oportunidade de reutilizao.
Perda em simplicidade conceitual e de
implementao.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

67

Tipo Parametrizado
Um tipo pode receber como parmetro
uma lista de tipos.
Exemplos:

pilha de inteiros
pilha de reais
pilha de pessoas
...
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

68

Modelagem Orientada a
Objetos
Use-Case Modeling

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

69

Objetivos bsicos de um
modelo use-case
Descrever o que um novo sistema deve
fazer
Descrever o que um sistema existente
faz
Formalizar os requisitos de um sistema,
normalmente obtidos atravs de
discusses entre os desenvolvedores e
os clientes (usurios) do sistema.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

70

Componentes de um usecase
um conjunto de use cases
Um use case representa uma funcionalidade do
sistema, do ponto de vista do usurio do
sistema (viso externa).

um conjunto de actors
Um actor representa um tipo de usurio do
sistema.
Um actor deve estar associado a pelo menos
um use case

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

71

O componente use case


Um use case representa uma
funcionalidade completa (mas pode
haver dependncias entre os diversos
use-cases de um sistema)
Um use case sempre faz algo solicitado
por um actor e retorna alguma coisa
para esse actor

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

72

O componente actor
Um actor uma entidade externa ao
sistema que interage com o sistema.
Um actor normalmente um ser
humano, mas pode ser outro sistema
ou alguma espcie de hardware que
interage com o sistema.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

73

Outros objetivos de usecase


Fornecer uma base
para a realizao de testes

do sistema.
Prover uma descrio clara, consistente e
simples do que o sistema dever fazer, facilitando
a discusso entre o desenvolvedor e o cliente do
sistema e ainda facilitando a comunicao dentro
da equipe de desenvolvedores
Ser a base para definio das classes do sistema
e para definio da dinmica do sistema.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

74

Exemplo de diagrama usecase


Sistema
de Seguros
Cliente

Assinatura de uma aplice de


seguro

Levantamento de estatsticas de
vendas

Corretor de
seguros

Levantamento de estatsticas sobre


clientes

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

75

Mais sobre actors


Um actor uma classe no diagrama em
UML
Pode-se construir uma hierarquia de
actors. Exemplo: Um cliente pode ser
um cliente comum ou um cliente
especial. Exemplo: Um cliente pode ser
um cliente de telefone ou um cliente de
gua.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

76

Mais sobre use-cases

Um use-case pode ser estendido com outro(s)


use case(s). Exemplo: Os use cases
"Assinatura de seguro de carro" e "Assinatura
de seguro de vida" so extenses do use case
"Assinatura de aplice de seguro".
Um use-case pode utilizar outro(s) use case(s).
Exemplo: O use case "Assinatura do contrato
de compra de um automvel" utiliza o use case
"Assinatura de uma aplice de seguro de carro".

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

77

Modelagem Orientada a
Objetos
Relacionamentos

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

78

Contedo

Ligao entre objetos


Associao entre classes
Agregao
Multiplicidade e Papel
Atributo de ligao
Associao como uma classe
Associaes ternrias
Ordenao em associaes
Associao qualificada

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

79

Ligao
Uma conexo fsica ou conceitual entre
objetos
Exemplo: O pas Brasil tem como capital
a cidade de Braslia.
Exemplo: O funcionrio Joo trabalha na
empresa Transamrica S.A.
Exemplo: O artigo OO Solutions foi
publicado na conferencia OOPSLA99.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

80

Associao
Relacionamento entre instncias de
duas ou mais classes descrevendo um
grupo de ligaes com estrutura e
semntica comuns.
Exemplo: Um pas tem como capital uma
cidade.
Exemplo: Um funcionrio trabalha numa
empresa.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

81

Agregao
Forma especial de associao, entre o
todo e suas partes, na qual o todo
composto pelas partes
Tambm chamada de herana horizontal
Exemplo: Um artigo publicado em uma
conferncia, isto , o artigo faz parte da
conferncia (ou dos anais da conferncia).

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

82

Multiplicidade e Papel
Multiplicidade: Nmero de instncias
de uma classe que podem se relacionar
a uma nica instncia de um classe
associada (ou agregada).
Papel: nome que identifica
inequivocamente uma extremidade de
uma associao.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

83

Atributo de Ligao
Um valor de dados presente em cada ligao
(nvel de instncias) de uma associao
(nvel de classes)
Uma propriedade da ligao entre objetos, e
no dos objetos ligados, propriamente ditos
Exemplos: permisso de acesso que um
usurio possui para a um arquivo; o salrio
de uma pessoa em um emprego em uma
companhia

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

84

Associao como uma


Classe
Cada ligao de uma associao uma
instncia de uma classe
Uma ligao um objeto, com atributos e
mtodos
til quando ligaes podem participar em
associaes com outros objetos
til quando ligaes sofrem operaes
Exemplo: autorizao para usurios em
estaes de trabalho

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

85

Associao Ternria

Representa ligaes entre 3 objetos


No pode ser dividida em associaes
binrias sem que haja perda de informaes
Associaes de grau maior que 3 so raras e
devem ser evitadas devido a complexidade de
entendimento e implementao
Exemplo: pessoas que so programadoras
usam linguagens de programao em projetos

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

86

Ordenao em
Associaes

Em alguns casos o conjunto de objetos


associados a um certo objeto apresenta uma
ordem
A palavra "ordenado" deve aparecer junto
multiplicade "muitos" de uma associao para
indicar que existe uma ordem entre os objetos
ligados
Exemplos: as janelas visveis em uma tela
possuem uma ordem; os vrtices de um polgono

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

87

Associao Qualificada
Relaciona dois objetos e um qualificador
O qualificador reduz a multiplicidade
Exemplo: Um diretrio contm muitos
arquivos, mas o nome do arquivo
dentro do diretrio que identifica o
arquivo (e identifica um nico arquivo)
Maior preciso na informao!!

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

88

Uso de Agregao
Na dvida, use associao!
Herana no representa o
relacionamento parte-todo
Agregados recursivos so frequentes
Agregao normalmente implica em
propagao de operaes

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

89

Modelagem Orientada a
Objetos
Modelagem Dinmica
Diagrama de Seqncia

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

90

Objetivos de um diagrama
de seqncia
Ilustrar como objetos interagem entre
si.
Detalhar um use case em termos de
objetos e mensagens.

objetos de acordo com diagrama de


classes
mensagens so mapeadas em operaes
nas classes
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

91

Modelagem Orientada a
Objetos
Modelagem Dinmica
Diagrama de Estados

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

92

Objetivos de um
diagrama de estados

Representar o comportamento
dinmico de classes individuais

Representar o comportamento
dinmico de colaborao entre
classes

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

93

Elementos de um
diagrama de estados

os estados possveis para os objetos de uma certa classe


as transies de estado
os eventos que causam transies de estados
as aes decorrentes de
uma transio de estado
entrada em um estado
sada de um estado

as aes realizadas por objetos enquanto esto em um


certo estado
durante todo o tempo em que o objeto est no estado
decorrente de algum evento

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

94

Diagramas de Estados

Relaciona eventos e estados


Um objeto muda de estado dependendo do evento
e do estado atual.
Transio: modificao de estado causada por um
evento (mesmo quando estado final e inicial
coincidem).
Um evento pode ser irrelevante para um objeto em
um certo estado.
Exemplo: linha telefnica

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

95

Diagramas de Estados
Exemplo : Linha telefnica
no-gancho

Inativa

no-gancho

fora-do-gancho
dgito( n )
Sinal de
ocupado

nmero
ocupado

Sinal de ocupado rpido

tronco
ocupado

Quedaqueda-da-linha
Sinal de discar
da-linha
a
h
n
i
-l
dgito( n ) queda-da
nmero Mensagem
Discando
gravada
invalido
nmero vlido
Ligando
encaminhado
Tocando
telefone chamado atende

Mensagem
terminada

Interligando
telefone chamado desliga
Desligando
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

96

Diagramas de Estados
Exemplo : jogo de xadrez
Diagrama de estados de uma s passagem
para um jogo de xadrez
Incio

Vez das
brancas
pretas
jogam

brancas
jogam

cheque-mate

Pretas
vencem

empate forado
Empate
empate forado

Vez das
pretas

cheque-mate

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

Brancas
vencem

97

Diagramas de Estados
Exemplo : Veculo
Diagrama de estados com transies guardadas
Norte / Sul
podem ir em frente

tempo decorrido [ carros


nas vias esquerdas N / S ]

Norte / Sul
podem dobrar
esquerda

tem
nas po d
via eco
s e rri d
tem
squ o [
p
erd sem
n
o
tempo
as
tempo
d
as
e
via co
c
N / a rro
s e rrid
decorrido
decorrido
S] s
squ o [
erd sem
as
L / carro
O] s
Leste / Oeste
Leste / Oeste
podem dobrar
tempo decorrido [ carros podem ir em frente
esquerda
nas vias esquerdas L / O ]
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

98

Tipos de diagramas de
estados

Diagrama de lao contnuo: representa um ciclo


de vida; sem estado inicial ou final. Exemplo: linha
telefnica.
Diagrama de uma s passagem: representa
objetos com vida finita; possuem um estado inicial
(criao do objeto) e um estado final (destruio
do objeto).
Exemplo: jogo de xadrez

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

99

Condies

Uma condio uma funo booleana de


valores, vlida dentro de um intervalo de
tempo.
Condies funcionam como guardas nas
transies: uma transio s dispara quando
ocorre o evento e a condio de guarda for
verdadeira.
Exemplo: Pessoa com relao ao atributo
"estar de luvas".

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

100

Controle de Operaes
Atividades e aes podem ser
vinculadas a estados e eventos a fim
de se especificar o que faz o objeto
quando est em um determinado
estado e o que faz em resposta a
estmulos externos.
Definem o comportamento do objeto!

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

101

Atividade

Est sempre vinculada a um estado


Consome tempo para se completar
executada continuamente durante o tempo em
que o objeto est num certo estado
Notao:
faa: atividade
Exemplo: Um vendedor logo aps ter recebido
dinheiro para pagamento do item vendido deve
calcular o troco.
faa: calcular troco

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

102

Ao

Est normalmente vinculada a um evento, mas


tambm pode estar vinculada a um estado
(aes de entrada, sada e internas)
executada "instantaneamente"
Notao:
evento / ao
Exemplo: Exibir um menu quando o boto direito
do mouse pressionado.
boto direito pressionado / exibir menu

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

103

Controle de Operaes
Aes para um menu instantneo

boto direito pressionado /


exibir menu instantneo
Menu
visvel

Inativo

boto direito liberado /


apagar menu instantneo
cursor movimentado /
iluminar item do menu
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

104

Diagrama de Estados com


Operaes
Notao

Estado 1
faa : atividade 1

Evento 1 ( atributos )
[ condio 1 ] / ao 1

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

Estado 2
...

105

Diagramas de Estados
Nivelados

Permitem refinamentos sucessivos do modelo


dinmico
Permitem uma descrio estruturada do sistema
Pode-se expandir:
um evento e sua correspondente ao
uma atividade realizada em um certo estado
Exemplo: Mquina de vender

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

106

Nivelados
Exemplo : mquina de
vender
moedas introduzidas
( quantia ) verificar saldo
Inativa

cancelar / devolver moedas

Recolhendo dinheiro
moedas introduzidas ( quantia ) /
acrescentar ao saldo

[ item vazio ]

Selecionar ( item )
[ troco < 0 ]

faa : testar item e calcular troco


[ troco = 0 ]
faa : entregar
item
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

[ troco < 0 ]
faa : preparar
troco
107

Nivelados
Exemplo : mquina de
vender
Atividade entregar item da mquina de vender
brao pronto
Faa : mover
brao para a
fileira correta

Faa : mover
brao para a
coluna correta

Transio selecionar
item da mquina de vender
faa : preparar
item

brao pronto

dgito( n )
clear

empurrado
faa : empurrar
item para fora
da prateleira

dgito( n )
Selecionar( item )
faa :
acrescentar
dgito

enter

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

108

Generalizao de Estados

Os estados de um objeto podem ser organizados de forma


hierrquica, em super-estados e sub-estados.
Um sub-estado um refinamento de um super-estado, i.e.,
um sub-estado um dos possveis estados do objeto
dentro daquele super-estado.
Um sub-estado herda as transies do super-estado;
transies que se aplicam ao super-estado tambm se
aplicam ao sub-estado.
Exemplos: linha telefnica, transmisso automtica de um
automvel

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

109

Generalizao de Estados
Exemplo : transmisso de um carro
apertar R
Neutro

apertar N
apertar N

apertar F

Para a frente
sobe

pra
Primeira

reduz

sobe
Segunda

reduz

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

Terceira

110

Generalizao de Eventos

Os eventos que ocorrem em um sistema podem ser


organizados de forma hierrquica, em super-eventos e
sub-eventos.
Um sub-evento herda atributos do super-evento.
Onde um evento descrito qualquer sub-evento seu
implicitamente descrito.
A generalizao de eventos facilita a abstrao e permite
conciso na representao de diagramas.
Exemplo: Entrada do usurio.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

111

Generalizao de Eventos
Exemplo : eventos de
teclado
evento
tempo

Entrada do usurio
dispositivo

Boto do mouse
localizao
Boto do
mouse
apertado

Boto do
mouse
liberado

Hierarquia parcial de
eventos para eventos
de teclado

caracter do teclado
caracter
controle

grfico

espao

alfanumrico

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

pontuao
112

Concorrncia de
Agregao

O estado de um objeto composto (um agregado) determinado


pelos estados dos objetos que o compem.
Exemplo: O estado de um carro determinado pelo estado da
ignio, da transmisso, do freio, do acelerador, do motor, ...
Os componentes de um agregado normalmente interagem entre si:
a mudana de estado de um componente pode disparar uma
transio em outro componente.
A interao entre diagramas de estados de componentes
representada atravs de eventos compartilhados e/ou condies
de guarda.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

113

Concorrncia de
Agregao
Carro
Ignio

Transmisso

Freio

Girar chave para dar partida


[ transmisso em Neutro ]

Ignio
Desligada

Partida

Acelerador
liberar
chave

Ligada

desligar a chave
Acelerador
Desligado

apertar
acelerador

liberar acelerador

Freio
Ligado

Desligado

apertar
freio

Partido

liberar freio

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

114

Concorrncia Interna de
Objetos

O diagrama de estados de um objeto pode ser


particionado de acordo com atributos e ligaes
em sub-diagramas.
O estado do objeto compreende um estado de
cada sub-diagrama.
Um mesmo evento pode causar transies em
mais de um sub-diagrama.
Exemplo: Jogo de bridge rubber.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

115

Concorrncia Interna de
Objetos
Jogo de bridge com estados concorrentes
Jogando rubber
Vulnerabilidade N - S
No vulnervel

jogo N - S

Vulnervel

jogo N - S

N-S vence rubber

Vulnerabilidade L - O
No vulnervel

jogo L - O

Vulnervel

jogo L - O

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

L - O vence rubber
116

Transio Automtica

Disparada quando a atividade vinculada a


um estado termina
O "evento" que causa a transio o
trmino da atividade
Exemplo: Mquina de vender no estado
correspondente a atividade testar item e
calcular troco pode disparar uma de
quatro transies automticas.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

117

Aes de Entrada e de
Sada
Aes vinculadas ao ato de entrar ou
sair de um estado
No adicionam poder de expresso,
mas permitem uma representao mais
concisa
Exemplo: Controle de uma porta de
garagem

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

118

Envio de Eventos

Uma ao pode ser especificada como enviar um


certo evento para outro objeto.
Notao:
enviar E (atributos)
(palavra enviar pode ser omitida)
Exemplo: Uma linha telefnica envia o evento
ligar(nmero-de-telefone) para o comutador quando
um nmero completo discado.
nmero completo / ligar(nmero-de-telefone)

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

119

Sincronizao de Eventos
Concorrentes
Um objeto pode executar vrias
atividades de forma concorrente
(paralela).
As atividades no so necessariamente
sincronizadas, mas todas devem
terminar para que ocorra transio de
estado.
Exemplo: Caixa automtica.

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

120

Sincronizao de Eventos
Concorrentes
Emitindo

Faa : entregar dinheiro

dinheiro
recolhido
Pronta para
reinicializar

Preparao
Faa : ejetar carto

carto
recolhido

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

121

Você também pode gostar