modelagem de software orientado a objetos utilizando a linguagem uml1 alcides calsavara

121
gem de Software Orientado a Objetos utilizando a Linguagem UML Modelagem de Software Orientado a Objetos utilizando a Linguagem UML Alcides Calsavara

Upload: internet

Post on 16-Apr-2015

112 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 1

Modelagem de Software Orientado a Objetos

utilizando a Linguagem UML

Alcides Calsavara

Page 2: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 2

Conteúdo Programático

princípios de O-O método, casos de uso, classes relacionamentos, restrições, interfaces,

tipos parametrizados, estereótipos, pacotes

estados e eventos seqüência, colaboração, atividades,

componentes, implantação

Page 3: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 3

Bibliografia Básica UML Toolkit UML in a Nutshell Object-Oriented Software Construction Modelagem de Objetos através da UML Design Patterns: Elements of Reusable

Object-Oriented Software Modelagem e Projeto baseados em

Objetos

Page 4: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 4

Princípios de Orientação a Objetos

Page 5: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 5

Sumário Tipos de dados abstratos Classes e instâncias Operações e atributos Construção de objetos Referências para objetos Pacotes de classes Encapsulamento Modos de visibilidade/acesso

Page 6: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 6

Sumário Asserções e invariantes de classe Tratamento de exceções Objetos compostos Herança, sobrecarga, polimorfismo Herança múltipla Interfaces Tipos parametrizados

Page 7: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 7

Tipos de Dados Abstratos (ADT)

Um ADT é um modelo matemático para descrição de um tipo independente de sua representação física.

Um tipo é uma coleção de objetos caracterizados através de funções, axiomas e pré-condições.

Um objeto que pertence ao conjunto de objetos descritos por um ADT é dito ser uma instância do ADT.

Page 8: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 8

Exemplo de ADTPilha (Stack)

Opções de representação:– array– listas– ...

Questão básica:

Como definir formalmente uma pilha de forma independente de sua representação?

Page 9: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 9

Exemplo de ADTPrimeira Parte: Tipos

Especificação ADT para pilhas

TYPES– STACK [G]

Page 10: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 10

Exemplo de ADTSegunda Parte: Funções

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

Page 11: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 11

Exemplo de ADTTerceira 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 ) )

Page 12: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 12

Exemplo de ADTQuarta Parte: Pré-condições

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

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

Page 13: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 13

Modularização

Construção de software orientado a objetos é a construção de um sistema de software como uma coleção de implementações de ADTs possivelmente parciais.

Um ADT corresponde a um módulo de um sistema de software.

Page 14: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 14

Classe Uma classe é um tipo abstrato de dados

equipado com uma implementação possivelmente parcial.

A definição de uma classe inclui uma lista de atributos e uma lista de operações.

Um sistema de software orientado a objetos é definido por um conjunto de classes.

Page 15: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 15

Instância Todo objeto é instância de alguma classe. A execução de um sistema de software

orientado a objetos corresponde a interações entre objetos através de mensagens (chamadas de operações).

Toda execução é iniciada em um objeto raiz, com a chamada de uma de suas operações.

Page 16: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 16

Classe X Objeto

Um classe é um elemento de construção de software. Portanto, é um elemento definido e criado estaticamente.

Um objeto é um elemento de run-time, isto é, só existe em tempo de execução de um sistema de software. Portanto, é criado dinamicamente.

Page 17: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 17

Atributo

A definição de uma classe inclui uma lista de atributos.

Toda instância de uma classe contém 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.

Page 18: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 18

Atributo

Tipos de atributos:– de instância: há um valor específico para

cada instância– de classe: há um único valor

(compartilhado) para todas as instâncias O valor de um atributo pode ser uma

constante.

Page 19: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 19

Operação A definição de uma classe inclui uma lista

de operações que correspondem à interface da classe.

Uma operação é uma função ou transformação que pode ser aplicada a todo e qualquer objeto de uma classe.

Uma operação tem um nome, uma lista de argumentos, um tipo de retorno e uma implementação (um método).

Page 20: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 20

Operação

Em um sistema de software, existe apenas uma única ocorrência de cada operação de uma classe, independentemente do número de instâncias da classe.

Operações são definidas e criadas estaticamente.

