A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara.

Apresentações semelhantes


Apresentação em tema: "Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara."— Transcrição da apresentação:

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

2 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML2 Conteúdo Programático n princípios de O-O n método, casos de uso, classes n relacionamentos, restrições, interfaces, tipos parametrizados, estereótipos, pacotes n estados e eventos n seqüência, colaboração, atividades, componentes, implantação

3 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML3 Bibliografia Básica n UML Toolkit n UML in a Nutshell n Object-Oriented Software Construction n Modelagem de Objetos através da UML n Design Patterns: Elements of Reusable Object-Oriented Software n Modelagem e Projeto baseados em Objetos

4 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML4 Princípios de Orientação a Objetos

5 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML5 Sumário n Tipos de dados abstratos n Classes e instâncias n Operações e atributos n Construção de objetos n Referências para objetos n Pacotes de classes n Encapsulamento n Modos de visibilidade/acesso

6 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML6 Sumário n Asserções e invariantes de classe n Tratamento de exceções n Objetos compostos n Herança, sobrecarga, polimorfismo n Herança múltipla n Interfaces n Tipos parametrizados

7 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML7 Tipos de Dados Abstratos (ADT) n Um ADT é um modelo matemático para descrição de um tipo independente de sua representação física. n Um tipo é uma coleção de objetos caracterizados através de funções, axiomas e pré-condições. n Um objeto que pertence ao conjunto de objetos descritos por um ADT é dito ser uma instância do ADT.

8 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML8 Exemplo de ADT Pilha (Stack) n Opções de representação: –array –listas –... n Questão básica: Como definir formalmente uma pilha de forma independente de sua representação?

9 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML9 Exemplo de ADT Primeira Parte: Tipos Especificação ADT para pilhas n TYPES –STACK [G]

10 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML10 Exemplo de ADT Segunda Parte: Funções n FUNCTIONS –put: STACK[G] X G --> STACK[G] –remove: STACK[G] -/-> STACK[G] –item: STACK[G] -/-> G –empty: STACK[G] --> BOOLEAN –new: STACK[G]

11 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML11 Exemplo de ADT Terceira Parte: Axiomas n 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 ) )

12 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML12 Exemplo de ADT Quarta Parte: Pré-condições n PRECONDITIONS –remove ( s : STACK[G] ) require not empty(s) –item ( s : STACK[G] ) require not empty(s)

13 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML13 Modularização n 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. n Um ADT corresponde a um módulo de um sistema de software.

14 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML14 Classe n Uma classe é um tipo abstrato de dados equipado com uma implementação possivelmente parcial. n A definição de uma classe inclui uma lista de atributos e uma lista de operações. n Um sistema de software orientado a objetos é definido por um conjunto de classes.

15 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML15 Instância n Todo objeto é instância de alguma classe. n 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). n Toda execução é iniciada em um objeto raiz, com a chamada de uma de suas operações.

16 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML16 Classe X Objeto n Um classe é um elemento de construção de software. Portanto, é um elemento definido e criado estaticamente. n Um objeto é um elemento de run-time, isto é, só existe em tempo de execução de um sistema de software. Portanto, é criado dinamicamente.

17 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML17 Atributo n A definição de uma classe inclui uma lista de atributos. n Toda instância de uma classe contém todos os atributos definidos pela classe. n Cada atributo tem um nome, um tipo e, opcionalmente, um valor default. n O conjunto de valores dos atributos de um objeto define o seu estado.

18 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML18 Atributo n 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 n O valor de um atributo pode ser uma constante.

19 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML19 Operação n A definição de uma classe inclui uma lista de operações que correspondem à interface da classe. n Uma operação é uma função ou transformação que pode ser aplicada a todo e qualquer objeto de uma classe. n Uma operação tem um nome, uma lista de argumentos, um tipo de retorno e uma implementação (um método).

20 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML20 Operação n 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. n Operações são definidas e criadas estaticamente.

21 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML21 Construção de Objetos n Toda classe define um ou mais operações específicas para a criação (iniciação) de novos objetos, normalmente denominadas construtores da classe. n Toda vez que um novo objeto é criado, um construtor da correspondente classe deve ser selecionado para execução.

22 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML22 Referência para Objeto n Uma referência é um valor de run-time que pode ser void ou attached. n 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.) n Podem existir várias referências para um mesmo objeto. n Copiar uma referência é diferente de copiar um objeto.

