Anda di halaman 1dari 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 2

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 3

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 5

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 6

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 7

Exemplo de ADT Pilha (Stack)

Opes de representao:
array listas ...

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

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.
22

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

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
25

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

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

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

Modificadores public e private Exemplo 2

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 1 class Veiculo { Exemplo int ano; // package


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 package Basico;Exemplo // arquivo 1 2


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
41

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

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 IOExcepti on

...
44

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

...

...

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");} }
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

// continua
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
53

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

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
56

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

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; recomendase 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.
66

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

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

um conjunto de use cases

Componentes de um usecase
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 use-case


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.
74

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

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".
77

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

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
86

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

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
95

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

Diagramas de Estados Exemplo : Linha telefnica


no-gancho Inativa fora-do-gancho Sinal de discar no-gancho queda-da-linha Quedada-linha

dgito( n )
Sinal de ocupado Sinal de ocupado rpido nmero ocupado

dgito( n ) Discando nmero vlido Ligando encaminhado Tocando

nmero Mensagem gravada invalido

tronco ocupado

telefone chamado atende Interligando telefone chamado desliga Desligando


Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

Mensagem terminada

96

Diagramas de Estados Exemplo : jogo de xadrez


Diagrama de estados de uma s passagem para um jogo de xadrez
Incio Pretas vencem Empate empate forado Vez das pretas Brancas vencem

Vez das brancas pretas jogam brancas jogam

cheque-mate empate forado

cheque-mate

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

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

tempo decorrido

tempo decorrido

Leste / Oeste podem dobrar esquerda

tempo decorrido [ carros nas vias esquerdas L / O ]

Leste / Oeste podem ir em frente


98

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

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
99

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

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".
100

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

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
102

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

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


Inativo Menu visvel

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
Evento 1 ( atributos ) [ condio 1 ] / ao 1

Estado 1 faa : atividade 1

Estado 2 ...

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

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

Diagramas de Estados Nivelados Exemplo : mquina de vender


moedas introduzidas ( quantia ) verificar saldo
Inativa

cancelar / devolver moedas

Recolhendo dinheiro moedas introduzidas ( quantia ) / acrescentar ao saldo


Selecionar ( item ) [ troco < 0 ]

[ item vazio ]

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

Diagramas de Estados Nivelados Exemplo : mquina de vender


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

brao pronto

empurrado
faa : empurrar item para fora da prateleira

Faa : mover brao para a coluna correta

Transio selecionar item da mquina de vender


faa : preparar item

dgito( n ) Selecionar( item )


faa : acrescentar dgito

dgito( n ) clear

enter
108

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

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
109

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

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

apertar N apertar N Para a frente pra


Primeira

apertar F

sobe
Segunda

sobe
Terceira

reduz

reduz

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

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 Hierarquia parcial de eventos para eventos de teclado

Boto do mouse localizao Boto do mouse apertado Boto do mouse liberado

caracter do teclado caracter controle grfico

espao

alfanumrico

pontuao
112

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

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
Ignio
Desligada

Transmisso

Freio

Acelerador
liberar chave

Girar chave para dar partida [ transmisso em Neutro ] Partida

Ligada

desligar a chave
Acelerador apertar acelerador Freio Ligado Desligado apertar freio liberar freio
114

Desligado

Partido

liberar acelerador
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

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 L - O vence rubber
116

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

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.
117

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

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)
119

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

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
dinheiro recolhido
Pronta para reinicializar
Faa : ejetar carto

Faa : entregar dinheiro

Preparao

carto recolhido

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML

121

Anda mungkin juga menyukai