Page 21: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 21

Construção de Objetos

Toda classe define um ou mais operações específicas para a criação (iniciação) de novos objetos, normalmente denominadas construtores da classe.

Toda vez que um novo objeto é criado, um construtor da correspondente classe deve ser selecionado para execução.

Page 22: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 22

Referência para Objeto Uma referência é um valor de run-time que

pode ser void ou attached. Quando o valor de uma referência for attached,

a referência identifica um único objeto. (A referência está fixada em um certo objeto.)

Podem existir várias referências para um mesmo objeto.

Copiar uma referência é diferente de copiar um objeto.

Page 23: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 23

Pacote de Classes Classes podem ser logicamente organizadas

em grupos denominados pacotes. Pacotes são estrurados de forma

hierárquica. Há pacotes disponibilizados em bibliotecas. Usuários podem criar seus próprios pacotes.

Page 24: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 24

Encapsulamento Processo de ocultamento de partes

internas da implementação de um objeto e permissão de acesso ao estado do objeto somente através de uma interface bem definida.

Os atributos de um objeto são manipulados (para leitura e escrita) somente por operações definidas para o objeto.

Page 25: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 25

Modos de Visibilidade/Acesso

Pode-se controlar a manipulação de atributos e operações (membros, de forma geral) considerando-se os escopos de classe, subclasse e pacote, de forma combinada.

Modificadores:– private– protected– package– public

Page 26: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 26

Modificador private

Um membro qualificado como private somente é acessível a partir de métodos da própria classe à qual pertence o membro.

Page 27: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 27

Modificador public

Um membro qualificado como public é acessível a partir de qualquer operação de qualquer classe, independentemente de subclasse e de pacote.

Page 28: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 28

Modificadores public e private -

Exemplo 1class 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( ); }

}

Page 29: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 29

Modificadores public e private -

Exemplo 2class 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) ; }

}

Page 30: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 30

Modificador package

Um membro qualificado como package é acessível a partir de qualquer operação de qualquer classe pertencente ao mesmo pacote que a classe à qual pertence o membro, independentemente de subclasse.

Page 31: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 31

Modificador protected

Um membro qualificado como protected é acessível a partir de qualquer operação de qualquer classe, exceto se a classe de acesso estiver em pacote distinto e não for subclasse da classe à qual pertence o membro.

Page 32: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 32

Modificadores package e protectedExemplo 1class Veiculo { int ano; // package

protected int potencia; ... }

class Carro extends Veiculo

{ ... potencia++;

ano++; ... }

class Retificadora

{ ... Carro c = new Carro (...) ;

c.ano = 1980;

c.potencia = 100; ... }

Page 33: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 33

Modificadores package e protectedExemplo 2package 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

Page 34: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 34

Asserções

P {A} Q

A execução de A, iniciando em um estado no qual P é verdadeira, terminará em um estado no qual Q é verdadeira.

P : pré-condição

Q : pós-condição

A : uma operação (ou parte de)

Page 35: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 35

Asserções - 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 }

Page 36: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 36

Invariante de Classe

Uma invariante é uma propriedade inalterável durante todo o ciclo de vida de um objeto.

Exemplos:– 0 <= count– count <= capacity– empty = (count = 0)

Page 37: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 37

Tratamento de Exceção

Exceções são acontencimentos fora do comportamento normal ou desejado para um programa. O gerenciamento de exeções permite o controle sobre erros e possivelmente uma solução de contorno.

Exemplos: entrada em formato inválido, arquivo corrompido, conexão de rede não disponível, índice inválido para vetor, ...

Page 38: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 38

Exemplo de código frágilclass TestNullP

{ static String s = null;

public static void main(String args[ ])

{

char c1 = s.charAt(2);

// java.lang.NullPointerException (programa pára)

s = new String("Curitiba");

char c2 = s.charAt(2);

// c2 = 'r'

char c3 = s.charAt(8);

// java.lang.StringIndexOutOfBoundsException (programa pára)

}

} // fim

Page 39: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 39

Exemplo de código frágilclass TestNullP

{ static String s = null;

public static void main(String args[ ])

{

char c1 = s.charAt(2);

// java.lang.NullPointerException (programa pára)

s = new String("Curitiba");

char c2 = s.charAt(2);

// c2 = 'r'

char c3 = s.charAt(8);

// java.lang.StringIndexOutOfBoundsException (programa pára)

}

} // fim