23 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML23 Pacote de Classes n Classes podem ser logicamente organizadas em grupos denominados pacotes. n Pacotes são estrurados de forma hierárquica. n Há pacotes disponibilizados em bibliotecas. n Usuários podem criar seus próprios pacotes.

24 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML24 Encapsulamento n 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. n Os atributos de um objeto são manipulados (para leitura e escrita) somente por operações definidas para o objeto.

25 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML25 Modos de Visibilidade/Acesso n 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. n Modificadores: – private – protected – package – public

26 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML26 Modificador private n Um membro qualificado como private somente é acessível a partir de métodos da própria classe à qual pertence o membro.

27 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML27 Modificador public n Um membro qualificado como public é acessível a partir de qualquer operação de qualquer classe, independentemente de subclasse e de pacote.

28 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML28 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( ); } }

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

30 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML30 Modificador package n 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.

31 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML31 Modificador protected n 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.

32 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML32 Modificadores package e protected Exemplo 1 class 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;... }

33 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML33 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

34 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML34 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)

35 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML35 Asserções - Exemplos n {x >= 9} x := x + 5 {x >= 13} n {x >= 0} y := sqrt(x) { true } n {false} y := x * x { y >= 0 } n {not full} put(x : G) { not empty AND item = x AND count = old count + 1 }

36 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML36 Invariante de Classe n Uma invariante é uma propriedade inalterável durante todo o ciclo de vida de um objeto. n Exemplos: –0 <= count –count <= capacity –empty = (count = 0)

37 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML37 Tratamento de Exceção n 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. n Exemplos: entrada em formato inválido, arquivo corrompido, conexão de rede não disponível, índice inválido para vetor,...

38 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML38 Exemplo de código frágil class 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

39 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML39 Exemplo de código frágil class 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

40 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML40 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

41 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML41 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

42 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML42 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

43 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML43 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

44 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML44 Hierarquia de exceções...

45 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML45 A cláusula throws class 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

46 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML46 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

47 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML47 Definindo suas próprias exceções class ProblemaEmWork extends Exception { public ProblemaEmWork( ) { } public ProblemaEmWork(String msg) { super(msg); } } // continua

48 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML48 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

49 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML49 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

50 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML50 Objeto Composto n Um objeto pode conter uma referência para outro objeto, recursivamente. Nesse caso, o objeto é dito ser composto ou complexo.

51 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML51 Generalização n Relacionamento entre uma classe e uma ou mais versões refinadas ou especializadas da classe. n Especialização: relacionamento inverso n Superclasse: versão mais abstrata de outra classe, a subclasse n Subclasse: versão mais refinada de outra classe, a superclasse

52 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML52 Herança n Mecanismo baseado em objetos que permite que as classes compartilhem atributos e operações baseados em um relacionamento, geralmente generalização. n Uma subclasse herda atributos e operações da superclasse.

53 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML53 Classes Abstratas e Concretas n 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) n Classe concreta: classe que pode ter instâncias diretas; não pode definir operações abstratas

54 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML54 Interface n Um classe totalmente abstrata é dita ser uma interface. n A definição de uma interface não inclui qualquer implementação.

55 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML55 Interfaces - definição básica - n Uma interface possui um nome, e define apenas métodos abstratos e constantes (descreve uma abstração, normalmente um comportamento) n Uma interface não pode ser instanciada n Uma interface pode ser implementada por uma ou mais classes n Cada classe pode estender somente uma classe, mas pode implementar diversas interfaces (alternativa para a falta de herança múltipla em Java)

56 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML56 Interfaces - definição básica - n 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) n Uma interface pode estender uma ou mais interfaces n 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

57 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML57 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 }

58 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML58 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 {publicint f( ) { return k; } publicvoid g( ) {} }

59 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML59 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 {publicint f( ) { return F.k;} publicint h( ) { return H.k;} publicvoid g() {} }

60 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML60 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 {publicint f( ) { return F.k;} publicint h( ) { return H.k;} }

61 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML61 Sobrecarga n Atributos e operações podem ser redefinidos (sobrecarregados) por subclasses.

62 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML62 Sobrecarga para extensão n A nova operação é igual à operação herdada, exceto pelo fato de acrescentar alguns detalhes de comportamento, normalmente afetando novos atributos da subclasse.

63 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML63 Sobrecarga para restrição n A nova operação restringe o protocolo (assinatura da operação), podendo reduzir os tipos de argumentos. n A operação herdada fica fechada (restrita) dentro de cada subclasse específica.

