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 Calendário Carga horária: 25 horas Dias: 5/11, 12/11, 26/11, 3/12 e 10/12 Horário: das 12:40 às 18:00 Intervalos: das 14:20 às 14:30 e das 16:10 às 16:20 Divisão: 3 blocos de 100 minutos cada - das 12:40 às 14:20 - das 14:30 às 16:10 - das 16:20 às 18:00

3 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML3 Local Laboratório de treinamento da Allen- Productique: n Microsoft PowerPoint n ferramenta CASE com suporte à linguagem UML n ferramenta de compilação e execução de programas escritos na linguagem Java

4 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML4 Objetivo Habilitação no uso da linguagem UML na modelagem de software orientado a objetos

5 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML5 Método n Apresentação da teoria n Apresentação de exemplos e solução de exercícios utilizando as ferramentas disponíveis CASE e de programação n Aplicação da teoria na resolução de estudos de casos propostos pela Allen- Productique, do segundo ao último dia do curso, em paralelo à apresentação da teoria

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

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

8 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML8 Princípios de Orientação a Objetos (dia 1)

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

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

11 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML11 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.

12 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML12 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?

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

14 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML14 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]

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

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

17 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML17 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.

18 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML18 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.

19 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML19 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.

20 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML20 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.

21 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML21 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.

22 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML22 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.

23 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML23 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).

24 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML24 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.

25 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML25 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.

26 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML26 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.

27 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML27 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.

28 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML28 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.

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

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

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

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

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

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

35 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML35 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.

36 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML36 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;... }

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

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

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

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

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

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

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

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

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

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

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

48 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML48 Hierarquia de exceções...

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

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

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

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

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

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

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

56 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML56 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.

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

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

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

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

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

62 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML62 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( ) {} }

63 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML63 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() {} }

64 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML64 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;} }

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

66 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML66 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.

67 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML67 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.

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

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

70 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML70 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.

71 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML71 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.

72 Modelagem de Software Orientado a Objetos utilizando a Linguagem UML72 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 –...


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

Apresentações semelhantes


Anúncios Google