Page 40: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 40

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

Page 41: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 41

Exemplo modificado com tratamento de exceções

class TestNullP

{ static String s = null;

public static void main(String args[])

{

try

{

char c1 = s.charAt(2);

}

catch (Exception e)

{

System.out.println("Exceção " + e);

// Exceção: java.lang.NullPointerException

} // continua

Page 42: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 42

Exemplo modificado com tratamento de exceções

(cont.)s = new String("Curitiba");

try

{

char c2 = s.charAt(2);

// c2 = 'r'

}

catch (Exception e)

{

System.out.println("Exceção " + e);

}

// continua

Page 43: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 43

Exemplo modificado com tratamento de exceções

(cont.)try

{

char c3 = s.charAt(8);

}

catch (Exception e)

{

System.out.println("Exceção " + e);

// Exceção: java.lang.StringIndexOutOfBoundsException

}

}

} // fim

Page 44: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 44

Hierarquia de exceções

Throwable

Error Exception

RuntimeException IOException ...

......

...

Page 45: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 45

A cláusula throwsclass TestNullP

{ static String s = null;

static void work( ) throws Throwable

{

try

{ char c1 = s.charAt(2); }

catch (Exception e)

{ System.out.println("Exceção"); throw(e); }

catch (Error e)

{ System.out.println("Erro"); throw(e); }

finally

{ System.out.println("Adios, amigos");}

} // continua

Page 46: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 46

A cláusula throws (cont.)

public static void main(String args[ ])

{

try

{ work( ); }

catch(Throwable t)

{ System.out.println("Erro ou Exceção " + t); }

finally

{ System.out.println("Adios, amigos II");}

}

} // fim

Page 47: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 47

Definindo suas próprias exceções

class ProblemaEmWork extends Exception

{

public ProblemaEmWork( ) { }

public ProblemaEmWork(String msg) { super(msg); }

}

// continua

Page 48: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 48

Definindo suas próprias exceções (cont.)

class TestNullP

{ static String s = null;

static void work( ) throws ProblemaEmWork

{

try

{ char c1 = s.charAt(2); }

catch (Exception e)

{ throw(new ProblemaEmWork("Exceção em work " + e)); }

catch (Error e)

{ throw(new ProblemaEmWork("Erro em work " + e)); }

finally

{ System.out.println("Adios, amigos");}

} // continua

Page 49: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 49

Definindo suas próprias exceções (cont.)

public static void main(String args[ ])

{

try

{ work(); }

catch(ProblemaEmWork p)

{ System.out.println(p); }

finally

{ System.out.println("Adios, amigos II");}

}

} // fim

Page 50: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 50

Objeto Composto

Um objeto pode conter uma referência para outro objeto, recursivamente. Nesse caso, o objeto é dito ser composto ou complexo.

Page 51: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 51

Generalização

Relacionamento entre uma classe e uma ou mais versões refinadas ou especializadas da classe.

Especialização: relacionamento inverso Superclasse: versão mais abstrata de

outra classe, a subclasse Subclasse: versão mais refinada de

outra classe, a superclasse

Page 52: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 52

Herança

Mecanismo baseado em objetos que permite que as classes compartilhem atributos e operações baseados em um relacionamento, geralmente generalização.

Uma subclasse herda atributos e operações da superclasse.

Page 53: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 53

Classes Abstratas e Concretas

Classe abstrata: classe que não pode ter instâncias diretas, mas cujos descendentes sim; organizam características comuns a diversas classes; mecanismo para reutilizar código; pode definir operações abstratas (sem um correspondente método)

Classe concreta: classe que pode ter instâncias diretas; não pode definir operações abstratas

Page 54: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 54

Interface

Um classe totalmente abstrata é dita ser uma interface.

A definição de uma interface não inclui qualquer implementação.

Page 55: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 55

Interfaces- definição básica -

Uma interface possui um nome, e define apenas métodos abstratos e constantes (descreve uma abstração, normalmente um comportamento)

Uma interface não 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 herança múltipla em Java)

Page 56: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 56

Interfaces- definição básica -