64 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML64 Sobrecarga para otimização n O novo método tem o mesmo protocolo externo e apresenta o mesmos resultados n A implementação do novo método (algoritmo utilizado) pode ser completamente diferente

65 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML65 Sobrecarga por conveniência n Emprego adhoc de herança para reutilizar classes. n Uma nova classe é tornada subclasse de uma classe existente e substitui os métodos inconvenientes. n Semanticamente errado e conduz a problemas de manutenção; recomenda- se criar uma terceira classe (superclasse das demais)

66 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML66 Polimorfismo n Assume muitas formas n A propriedade segundo a qual uma operação pode comportar-se diferentemente em classes diferentes. n A subclasse redefine a implementação de uma operação herdada da superclasse. n Onde se espera uma instância de um certa classe pode aparecer uma instância de qualquer subclasse daquela classe.

67 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML67 Herança Múltipla n Uma classe possui mais de uma subclasse e herda características de todos os seus ancestrais. n Maior capacidade de especificação de classes. n Maior oportunidade de reutilização. n Perda em simplicidade conceitual e de implementação.

68 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML68 Tipo Parametrizado n Um tipo pode receber como parâmetro uma lista de tipos. n Exemplos: –pilha de inteiros –pilha de reais –pilha de pessoas –...

69 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML69 Modelagem Orientada a Objetos Use-Case Modeling

70 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML70 Objetivos básicos de um modelo use-case n Descrever o que um novo sistema deve fazer n Descrever o que um sistema existente faz n Formalizar os requisitos de um sistema, normalmente obtidos através de discussões entre os desenvolvedores e os clientes (usuários) do sistema.

71 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML71 Componentes de um use- case n 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). n 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

72 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML72 O componente use case n Um use case representa uma funcionalidade completa (mas pode haver dependências entre os diversos use-cases de um sistema) n Um use case sempre faz algo solicitado por um actor e retorna alguma coisa para esse actor

73 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML73 O componente actor n Um actor é uma entidade externa ao sistema que interage com o sistema. n Um actor é normalmente um ser humano, mas pode ser outro sistema ou alguma espécie de hardware que interage com o sistema.

74 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML74 Outros objetivos de use- case n Fornecer uma base para a realização de testes do sistema. n 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 n Ser a base para definição das classes do sistema e para definição da dinâmica do sistema.

75 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML75 Exemplo de diagrama use- case Sistema de Seguros

76 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML76 Mais sobre actors n Um actor é uma classe no diagrama em UML n 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.

77 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML77 Mais sobre use-cases n 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". n 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".

78 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML78 Modelagem Orientada a Objetos Relacionamentos

79 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML79 Conteúdo n Ligação entre objetos n Associação entre classes n Agregação n Multiplicidade e Papel n Atributo de ligação n Associação como uma classe n Associações ternárias n Ordenação em associações n Associação qualificada

80 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML80 Ligação n Uma conexão física ou conceitual entre objetos n Exemplo: O país Brasil tem como capital a cidade de Brasília. n Exemplo: O funcionário João trabalha na empresa Transamérica S.A. n Exemplo: O artigo OO Solutions foi publicado na conferencia OOPSLA99.

81 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML81 Associação n Relacionamento entre instâncias de duas ou mais classes descrevendo um grupo de ligações com estrutura e semântica comuns. n Exemplo: Um país tem como capital uma cidade. n Exemplo: Um funcionário trabalha numa empresa.

82 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML82 Agregação n Forma especial de associação, entre o todo e suas partes, na qual o todo é composto pelas partes n Também chamada de herança horizontal n Exemplo: Um artigo é publicado em uma conferência, isto é, o artigo faz parte da conferência (ou dos anais da conferência).

83 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML83 Multiplicidade e Papel n Multiplicidade: Número de instâncias de uma classe que podem se relacionar a uma única instância de um classe associada (ou agregada). n Papel: nome que identifica inequivocamente uma extremidade de uma associação.

84 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML84 Atributo de Ligação n Um valor de dados presente em cada ligação (nível de instâncias) de uma associação (nível de classes) n Uma propriedade da ligação entre objetos, e não dos objetos ligados, propriamente ditos n 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

85 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML85 Associação como uma Classe n Cada ligação de uma associação é uma instância de uma classe n Uma ligação é um objeto, com atributos e métodos n Útil quando ligações podem participar em associações com outros objetos n Útil quando ligações sofrem operações n Exemplo: autorização para usuários em estações de trabalho

86 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML86 Associação Ternária n Representa ligações entre 3 objetos n Não pode ser dividida em associações binárias sem que haja perda de informações n Associações de grau maior que 3 são raras e devem ser evitadas devido a complexidade de entendimento e implementação n Exemplo: pessoas que são programadoras usam linguagens de programação em projetos

87 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML87 Ordenação em Associações n Em alguns casos o conjunto de objetos associados a um certo objeto apresenta uma ordem n A palavra "ordenado" deve aparecer junto à multiplicade "muitos" de uma associação para indicar que existe uma ordem entre os objetos ligados n Exemplos: as janelas visíveis em uma tela possuem uma ordem; os vértices de um polígono

88 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML88 Associação Qualificada n Relaciona dois objetos e um qualificador n O qualificador reduz a multiplicidade n 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) n Maior precisão na informação!!

89 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML89 Uso de Agregação n Na dúvida, use associação! n Herança não representa o relacionamento parte-todo n Agregados recursivos são frequentes n Agregação normalmente implica em propagação de operações

90 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML90 Modelagem Orientada a Objetos Modelagem Dinâmica Diagrama de Seqüência

91 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML91 Objetivos de um diagrama de seqüência n Ilustrar como objetos interagem entre si. n 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

92 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML92 Modelagem Orientada a Objetos Modelagem Dinâmica Diagrama de Estados

93 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML93 Objetivos de um diagrama de estados n Representar o comportamento dinâmico de classes individuais n Representar o comportamento dinâmico de colaboração entre classes

94 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML94 Elementos de um diagrama de estados n os estados possíveis para os objetos de uma certa classe n as transições de estado n os eventos que causam transições de estados n as ações decorrentes de –uma transição de estado –entrada em um estado –saída de um estado n 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

95 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML95 Diagramas de Estados n Relaciona eventos e estados n Um objeto muda de estado dependendo do evento e do estado atual. n Transição: modificação de estado causada por um evento (mesmo quando estado final e inicial coincidem). n Um evento pode ser irrelevante para um objeto em um certo estado. n Exemplo: linha telefônica

96 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML96 Diagramas de Estados Exemplo : Linha telefônica Inativa Sinal de discar Ligando Tocando Interligando Desligando Queda- da-linha Mensagem gravada Sinal de ocupado Sinal de ocu- pado rápido no-gancho dígito( n ) no-gancho Discando Mensagem terminada 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

97 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML97 Diagramas de Estados Exemplo : jogo de xadrez Vez das brancas Vez das pretas brancas jogam pretas jogam Início cheque-mate empate forçado cheque-mate Pretas vencem Brancas vencem Empate Diagrama de estados de uma só passagem para um jogo de xadrez

98 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML98 Diagramas de Estados Exemplo : Veículo Leste / Oeste podem dobrar à esquerda tempo decorrido Diagrama de estados com transições guardadas Leste / Oeste podem ir em frente Norte / Sul podem ir em frente tempo decorrido [ carros nas vias esquerdas N / S ] tempo decorrido [ carros nas vias esquerdas L / O ] tempo decorrido tempo decorrido [ sem carros nas vias esquerdas N / S ] Norte / Sul podem dobrar à esquerda tempo decorrido [ sem carros nas vias esquerdas L / O ]

99 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML99 Tipos de diagramas de estados n Diagrama de laço contínuo: representa um ciclo de vida; sem estado inicial ou final. Exemplo: linha telefônica. n 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). n Exemplo: jogo de xadrez

100 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML100 Condições n Uma condição é uma função booleana de valores, válida dentro de um intervalo de tempo. n 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. n Exemplo: Pessoa com relação ao atributo "estar de luvas".

101 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML101 Controle de Operações n 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. n Definem o comportamento do objeto!

102 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML102 Atividade n Está sempre vinculada a um estado n Consome tempo para se completar n É executada continuamente durante o tempo em que o objeto está num certo estado n Notação:faça: atividade n Exemplo: Um vendedor logo após ter recebido dinheiro para pagamento do item vendido deve calcular o troco. faça: calcular troco

103 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML103 Ação n Está normalmente vinculada a um evento, mas também pode estar vinculada a um estado (ações de entrada, saída e internas) n É executada "instantaneamente" n Notação:evento / ação n Exemplo: Exibir um menu quando o botão direito do mouse é pressionado. botão direito pressionado / exibir menu

104 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML104 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