Uma classe que implementa uma interface deve implementar todos os métodos abstratos definidos pela interface (não pode deixar qualquer implementação 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 referência a cada constante precedendo-a com o nome da interface e um ponto

Page 57: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 57

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

}

Page 58: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 58

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( ) {}

}

Page 59: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 59

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() {}

}

Page 60: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 60

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;}

}

Page 61: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 61

Sobrecarga

Atributos e operações podem ser redefinidos (sobrecarregados) por subclasses.

Page 62: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 62

Sobrecarga para extensão A nova operação é igual à operação

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

Page 63: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 63

Sobrecarga para restrição A nova operação restringe o protocolo

(assinatura da operação), podendo reduzir os tipos de argumentos.

A operação herdada fica fechada (restrita) dentro de cada subclasse específica.

Page 64: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 64

Sobrecarga para otimização

O novo método tem o mesmo protocolo externo e apresenta o mesmos resultados

A implementação do novo método (algoritmo utilizado) pode ser completamente diferente

Page 65: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 65

Sobrecarga por conveniência

Emprego adhoc de herança para reutilizar classes.

Uma nova classe é tornada subclasse de uma classe existente e substitui os métodos inconvenientes.

Semanticamente errado e conduz a problemas de manutenção; recomenda-se criar uma terceira classe (superclasse das demais)

Page 66: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 66

Polimorfismo

Assume muitas formas A propriedade segundo a qual uma operação

pode comportar-se diferentemente em classes diferentes.

A subclasse redefine a implementação de uma operação herdada da superclasse.

Onde se espera uma instância de um certa classe pode aparecer uma instância de qualquer subclasse daquela classe.

Page 67: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 67

Herança Múltipla

Uma classe possui mais de uma subclasse e herda características de todos os seus ancestrais.

Maior capacidade de especificação de classes.

Maior oportunidade de reutilização. Perda em simplicidade conceitual e de

implementação.

Page 68: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 68

Tipo Parametrizado

Um tipo pode receber como parâmetro uma lista de tipos.

Exemplos:– pilha de inteiros– pilha de reais– pilha de pessoas– ...

Page 69: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 69

Modelagem Orientada a Objetos

Use-Case Modeling

Page 70: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 70

Objetivos básicos de ummodelo 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 através de discussões entre os desenvolvedores e os clientes (usuários) do sistema.

Page 71: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 71

Componentes de um use-case

um conjunto de use cases– Um use case representa uma funcionalidade

do sistema, do ponto de vista do usuário do sistema (visão externa).

um conjunto de actors– Um actor representa um tipo de usuário do

sistema.– Um actor deve estar associado a pelo menos

um use case

Page 72: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 72

O componente use case