105 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML105 Diagrama de Estados com Operações Notação Estado 1 faça : atividade 1 Evento 1 ( atributos ) [ condição 1 ] / ação 1 Estado 2...

106 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML106 Diagramas de Estados Nivelados n Permitem refinamentos sucessivos do modelo dinâmico n Permitem uma descrição estruturada do sistema n Pode-se expandir: –um evento e sua correspondente ação –uma atividade realizada em um certo estado n Exemplo: Máquina de vender

107 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML107 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 : entregar item faça : preparar troco faça : testar item e calcular troco [ troco = 0 ] [ troco < 0 ] Selecionar ( item ) [ item vazio ] cancelar / devolver moedas

108 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML108 Diagramas de Estados Nivelados Exemplo : máquina de vender Faça : mover braço para a fileira correta faça : preparar item Faça : mover braço para a coluna correta faça : empurrar item para fora da prateleira 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

109 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML109 Generalização de Estados n Os estados de um objeto podem ser organizados de forma hierárquica, em super-estados e sub-estados. n 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. n 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. n Exemplos: linha telefônica, transmissão automática de um automóvel

110 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML110 Generalização de Estados Exemplo : transmissão de um carro Primeira SegundaTerceira sobe Neutro Ré apertar R apertar N reduz sobe reduz Para a frente pára apertar F apertar N

111 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML111 Generalização de Eventos n Os eventos que ocorrem em um sistema podem ser organizados de forma hierárquica, em super-eventos e sub-eventos. n Um sub-evento herda atributos do super-evento. n Onde um evento é descrito qualquer sub-evento seu é implicitamente descrito. n A generalização de eventos facilita a abstração e permite concisão na representação de diagramas. n Exemplo: Entrada do usuário.

112 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML112 Generalização de Eventos Exemplo : eventos de teclado evento Entrada do usuário Botão do mouse apertado controlegráfico espaçoalfanuméricopontuação tempo dispositivo Botão do mouse localização caracter do teclado caracter Botão do mouse liberado Hierarquia parcial de eventos para eventos de teclado

113 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML113 Concorrência de Agregação n O estado de um objeto composto (um agregado) é determinado pelos estados dos objetos que o compõem. n Exemplo: O estado de um carro é determinado pelo estado da ignição, da transmissão, do freio, do acelerador, do motor,... n 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. n A interação entre diagramas de estados de componentes é representada através de eventos compartilhados e/ou condições de guarda.

114 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML114 Concorrência de Agregação Carro IgniçãoTransmissãoFreioAcelerador Desligada PartidaLigada Girar chave para dar partida [ transmissão em Neutro ] desligar a chave liberar chave Ignição Desligado Ligado apertar acelerador apertar freio liberar aceleradorliberar freio Acelerador Freio Desligado Partido

115 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML115 Concorrência Interna de Objetos n O diagrama de estados de um objeto pode ser particionado de acordo com atributos e ligações em sub-diagramas. n O estado do objeto compreende um estado de cada sub-diagrama. n Um mesmo evento pode causar transições em mais de um sub-diagrama. n Exemplo: Jogo de bridge rubber.

116 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML116 Concorrência Interna de Objetos Não 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

117 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML117 Transição Automática n Disparada quando a atividade vinculada a um estado termina n O "evento" que causa a transição é o término da atividade n Exemplo: Máquina de vender no estado correspondente a atividade testar item e calcular troco pode disparar uma de quatro transições automáticas.

118 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML118 Ações de Entrada e de Saída n Ações vinculadas ao ato de entrar ou sair de um estado n Não adicionam poder de expressão, mas permitem uma representação mais concisa n Exemplo: Controle de uma porta de garagem

119 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML119 Envio de Eventos n Uma ação pode ser especificada como enviar um certo evento para outro objeto. n Notação:enviar E (atributos) (palavra enviar pode ser omitida) n 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)

120 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML120 Sincronização de Eventos Concorrentes n Um objeto pode executar várias atividades de forma concorrente (paralela). n As atividades não são necessariamente sincronizadas, mas todas devem terminar para que ocorra transição de estado. n Exemplo: Caixa automática.

121 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML121 Sincronização de Eventos Concorrentes Faça : entregar dinheiro Faça : ejetar cartão Pronta para reinicializar Emitindo cartão recolhido dinheiro recolhido Preparação


Carregar ppt "Modelagem de Software Orientado a Objetos utilizando a Linguagem UML1 Alcides Calsavara."

Apresentações semelhantes


Anúncios Google