Um use case representa uma funcionalidade completa (mas pode haver dependências 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

Page 73: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 73

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 espécie de hardware que interage com o sistema.

Page 74: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 74

Outros objetivos de use-case Fornecer uma base para a realização de testes

do sistema. Prover uma descrição clara, consistente e

simples do que o sistema dever fazer, facilitando a discussão entre o desenvolvedor e o cliente do sistema e ainda facilitando a comunicação dentro da equipe de desenvolvedores

Ser a base para definição das classes do sistema e para definição da dinâmica do sistema.

Page 75: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 75

Exemplo de diagrama use-case

Cliente

Levantamento de estatísticas de vendas

Assinatura de uma apólice de seguro

Levantamento de estatísticas sobre clientes

Corretor de seguros

Sistema de Seguros

Page 76: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 76

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.

Page 77: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 77

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" são extensões do use case "Assinatura de apólice de seguro".

Um use-case pode utilizar outro(s) use case(s). Exemplo: O use case "Assinatura do contrato de compra de um automóvel" utiliza o use case "Assinatura de uma apólice de seguro de carro".

Page 78: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 78

Modelagem Orientada a Objetos

Relacionamentos

Page 79: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 79

Conteúdo Ligação entre objetos Associação entre classes Agregação Multiplicidade e Papel Atributo de ligação Associação como uma classe Associações ternárias Ordenação em associações Associação qualificada

Page 80: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 80

Ligação Uma conexão física ou conceitual entre

objetos Exemplo: O país Brasil tem como capital

a cidade de Brasília. Exemplo: O funcionário João trabalha na

empresa Transamérica S.A. Exemplo: O artigo “OO Solutions” foi

publicado na conferencia OOPSLA’99.

Page 81: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 81

Associação Relacionamento entre instâncias de

duas ou mais classes descrevendo um grupo de ligações com estrutura e semântica comuns.

Exemplo: Um país tem como capital uma cidade.

Exemplo: Um funcionário trabalha numa empresa.

Page 82: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 82

Agregação Forma especial de associação, entre o

todo e suas partes, na qual o todo é composto pelas partes

Também chamada de herança horizontal Exemplo: Um artigo é publicado em uma

conferência, isto é, o artigo faz parte da conferência (ou dos anais da conferência).

Page 83: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 83

Multiplicidade e Papel Multiplicidade: Número de instâncias

de uma classe que podem se relacionar a uma única instância de um classe associada (ou agregada).

Papel: nome que identifica inequivocamente uma extremidade de uma associação.

Page 84: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 84

Atributo de Ligação Um valor de dados presente em cada ligação

(nível de instâncias) de uma associação (nível de classes)

Uma propriedade da ligação entre objetos, e não dos objetos ligados, propriamente ditos

Exemplos: permissão de acesso que um usuário possui para a um arquivo; o salário de uma pessoa em um emprego em uma companhia

Page 85: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 85

Associação como uma Classe

Cada ligação de uma associação é uma instância de uma classe

Uma ligação é um objeto, com atributos e métodos

Útil quando ligações podem participar em associações com outros objetos

Útil quando ligações sofrem operações Exemplo: autorização para usuários em

estações de trabalho

Page 86: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 86

Associação Ternária

Representa ligações entre 3 objetos Não pode ser dividida em associações

binárias sem que haja perda de informações Associações de grau maior que 3 são raras e

devem ser evitadas devido a complexidade de entendimento e implementação

Exemplo: pessoas que são programadoras usam linguagens de programação em projetos

Page 87: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 87

Ordenação em Associações

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 associação para indicar que existe uma ordem entre os objetos ligados

Exemplos: as janelas visíveis em uma tela possuem uma ordem; os vértices de um polígono

Page 88: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 88

Associação Qualificada Relaciona dois objetos e um qualificador O qualificador reduz a multiplicidade Exemplo: Um diretório contém muitos

arquivos, mas é o nome do arquivo dentro do diretório que identifica o arquivo (e identifica um único arquivo)

Maior precisão na informação!!

Page 89: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 89

Uso de Agregação Na dúvida, use associação! Herança não representa o

relacionamento parte-todo Agregados recursivos são frequentes Agregação normalmente implica em

propagação de operações

Page 90: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 90

Modelagem Orientada a Objetos

Modelagem Dinâmica

Diagrama de Seqüência

Page 91: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 91

Objetivos de um diagrama de seqüência

Ilustrar como objetos interagem entre si. Detalhar um use case em termos de

objetos e mensagens.– objetos de acordo com diagrama de

classes– mensagens são mapeadas em operações

nas classes

Page 92: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 92

Modelagem Orientada a Objetos

Modelagem Dinâmica

Diagrama de Estados

Page 93: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 93

Objetivos de umdiagrama de estados

Representar o comportamento dinâmico de classes individuais

Representar o comportamento dinâmico de colaboração entre classes

Page 94: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 94

Elementos de umdiagrama de estados

os estados possíveis para os objetos de uma certa classe as transições de estado os eventos que causam transições de estados as ações decorrentes de

– uma transição de estado– entrada em um estado– saída de um estado

as ações realizadas por objetos enquanto estão em um certo estado– durante todo o tempo em que o objeto está no estado– decorrente de algum evento

Page 95: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 95

Diagramas de Estados Relaciona eventos e estados Um objeto muda de estado dependendo do evento

e do estado atual. Transição: modificação 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 telefônica

Page 96: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 96

Diagramas de EstadosExemplo : Linha telefônica

Inativa

Sinal de discar

Ligando

Tocando

Interligando

Desligando

Queda-da-linha

Mensagem gravadaSinal de

ocupado

Sinal de ocu-pado rápido

no-gancho

dígito( n )

no-gancho

Discando

Mensagemterminada

encaminhado

telefone chamado atende

telefone chamado desliga

número válido

número invalido

fora-do-gancho

dígito( n )

número ocupado

tronco ocupado

queda-da-linha

queda-da-linha

Page 97: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 97

Diagramas de EstadosExemplo : jogo de xadrez

Vez dasbrancas

Vez daspretas

brancasjogam

pretasjogam

Início cheque-mate

empate forçado

empate forçado

cheque-mate

Pretasvencem

Brancasvencem

Empate

Diagrama de estados de uma só passagem para um jogo de xadrez

Page 98: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 98

Diagramas de EstadosExemplo : Veículo

Leste / Oestepodem dobrar

à esquerda

tempodecorrido

Diagrama de estados com transições guardadas

Leste / Oestepodem ir em frente

Norte / Sulpodem ir em frente

tempo decorrido [ carrosnas vias esquerdas N / S ]

tempo decorrido [ carrosnas vias esquerdas L / O ]

tempodecorrido

tempo decorrido [ sem carros

nas vias esquerdas N / S ]

Norte / Sulpodem dobrar

à esquerda

tempo decorrido [ sem carros

nas vias esquerdas L / O ]

Page 99: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 99

Tipos de diagramas de estados

Diagrama de laço contínuo: representa um ciclo de vida; sem estado inicial ou final. Exemplo: linha telefônica.

Diagrama de uma só passagem: representa objetos com vida finita; possuem um estado inicial (criação do objeto) e um estado final (destruição do objeto).

Exemplo: jogo de xadrez

Page 100: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 100

Condições Uma condição é uma função booleana de

valores, válida dentro de um intervalo de tempo.

Condições funcionam como guardas nas transições: uma transição só dispara quando ocorre o evento e a condição de guarda for verdadeira.

Exemplo: Pessoa com relação ao atributo "estar de luvas".

Page 101: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 101

Controle de Operações Atividades e ações 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 estímulos externos.

Definem o comportamento do objeto!

Page 102: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 102

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 Notação: faça: atividade Exemplo: Um vendedor logo após ter recebido

dinheiro para pagamento do item vendido deve calcular o troco.

faça: calcular troco

Page 103: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 103

Ação Está normalmente vinculada a um evento, mas

também pode estar vinculada a um estado (ações de entrada, saída e internas)

É executada "instantaneamente" Notação: evento / ação Exemplo: Exibir um menu quando o botão direito

do mouse é pressionado.

botão direito pressionado / exibir menu

Page 104: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 104

Controle de Operações

Ações para um menu instantâneo

Inativo

botão direito pressionado /exibir menu instantâneo

Menu visível

botão direito liberado / apagar menu instantâneo

cursor movimentado / iluminar item do menu

Page 105: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 105

Diagrama de Estados com Operações

Notação

Estado 1faça : atividade 1

Evento 1 ( atributos )[ condição 1 ] / ação 1 Estado 2

. . .

Page 106: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 106

Diagramas de Estados Nivelados

Permitem refinamentos sucessivos do modelo dinâmico

Permitem uma descrição estruturada do sistema Pode-se expandir:

– um evento e sua correspondente ação

– uma atividade realizada em um certo estado Exemplo: Máquina de vender

Page 107: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 107

Diagramas de Estados Nivelados

Exemplo : máquina de vender

Inativa

moedas introduzidas( quantia ) verificar saldo Recolhendo dinheiro

moedas introduzidas ( quantia ) /acrescentar ao saldo

faça : entregaritem

faça : preparartroco

faça : testar item e calcular troco

[ troco = 0 ] [ troco < 0 ]

[ troco < 0 ]

Selecionar ( item )[ item vazio ]

cancelar / devolver moedas

Page 108: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 108

Diagramas de Estados Nivelados

Exemplo : máquina de vender

Faça : moverbraço para afileira correta

faça : prepararitem

Faça : moverbraço para a

coluna correta

faça : empurraritem para forada prateleira

braço pronto braço pronto empurrado

dígito( n )

clear

faça : acrescentar

dígito

dígito( n )

enter

Selecionar( item )

Atividade entregar item da máquina de vender

Transição selecionar item da máquina de vender

Page 109: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 109

Generalização de Estados

Os estados de um objeto podem ser organizados de forma hierárquica, em super-estados e sub-estados.

Um sub-estado é um refinamento de um super-estado, i.e., um sub-estado é um dos possíveis estados do objeto dentro daquele super-estado.

Um sub-estado herda as transições do super-estado; transições que se aplicam ao super-estado também se aplicam ao sub-estado.

Exemplos: linha telefônica, transmissão automática de um automóvel

Page 110: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 110

Generalização de Estados Exemplo : transmissão de um carro

Primeira Segunda Terceira

sobe

Neutro Réapertar R

apertar N

reduz

sobe

reduz

Para a frente

pára

apertar Fapertar N

Page 111: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 111

Generalização de Eventos Os eventos que ocorrem em um sistema podem ser

organizados de forma hierárquica, 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 generalização de eventos facilita a abstração e permite

concisão na representação de diagramas. Exemplo: Entrada do usuário.

Page 112: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 112

Generalização de EventosExemplo : eventos de

teclado

evento

Entrada do usuário

Botão do mouse

apertado

controle gráfico

espaço alfanumérico pontuação

tempo

dispositivo

Botão do mouselocalização

caracter do tecladocaracter

Botão do mouse

liberado

Hierarquia parcial deeventos para eventos

de teclado

Page 113: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 113

Concorrência de Agregação

O estado de um objeto composto (um agregado) é determinado pelos estados dos objetos que o compõem.

Exemplo: O estado de um carro é determinado pelo estado da ignição, da transmissão, do freio, do acelerador, do motor, ...

Os componentes de um agregado normalmente interagem entre si: a mudança de estado de um componente pode disparar uma transição em outro componente.

A interação entre diagramas de estados de componentes é representada através de eventos compartilhados e/ou condições de guarda.

Page 114: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 114

Concorrência de Agregação

CarroIgnição Transmissão Freio Acelerador

Desligada Partida Ligada

Girar chave para dar partida[ transmissão em Neutro ]

desligar a chave

liberar chave

Ignição

Desligado Ligado

apertaracelerador

apertar freio

liberar acelerador liberar freio

Acelerador Freio

Desligado Partido

Page 115: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 115

Concorrência Interna de Objetos

O diagrama de estados de um objeto pode ser particionado de acordo com atributos e ligações em sub-diagramas.

O estado do objeto compreende um estado de cada sub-diagrama.

Um mesmo evento pode causar transições em mais de um sub-diagrama.

Exemplo: Jogo de bridge rubber.

Page 116: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 116

Concorrência Interna de Objetos

Não vulnerável

Não vulnerável

Vulnerável

Vulnerável

N-S vence rubber

L - O vence rubber

Vulnerabilidade N - S

jogo N - S

Vulnerabilidade L - O

jogo L - O

jogo N - S

jogo L - O

Jogando rubber

Jogo de bridge com estados concorrentes

Page 117: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 117

Transição Automática Disparada quando a atividade vinculada a

um estado termina O "evento" que causa a transição é o

término da atividade Exemplo: Máquina de vender no estado

correspondente a atividade testar item e calcular troco pode disparar uma de quatro transições automáticas.

Page 118: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 118

Ações de Entrada e de Saída

Ações vinculadas ao ato de entrar ou sair de um estado

Não adicionam poder de expressão, mas permitem uma representação mais concisa

Exemplo: Controle de uma porta de garagem

Page 119: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 119

Envio de Eventos

Uma ação pode ser especificada como enviar um certo evento para outro objeto.

Notação: enviar E (atributos)

(palavra enviar pode ser omitida) Exemplo: Uma linha telefônica envia o evento

ligar(número-de-telefone) para o comutador quando um número completo é discado.

número completo / ligar(número-de-telefone)

Page 120: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 120

Sincronização de Eventos Concorrentes

Um objeto pode executar várias atividades de forma concorrente (paralela).

As atividades não são necessariamente sincronizadas, mas todas devem terminar para que ocorra transição de estado.

Exemplo: Caixa automática.

Page 121: Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML 121

Sincronização de Eventos Concorrentes

Faça : entregar dinheiro

Faça : ejetar cartão

Pronta parareinicializar

Emitindo

cartão recolhido

dinheiro recolhido

Preparação