Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
2ª - Análise Orientada a Objetos/Trabalho_AP2 - 05 5ANOO-NT1.pdf Trabalho Acadêmico Justificativa: Proporcionar ao aluno contato com a pesquisa sobre alguns dos principais conceitos tecnológicos utilizados no mercado. Objetivo geral: Fazer com que o aluno pesquise alguns dos principais conceitos tecnológicos usados no mercado. Objetivos específicos: Proporcionar ao aluno a pesquisa de alguns dos principais conceitos tecnológicos muito utilizados no mercado de forma abrangente e sistêmica. Metodologia: Pesquisa bibliográfica e internet. Conteúdo: Conceitos de: - Diagrama de classes; - Diagrama de objetos; - Diagrama de sequência; - Diagrama de máquina de estado; - Diagrama de atividade; - Diagramas de componentes. Divisão: Introdução, desenvolvimento, conclusão e referências bibliográficas. Pontos: 3 Data de entrega: até 22/05/2018 Equipe de até 4 alunos. 2ª - Análise Orientada a Objetos/01 - Analise Orientada a Objetos - Conceitos.pdf 1 Análise Orientada a Objetos - Conceitos Análise Orientada a Objetos - Conceitos 2 Análise Orientada a Objetos - Conceitos BIBLIOGRAFIAS BÁSÍCA 1. SANTOS, RUI ROSSI DOS. Programação de Computadores em Java. Ed. Novaterra, 2014 2. DEITEL, H. M. & DEITEL, P. J. Java: Como Programar. 10ª Ed. Pearson, 2016. 3. SANTOS, RAFAEL. Introdução à Programação Orientada a Objetos. 2ª Ed. Campus, 2013. Análise Orientada a Objetos - Conceitos Linguagem Java - Foi lançada em 1995 baseada na idéia de que um software deveria ser capaz de rodar em diferentes dispositivos. 3 Análise Orientada a Objetos - Conceitos - Os programas feitos em Java rodam em diferentes ambientes graças a um componente da plataforma chamado JVM (Java Virtual Machine) – que é um tipo de tradutor de código Java para instruções específicas de cada sistema e dispositivo. Análise Orientada a Objetos - Conceitos Vantagens da Linguagem Java - Custo - Arquitetura - Portabilidade - Padronização - Reusabilidade - Escalabilidade - Liberdade de Escolha - Suporte 4 Análise Orientada a Objetos - Conceitos Ambiente Java é basicamente, dividida em: - Java Standard Edition (JSE) Core – base do desenvolvimento Java (desktop) - Java Enterprise Edition (JEE) Aplicações corporativas, distribuídas - Java Micro Edition (JME) Aplicações para dispositivos móveis Análise Orientada a Objetos - Conceitos - Estrutura de um Programa em Java class <nome> { public static void main (String[ ] args){ <declarações> <comandos> } } - Cada programa é uma classe - Programa fonte tem extensão .java e o compilado (bytecode) tem extensão .class - A linguagem é case sensitive - Nome da classe no programa deve ser igual ao nome do arquivo físico .java - Convenção de Código Java (Code Conventions) 5 Análise Orientada a Objetos - Conceitos Primeiro Programa em Java - public é um especificador, por enquanto guarde public class como o início da declaração de uma classe. - class é a palavra reservada que marca o inicio da declaração de uma classe. - PrimeiroPrograma é o nome dado a esta classe. - O “abre chaves” marca o início das declarações da classe que são os atributos e métodos. Esta classe só possui uma declaração, a do método main. Desta forma, todo pedaço de código em Java deve pertencer ao abre chaves, fecha chaves da definição de uma classe. Análise Orientada a Objetos - Conceitos Primeiro Programa em Java - public é um qualificador do método que indica que este é acessível externamente a esta classe (por outras classes) - static é um outro qualificador, que indica que o método deve ser compartilhado por todos os objetos que são criados a partir desta classe - void indica que o método não retorna nenhum valor 6 Análise Orientada a Objetos - Conceitos Primeiro Programa em Java - main é um nome particular de método que indica para o compilador o início do programa, é dentro deste método e através das iterações entre os atributos, variáveis e argumentos visíveis nele que o programa se desenvolve. - (String args[]) é o argumento de main e por consequência do programa todo, ele é um vetor de Strings que é formado quando são passados ou não argumentos através da invocação do nome do programa na linha de comando do sistema operacional, exemplo: java PrimeiroPrograma argumentotexto1 argumentotexto2 Análise Orientada a Objetos - Conceitos Primeiro Programa em Java - System.out.println(“Meu primeiro programa em Java"); Chamada do método println para o atributo out da classe ou objeto System, o argumento é uma constante do tipo String. println imprime a String e posiciona o cursor na linha abaixo. Por hora você pode guardar esta linha de código como o comando para imprimir mensagens na tela, onde o argumento que vem entre aspas é a String a ser impressa. O ; “ponto e vírgula” separa operações. 7 Análise Orientada a Objetos - Conceitos - Exercício: Abra o Editor e escreva o programa o Primeiro Programa: - Atere o programa para que escreva: Nome : Seu nome Data Nascimento: Sua data de Nascimento Idade: Sua idade Análise Orientada a Objetos - Conceitos Revisão de java (cont.) - Identificadores - Comandos - Comentários - Expressões e Operadores - Variáveis - Estruturas de Controle (Decisão e Repetição) 8 Análise Orientada a Objetos - Conceitos Identificadores As regras para nomeação de identificadores (variáveis, nomes de função, classes ou label) seguem a seguinte regra: • nomes devem começar com letra ou os caracteres _ ou $ • os caracteres seguintes podem conter números, letras, _ ou $ Ex: Valor $preco 20itens _teste S1mb010 JAVA Observação: O Java considera diferença entre maiúsculas e minúscula. Análise Orientada a Objetos - Conceitos Identificadores - Convenções (boas práticas) - Primeira letra minúscula (ex: conta) - Palavras compostas a segunda começa com letra maiúscula (ex: numeroConta) - Constantes todas as letras maiúsculas: MAX_VALOR - Os comandos são terminados por “;” 9 Análise Orientada a Objetos - Conceitos Comentários Java possui três tipos de comentário, tudo o que for comentário é ignorado pelo compilador servindo como documentação do programa. - Comentário de uma linha: utiliza-se // antes do início do mesmo, pode ser usado em qualquer parte da linha. Ex: // Declaração de Variáveis System.out.println(“Primeiro Programa”); //Imprime na tela - Comentário de mais de uma linha: utiliza-se /* no início do mesmo e */ no final. Ex: /* Este comentário ficará visível somente no código, pois o compilador ignorará completamente este trecho entre os delimitadores */ Análise Orientada a Objetos - Conceitos Comentários - Comentário de documentação: utilizado para a geração de informações automáticas e padronizadas sobre a classe e seus atributos, através do javadoc. Inicia com /** e finaliza com */. Ex: /** Descrição: Descrição do funcionamento da classe Autor: nome do Autor Data: data da última atualização */ 10 Análise Orientada a Objetos - Conceitos Caracteres Especiais Caractere Significado \n Nova Linha (Enter) \t Tab (10 espaços) \b Backspace (retorna 1 caractere) \r Retorno (início da linha) \f Formfeed (avança 1 página na impressora) \\ Barra Invertida \’ Apóstrofe \” Aspas Análise Orientada a Objetos - Conceitos Operadores Aritméticos Operador Significado + Soma - Subtração * Multiplicação / Divisão % Módulo 11 Análise Orientada a Objetos - Conceitos Atribuição Expressão Significado x += y x = x + y x -= y x = x - y x *= y x = x * y x /= y x = x / y Análise Orientada a Objetos - Conceitos Incremento e decremento Expressão Significado y = x++ Recebe o valor de x ANTES do incremento y = --x Recebe o valor de x DEPOIS do decremento 12 Análise Orientada a Objetos - Conceitos Operadores de Comparação Operador Significado Exemplo == Igual x == 3 != Diferente (não igual) x != 3 < Menor que x < 3 > Maior que x > 3 <= Menor ou igual a x <= 3 >= Maior ou igual a x >= 3 Análise Orientada a Objetos - Conceitos Operadores Lógicos Operador Significado && Operador E (AND) || Operador OU (OR) ! Operador NÃO (NOT) & Comparação bit a bit E (AND) | Comparação bit a bit E (OU) ^ Comparação bit a bit OU-Exclusivo 13 Análise Orientada a Objetos - Conceitos Variáveis - Devem ser declaradas antes de serem usadas - Devem ter um tipo definido (o tipo não muda) - Devem ter seu valor iniciado antes de usá-la - Deve ser usada dentro do escopo (método ou bloco) Tipo Tamanho Valor Valor (bits) Mínimo Máximo boolean 1 false true char 16 0 215-1 byte 8 -27 27-1 short 16 -215 215-1 int 32 -231 231-1 long 64 -263 263-1 float 32 double 64 Análise Orientada a Objetos - Conceitos Variáveis - Devem ser declaradas antes de serem usadas - Devem ter um tipo definido (o tipo não muda) - Devem ter seu valor iniciado antes de usá-la - Deve ser usada dentro do escopo (método ou bloco) - Declaração: <tipo da variável> <nome da variável>; - Declaração e atribuição: <tipo> <nome> = <valor>; Exemplo: int saldo; double PI = 3.1416; 14 Análise Orientada a Objetos - Conceitos String String é uma classe que manipula cadeias de caracteres. A classe String possui métodos para essas manipulações. Exemplo: String str = “Isto é uma String do Java”; String nomeCliente=“Luis”, endereço, localTrabalho; str.equals( str2 ) - Comparação entre Strings str.length() – Tamanho da String str.substring(0, 10) - string começando em 0 e terminando em 9 str.charAt(5) – Caractere na posição 5 str.indexOf(“uma”); - retorna a posição da palavra na String str.replace(‘a’,’@’); - substitui “a” por “@” str.replaceAll(“String”,”Cadeia de caracteres”); - Substitui uma palavra Análise Orientada a Objetos - Conceitos Exercício: 1. Sabendo que a área do círculo é dada pela fórmula: A=PI*r2 Onde PI=3.1416 e r é o raio da circunferência 2. Crie um novo projeto chamado areaCirculo seguindo a convenção para nomear os identificadores 3. Crie um comentário multilinha identificando a função da classe, seu nome e a data atual. 4. Declare três variáveis dentro do método main, duas com valor (pi e raio) e uma para a area. Faça um comentário explicando a finalidade de cada variável. 5. Calcule e escreva na tela o valor da área para as circunferências de raio 3, 5, e 9. R3 = 28,2744 R5 = 78,54 R9 = 254.4696 15 Análise Orientada a Objetos - Conceitos Estrutura de Controle – Decisão - IF - Sintaxe: If (condição) <instrução>; else --->opcional <instrução>; - Exemplo: if ( x < y) System.out.println(“ x e menor do que y”); else System.out.println(“ y e maior); Análise Orientada a Objetos - Conceitos Exercício: O valor do ingresso em um cinema é definido de acordo com a idade do público. A tabela é a seguinte: - Menores de até 14 anos : R$ 5,00; - De 15 a 21 anos: R$ 10,00; - De 22 a 50 anos: R$ 15,00; - Maiores de 50 anos são isentos. Faça um programa que receba uma idade em uma variável e escreva o valor do ingresso (comentando e seguindo as convenções) 16 Análise Orientada a Objetos - Conceitos Solução: public class cinema { public static void main( String[] args ) { int idade = 20; if( idade <= 14 ) { System.out.println( “R$ 5,00" ); } if( idade > 14 && idade <= 21 ) { System.out.println( “R$ 10,00" ); } if( idade > 21 && idade <= 50 ) { System.out.println( “R$ 15,00" ); } if( idade >50 ){ System.out.println( "Isento" ); } } } Análise Orientada a Objetos - Conceitos Estrutura de Controle – Decisão - SWITCH - Sintaxe: switch(variável) case (valor): ... - Exemplo: ... switch(i) { case 0: System.out.println(“zero”); break; case 1: System.out.println(“um”); break; default:System.out.println(“n”); } 17 Análise Orientada a Objetos - Conceitos Estruturas de Repetição - Sintaxe: while (condição) do <instrução>; <instrução>; while (condição) - Exemplo: ... int i=0, s=0; while (i<10) { System.out.println(i); Instrução Composta ou em Bloco s = s + i; //ou s+=i; i = i + 1; //ou i++; } System.out.println(i + s); Análise Orientada a Objetos - Conceitos Estruturas de Repetição (cont.) - Sintaxe: for(inicialização; condição; incremento) <instrução>; - Exemplo: ... for(int i=0; i<3; i++) System.out.println(i); 18 Análise Orientada a Objetos - Conceitos Estruturas de Repetição (cont.) - Break e Continue - A instrução break ocasiona a saída imediata das estruturas while, for, do/while ou switch - A instrução continue desconsidera as instruções restantes de um laço e prossegue com a próxima iteração - Exemplo: ... ... int i = 0; int i = 0; while( i < 10 ){ while( i < 10 ){ if( i == 5 ) if( i==5 ) { break; i++; System.out.println(i); continue; i++; } } System.out.println(i); System.out.println(i); i++; }// end while Análise Orientada a Objetos - Conceitos Exercício: Crie um programa que exiba na tela os números ímpares de 1 a 200. Separando-os por vírgulas. (Use print no lugar de println) Ex: 1, 3, 5,7,9,11,13... 19 Análise Orientada a Objetos - Conceitos Solução: public class numerosImpares { public static void main( String[] args ) { int i = 1; do { System.out.print( i + ”,”); i=i+2; } while( i <= 200 ); } } Análise Orientada a Objetos - Conceitos Exercício: Um sistema de pesquisa deve levantar os seguintes dados de 5 candidatos: Nome, idade e sexo. Com esses dados deve ser apresentado: - Nome e idade de cada um - Percentual de indivíduos do sexo masculino - Percentual de indivíduos com idade superior a 28 anos - A idade média do grupo OBS: Usar estrutura de repetição 20 Análise Orientada a Objetos - Conceitos Para usar recursos de GUI, os seguintes comandos podem ser adotados. - javax.swing.JOptionPane.showInputDialog (<Msg>); - javax.swing.JOptionPane.showMessageDialog(null,<Msg>,"Informação", javax.swing.JOptionPane.INFORMATION_MESSAGE); Exemplo: ... nome = javax.swing.JOptionPane.showInputDialog("Nome da pessoa:"); sexo = javax.swing.JOptionPane.showInputDialog("Sexo da pessoa:"); javax.swing.JOptionPane.showMessageDialog (null, nome, "Nome da Pessoa", javax.swing.JOptionPane.INFORMATION_MESSAGE); javax.swing.JOptionPane.showMessageDialog (null, sexo, "Sexo de "+nome, javax.swing.JOptionPane.INFORMATION_MESSAGE); Análise Orientada a Objetos - Conceitos Solução: import com.sun.org.apache.xpath.internal.operations.Div; import java.text.DecimalFormat;; public class calcularPercentual { /** * Listar Nome e Sexo de 5 (cinco) pessoas * * Aluno: João Roberto * Data: 31/03/2009 */ public static void main(String[] args) { // TODO Auto-generated method stub String nome, sexo; int idade; int cont = 0, somaIdade = 0, contM = 0, contI = 0; double percentM = 0.0, percentI = 0.0, idadeM = 0.0; do { cont = cont + 1; nome = javax.swing.JOptionPane.showInputDialog("Nome da "+cont+" pessoa:"); idade = Integer.parseInt(javax.swing.JOptionPane.showInputDialog("Idade da "+cont+" pessoa:")); sexo = javax.swing.JOptionPane.showInputDialog("Sexo da "+cont+" pessoa:"); javax.swing.JOptionPane.showMessageDialog(null, nome, "Nome da Pessoa", javax.swing.JOptionPane.INFORMATION_MESSAGE); javax.swing.JOptionPane.showMessageDialog(null, idade, "Idade da Pessoa", javax.swing.JOptionPane.INFORMATION_MESSAGE); javax.swing.JOptionPane.showMessageDialog(null, sexo, "Sexo de "+nome, javax.swing.JOptionPane.INFORMATION_MESSAGE); if (sexo.equals("M") || sexo.equals("m")){ contM = contM + 1; } if (idade > 28){ contI = contI + 1; } 21 Análise Orientada a Objetos - Conceitos Solução (cont.): somaIdade = somaIdade + idade; } while (cont < 5); DecimalFormat df = new DecimalFormat("0.##"); percentM = (contM / 5.0) * 100; javax.swing.JOptionPane.showMessageDialog(null, df.format(percentM)+"%","Percentual Sexo masculino", javax.swing.JOptionPane.INFORMATION_MESSAGE); percentI = (contI / 5.0) * 100; javax.swing.JOptionPane.showMessageDialog(null, df.format(percentI)+"%","Percentual de indivíduos com idade > 28 anos", javax.swing.JOptionPane.INFORMATION_MESSAGE); idadeM = somaIdade / 5.0; javax.swing.JOptionPane.showMessageDialog(null, df.format(idadeM),"A idade média do grupo", javax.swing.JOptionPane.INFORMATION_MESSAGE); } } Análise Orientada a Objetos - Conceitos Orientação a Objetos 22 Análise Orientada a Objetos - Conceitos Orientação a Objetos Análise Orientada a Objetos - Conceitos Orientação a Objetos 23 Análise Orientada a Objetos - Conceitos Orientação a Objetos Análise Orientada a Objetos - Conceitos Objetos 24 Análise Orientada a Objetos - Conceitos Objetos Análise Orientada a Objetos - Conceitos Objetos 25 Análise Orientada a Objetos - Conceitos Objetos Análise Orientada a Objetos - Conceitos Objetos 26 Análise Orientada a Objetos - Conceitos Classes Análise Orientada a Objetos - Conceitos Classes 27 Análise Orientada a Objetos - Conceitos Classes Análise Orientada a Objetos - Conceitos Classes 28 Análise Orientada a Objetos - Conceitos Classes em Java Análise Orientada a Objetos - Conceitos Classes em Java 29 Análise Orientada a Objetos - Conceitos Utilizando o Tipo Abstrato de Dados Análise Orientada a Objetos - Conceitos Lab. 01 - Crie um TAD contaCorrente, sem nenhum conteúdo; - Crie uma classe aplicativo umaContaCorrente, nesta classe crie um objeto do tipo contaCorrente. 30 Análise Orientada a Objetos - Conceitos Atributos Análise Orientada a Objetos - Conceitos Acessando Membros de Objetos 31 Análise Orientada a Objetos - Conceitos Atributos Análise Orientada a Objetos - Conceitos Lab. 02 32 Análise Orientada a Objetos - Conceitos Métodos Análise Orientada a Objetos - Conceitos Métodos 33 Análise Orientada a Objetos - Conceitos Métodos Análise Orientada a Objetos - Conceitos Métodos 34 Análise Orientada a Objetos - Conceitos Métodos Análise Orientada a Objetos - Conceitos Métodos 35 Análise Orientada a Objetos - Conceitos Exercício Análise Orientada a Objetos - Conceitos Exercício 36 Análise Orientada a Objetos - Conceitos Encapsulamento - Acessando atributos e Métodos - Encapsulamento - Modificadores de Acesso - Métodos get() e set() Exercício Análise Orientada a Objetos - Conceitos Acessando Membros de Objetos 37 Análise Orientada a Objetos - Conceitos Encapsulamento Análise Orientada a Objetos - Conceitos Encapsulamento 38 Análise Orientada a Objetos - Conceitos Encapsulamento Análise Orientada a Objetos - Conceitos Modificadores de Acesso 39 Análise Orientada a Objetos - Conceitos Modificadores de Acesso Análise Orientada a Objetos - Conceitos Lab1 - Encapsulando Atributos 40 Análise Orientada a Objetos - Conceitos Modificadores de Acesso Análise Orientada a Objetos - Conceitos Métodos get() e set() 41 Análise Orientada a Objetos - Conceitos Métodos get() e set() Análise Orientada a Objetos - Conceitos Métodos get() e set() 42 Análise Orientada a Objetos - Conceitos Encapsulamento Análise Orientada a Objetos - Conceitos Lab1 - Métodos (get/set) 43 Análise Orientada a Objetos - Conceitos Resumo Análise Orientada a Objetos - Conceitos Exercício 3 44 Análise Orientada a Objetos - Conceitos Exercício 3 Análise Orientada a Objetos - Conceitos Exercício 3 45 Análise Orientada a Objetos - Conceitos Sobrecarga Análise Orientada a Objetos - Conceitos Sobrecarga de Métodos (overloading) 46 Análise Orientada a Objetos - Conceitos Sobrecarga de Métodos Análise Orientada a Objetos - Conceitos Sobrecarga de Métodos (overloading) 47 Análise Orientada a Objetos - Conceitos Sobrecarga (Overload) de Métodos Análise Orientada a Objetos - Conceitos Lab1 - Overload de Métodos 48 Análise Orientada a Objetos - Conceitos Lab1 - Overload de Métodos Análise Orientada a Objetos - Conceitos Construtores 49 Análise Orientada a Objetos - Conceitos Construtores Análise Orientada a Objetos - Conceitos Construtor 50 Análise Orientada a Objetos - Conceitos Sobrecarga (Overload) de Construtores Análise Orientada a Objetos - Conceitos Resumo 51 Análise Orientada a Objetos - Conceitos Sobrecarga (Overload) de Construtores Análise Orientada a Objetos - Conceitos Lab2 - Overload de Construtor 52 Análise Orientada a Objetos - Conceitos Herança Análise Orientada a Objetos - Conceitos Herança 53 Análise Orientada a Objetos - Conceitos Atributos e Métodos Análise Orientada a Objetos - Conceitos Implementação 54 Análise Orientada a Objetos - Conceitos Lab1 - Herança Análise Orientada a Objetos - Conceitos Restrições 55 Análise Orientada a Objetos - Conceitos Adicionando Atributos e Métodos Análise Orientada a Objetos - Conceitos Override 56 Análise Orientada a Objetos - Conceitos Override Análise Orientada a Objetos - Conceitos Override 57 Análise Orientada a Objetos - Conceitos Final Análise Orientada a Objetos - Conceitos Exercício 58 Análise Orientada a Objetos - Conceitos Polimorfismo - Ligação Dinâmica Análise Orientada a Objetos - Conceitos Polimorfismo - Ligação Dinâmica 59 Análise Orientada a Objetos - Conceitos Polimorfismo - Ligação Dinâmica Cálculo Total Análise Orientada a Objetos - Conceitos Polimorfismo - Ligação Dinâmica 60 Análise Orientada a Objetos - Conceitos Polimorfismo - Ligação Dinâmica Análise Orientada a Objetos - Conceitos Polimorfismo - Ligação Dinâmica 61 Análise Orientada a Objetos - Conceitos Polimorfismo Análise Orientada a Objetos - Conceitos Polimorfismo 62 Análise Orientada a Objetos - Conceitos Polimorfismo Análise Orientada a Objetos - Conceitos Polimorfismo 63 Análise Orientada a Objetos - Conceitos Polimorfismo Análise Orientada a Objetos - Conceitos Lab 01 – Ligação Dinâmica/Polimorfismo 64 Análise Orientada a Objetos - Conceitos Polimorfismo Análise Orientada a Objetos - Conceitos Verificação Dinâmica de Tipos Erro1: Compilação. O método render pertence somente ao subtipo(ContaPoupanca). Solução: Type Cast ((ContaPoupanca)repContas[i]).render() 65 Análise Orientada a Objetos - Conceitos Verificação Dinâmica de Tipos Análise Orientada a Objetos - Conceitos Exercicio 06 – Verificação Dinâmica de Tipos 66 Análise Orientada a Objetos - Conceitos Recapitulação - Herança Análise Orientada a Objetos - Conceitos Recapitulação - Polimorfismo 67 Análise Orientada a Objetos - Conceitos Pacotes em Java Análise Orientada a Objetos - Conceitos Pacotes em Java 68 Análise Orientada a Objetos - Conceitos Pacotes em Java Análise Orientada a Objetos - Conceitos Pacotes em Java 69 Análise Orientada a Objetos - Conceitos Pacotes em Java Análise Orientada a Objetos - Conceitos Modificadores de Acesso 70 Análise Orientada a Objetos - Conceitos Modificadores de Acesso Análise Orientada a Objetos - Conceitos Modificadores de Acesso 71 Análise Orientada a Objetos - Conceitos Modificador default Análise Orientada a Objetos - Conceitos Modificador default 72 Análise Orientada a Objetos - Conceitos Lab 01 - Pacotes Análise Orientada a Objetos - Conceitos Lab 01 - Continuação 73 Análise Orientada a Objetos - Conceitos Modificador de Acesso public Análise Orientada a Objetos - Conceitos Modificador de Acesso 74 Análise Orientada a Objetos - Conceitos Modificador de Acesso Análise Orientada a Objetos - Conceitos Principais pacotes Java 2ª - Análise Orientada a Objetos/Analise Orientada a Objetos - UML.pdf 1 05 5ANOO-NT1 ANÁLISE ORIENTADA A OBJETOS Prof. João Roberto Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Objetivos • Mapear os conceitos de OO em UML • Ser capaz de modelar um sistema usando UML 2 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco O que é a Unified Modeling Language (UML)? • A UML é a linguagem padrão para visualizar, especificar, construir e documentar artefatos de um sistema de software • A UML combina o melhor de – Modelagem de Dados – Modelagem de Negócios – Modelagem de Objetos – Modelagem de Componentes Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco O que é a Unified Modeling Language (UML)? • A UML não é uma metodologia de desenvolvimento! • Basicamente, a UML permite que desenvolvedores visualizem os produtos de seus trabalhos em diagramas padronizados. 3 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco • Visualização • Especificação • Construção • Documentação • Comunicação A UML é uma linguagem de modelagem para: O que é a Unified Modeling Language (UML)? Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco História da UML • Décadas de 1950/60 – Sistemas de Softwares bastantes simples. • Década de 1970 – Grande expansão do mercado computacional, computadores mais avançados e acessíveis. • Década de 1980 – Surge a necessidade de interfaces mais sofisticadas, o que originou a produção de sistemas de softwares mais complexos. Surge a análise estruturada. 4 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco História da UML • Início da Década de 1990 – Este é o período que surge um novo paradigma de modelagem, a Análise orientada à objetos. • Fim da Década de 1990 – O paradigma da Análise orientada à objetos atinge sua maturidade. Surge a Linguagem de Modelagem Unificada (UML). Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Criadores da UML • James Rumbaugh - Object Modeling Technique (OMT) • Grady Booch - Booch Method • Ivar Jacobson - Objectory (OOSE) Process 5 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Criadores da UML • Cada autor adotava ideias dos métodos dos outros, então, evoluindo juntos produziriam melhorias • A unificação dos 3 métodos trariam estabilidade para o mercado Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Elementos Essenciais Elementos Estruturais Elementos Comportamentais Elementos de Agrupamento Elementos de Anotação 6 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco São as partes estáticas de um modelo, representando elementos que são ou conceituais ou físicos. Exemplos: Elementos Estruturais • Classe • Interface • Use Cases • Componente • Nó Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Elementos Comportamentais • Interação - especifica um conjunto de mensagens trocadas entre objetos • Máquina de Estado - especifica seqüências de estados de um objeto São as partes dinâmicas dos modelos da UML. Exemplos: 7 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Elementos de Agrupamento • Pacotes - mecanismo para organização de elementos dentro de grupos São partes organizacionais dos modelos da UML. Exemplo: Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Elementos de Anotação • Nota - símbolo contendo restrições ou comentários que são melhor expressadas em textos São partes explicativas dos modelos da UML. São comentários que você aplica para descrever, iluminar e remarcar elementos no modelo. Exemplo: 8 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Diagramas • Use Case • Classe • Objeto • Seqüência • Colaboração • Estados • Atividades • Componentes • Implantação São representações gráficas de um conjunto de elementos. São desenhados para visualizar um sistema de diferentes perspectivas. A UML possui 9 diagramas: Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Diagrama Use Cases • São especialmente importantes na organização e modelagem das principais funcionalidades de um sistema • Use Case é a especificação de sequências de ações para atender a uma funcionalidade do sistema, interagindo com seus agentes 9 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Diagrama de Use cases Estudante Secretária <<estende>> Solicitar histórico do semestre atual Solicitar histórico de todos os semestres Solicitar histórico <<estende>> Verificar dependências Matricular aluno <<inclui>> Sistema de controle de pré-requisitos Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Diagrama de Classe • Os diagramas de classes são os principais diagramas estruturais da UML • Diagramas de classe mostram classes, interfaces e seus relacionamentos • As classes especificam a estrutura e o comportamento dos objetos, que são instâncias de classes 10 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Diagrama de Classe +confirmar() +cancelar() -calcularTotal():Currency gerarNovoCodigo: String -codigo: Integer -dataRecebido -total: Currency Pedido #creditoPermitido: Currency #nivelCredibilidade() -nome: String -endereco: String -dataPrimeiraCompra: Date -dataUltimaCompra: Date -totalComprado: Currency Cliente -quantidade: Integer -preco: Currency -emEstoque: Boolean Item de Pedido nomeContato: String telefones[1..10]: String CGC: String FAX[1..3]: String Cliente pessoa-jurídica colocarListaNegra() nome: String CPF: String numCartaoCredito Cliente pessoa-física Empregado Produto * representante de vendas * IPessoa itens 0..* 1 faz Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Diagrama de Objetos • Mostram objetos e seus relacionamentos • Representam instâncias estáticas de elementos dos diagramas de classes • Os diagramas de objetos são úteis para a modelagem de estruturas de dados complexas 11 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Diagrama de Objetos p2: Professor matricula: "205-6712-09" nome: "Jaelson Castro" p1: Professor codCurso: "IF291" descrição: "MPS" codTurma: I7 : Curso codCurso: "IF185" descrição: "AER" codTurma: I6 : Curso matricula: "219846534" nome: "Nelson Mandella" :aluno matricula: "562746134" nome: "John Major" :aluno : Aluno : Aluno : Aluno : Aluno c1: Curso c2: Curso c3: Curso Bill : Aluno : Aluno Lewinsky -matrícula: String -nome: String Professor -codDisciplina: String -descrição: String -codTurma: String Curso -matrícula: String -nome: String -período: Integer Aluno [0..10] ministra [1..5] * [1..3] Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Diagrama de Seqüência • Mostra um conjunto de objetos, seus relacionamentos e as mensagens que podem ser enviadas entre eles 12 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Diagrama de Seqüência Janela de entrada de pedido p: Pedido : ItemPedido :ItemEstoque preparar() * [para cada item do pedido] preparar() emEstoque := verificar() [emEstoque] remover() estoqueBaixo := verificEstoqueBaixo() :ItemRenovEstoque :ItemEntrega [estoqueBaixo] <<criar>> [emEstoque] <<criar>> Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Diagrama de Colaboração • Mostra um conjunto de objetos, seus relacionamentos e as mensagens que enfatizam a organização dos objetos que trocam mensagens 13 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Diagrama de Colaboração Janela de entrada de pedido p: Pedido : ItemPedido :ItemEstoque :ItemRenovEstoque :ItemEntrega 1: preparar() 1.1: *[para cada item do pedido] preparar() 1.1.1 : emEstoque := verif icar() 1.1.2 : [emEstoque] remover() 1.1.2.1: estoqueBaixo := verificEstoqueBaixo() 1.1.2.2 [estoqueBaixo] <<criar>> 1.1.3 : [emEstoque] <<criar>> Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Diagrama de Estados • Mostra uma máquina contendo estados, transições, eventos e atividades • Estes diagramas são usados para modelar o comportamento de objetos (com comportamento complexo) • Nestes diagramas são modelados os estados em que um objeto pode estar e os eventos que fazem o objeto passar de um estado para outro 14 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Ocioso Manutenção fazerManutenção Validando Selecionando Processando Imprimindo [continuar] [não continuar] H entry / lerCartão exit / ejetarCartão cartãoInserido cancelar Ativo Diagrama de Estados Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Diagrama de Atividades • Destaca a lógica de realização de uma tarefa • Mostra o fluxo entre atividades (ações não- atômicas) • É semelhante aos antigos fluxogramas • É usado também para modelar alternativas de execução e atividades concorrentes 15 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Diagrama de Atividades Procurar bebida [achou café] H Pessoa H [sem café] [sem Coca] [achou Coca] Pegar lata de Coca Beber Adicionar água à máquina Colocar café no filtro Colocar filtro na máquina Ligar máquina Filtrar café Pegar xícara Colocar café na xícara Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Diagrama de Componentes • Mostra os componentes de hardware e software de uma aplicação e os relacionamentos entre eles • É usado para modelar o aspecto físico de um sistema • Exemplos de componentes são documentos, executáveis e tabelas de bancos de dados 16 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Diagrama de Componentes FormCadastro.html Cadastro.exe Principal.html FormEntrada.html Autenticacao.exe <<link>> <<link>> Banco Usuários Senhas Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Diagrama de Implantação • É usado para modelar a arquitetura de distribuição em que o sistema será executado • É composto por nós e relacionamentos de comunicação • Um nó pode ser um computador, uma rede, um disco rígido, um sensor, etc. 17 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Diagramas de Implantação servidorWeb Autenticação.exe Cadastro.exe servidorDeArquivos FormCadastro.html Principal.html FormEntrada.html servidorBancoDeDados SGBD O SGBD a ser utilizado ainda não foi escolhido. PC - G309 Nestscape Communicator 5.0 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Diagramas de Classes 18 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Sobre Classes • Classes são o elemento mais importante de qualquer sistema orientado a objetos • Uma classe é uma descrição de um conjunto de objetos com os mesmos atributos, relacionamentos, operações e semântica • Classes são usadas para capturar o vocabulário de um sistema • Classes são abstrações de elementos do domínio do problema, como “Cliente”, “Banco”, “Conta” Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Nomes • Toda classe deve ter um nome que a distinga das outras classes • Um nome pode ser simples (apenas o nome), ou pode ser precedido pelo nome do pacote em que a classe está contida Conta Banco Exceções::ClienteNãoCadastrado Cliente 19 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Notação básica Nome (obrigatório)Atributos (opcional) Operações (opcional) Forma origem mover() redimensionar() exibir () Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Atributos • Um atributo representa alguma propriedade do que está sendo modelado, que é compartilhada por todos os objetos da classe • Os atributos descrevem os dados contidos nas instâncias de uma classe • Em um momento dado, um objeto de uma classe conterá valores para todos os atributos descritos na sua classe 20 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Atributos - Notação • Atributos podem ser identificados apenas com nomes • Atributos podem ter seus tipos (ou classes) especificados e terem valores padrão definidos Cliente nome endereço telefone Parede altura : real largura : real espessura : real viga : boolean = false Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Atributos - Notação : Professor titulo = “PhD” nome = “Ivan” : Professor titulo = “Mestre” Nome = “Gibeon” Professor titulo nome Valor do Atributo Objeto Nome do Atributo Classe 21 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Operações • Uma operação é uma abstração de alguma coisa que se pode fazer com um objeto e que é compartilhada por todos os objetos da classe • Um classe pode ter qualquer número de operações, inclusive nenhuma • Operações são o meio de alterar os valores dos atributos Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Operações - Notação • Como para os atributos, você pode especificar uma operação apenas com seu nome • Você pode também especificar a assinatura da operação: seus parâmetros, o tipo desses parâmetros e o tipo de retorno Retângulo mover() aumentar() diminuir() 22 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Resumo de classes • Uma classe é composta por três seções Nome da Classe DVD Atributos Operações Hora Status estrutura comportamento Voltar() Pausar() Adiantar() Parar() Tocar() Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Visibilidade • Você pode usar marcações de acesso para especificar o tipo de acesso permitido aos atributos e operações • Isto pode ser usados para classes, interfaces, componentes, nós, use cases, subsistemas + público: todos os podem usar # protegido: qualquer descendente poderá usar - privado: somente usado na própria classe 23 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Relacionamentos • Poucas classes vivem sozinhas • Tipos de relacionamentos especialmente importantes na modelagem – Associações – Agregação – Composição – Dependências – Generalizações – Realização Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Os relacionamentos ligam as classes/objetos entre si criando relações lógicas entre estas entidades. Os relacionamentos podem ser dos seguintes tipos: Relacionamentos • Associação - especifica que objetos de um elemento (classe) estão conectados a objetos de outros elementos 24 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Relacionamentos • Agregação - relacionamento fraco do tipo “é parte de”. É um tipo especial de associação • Composição - relacionamento forte do tipo “é parte de”. A composição entre um elemento (o “todo”) e outros elementos (“as partes”) indica que as partes só existem em função do “todo”. Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Relacionamentos • Dependência - relacionamento de uso, no qual uma mudança na especificação de um elemento pode alterar a especificação do elemento dependente • Generalização (herança) - relacionamento entre descrições mais gerais e descrições mais específicas, com mais detalhes sobre alguns dos elementos gerais • Realização - relacionamento entre uma interface e o elemento que a implementa 25 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Relacionamentos - Notação Associação Sem/com navegação Agregação Realização Generalização Composição Dependência Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Dependência • Dependências são relações de uso • Uma dependência indica que mudanças em um elemento (o “servidor”) podem afetar outro elemento (o “cliente”) • Uma dependência entre classes indica que os objetos de uma classe usam serviços dos objetos de outra classe Cliente Servidor 26 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Dependência –alguns tipos • derive – a fonte é computada a partir do destino • friend – a fonte tem acesso privilegiado ao destino • instanceOf – o objeto fonte é instância da classe destino • powertype – o destino é composto por subconjuntos da fonte • derivado – a fonte é computada a partir do destino Entre pacotes: access e import Entre use-cases: extend e include Entre objetos: become, call e copy Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Generalização • Relacionamento entre um elemento mais geral (chamado de superclasse ou pai) e um mais específico (chamado de subclasse ou filho) Forma origem mover() exibir() Retângulo ponto : Ponto Círculo raio : float Polígono pontos : List aDePontos exibir() Quadrado 27 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Herança Múltipla • Ocorrem múltiplas superclasses para uma mesma subclasse Veículo Aquát ico Veículo Veículo Terrestre Veículo Anfíbio Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Associação • A associação é um relacionamento estrutural que especifica que objetos de um elemento estão conectados a objetos de outro elemento Companhia Funcionárioemprega 28 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Multiplicidade • É a cardinalidade de uma associação Classe exatamente 11 Classe muitos (zero ou mais) * Classe opcional (zero ou um) 0.. 1 Classe seqüência especificada m.. n Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Associação Unária • Quando há um relacionamento de uma classe para consigo própria Funcionário 1 1..* 1 1..* gerencia 29 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Associação Binária • Quando há duas classes envolvidas na associação de forma direta de uma para a outra Cliente Pedido 0..*1 faz 1 0..* Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Associação: Navegabilidade • Em geral a navegação entre as classes de uma associação é bi-direcional • Porém é possível limitá-la a apenas uma direção Us uário Senha 30 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco • Papéis: um dos lados da associação • Nomes de papéis são necessários para associação entre dois objetos da mesma classe Associação: papéis Companhia Empregado1..** +empregador 1 0..* +subordinado +chefe Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Associação com Atributos • Modela as propriedades associadas com uma associação • As propriedades devem ser representadas por uma classe Companhia Empregado 1..*** Trabalho descrição salário 31 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Monitor Teclado Mouse CaixaSistema Computador Agregação • Uma forma especial de associação entre o todo e suas partes, no qual o todo é composto de partes • Não impõe que a vida das “Partes”’ esteja relacionado com a vida do “Todo” Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Composição • Uma forma mais forte de agregação • Há uma coincidência da vida das partes • Uma vez criada a parte ela irá viver e morrer com ele • O “Todo” é responsável pelo gerenciamento da criação e destruição das partes 32 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Composição Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Interfaces • Uma interface é um conjunto de operações usado para especificar um serviço de uma classe ou componente • Diferentemente das classes, as interfaces não especificam nenhuma estrutura • Interfaces não podem conter atributos 33 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Interfaces • Com as interfaces, é possível se concentrar apenas nos serviços oferecidos por classes ou componentes • O uso de interfaces é uma maneira elegante e poderosa de isolar a especificação da implementação • Uma interface especifica o contrato para uma classe ou componente, sem definir como ele será implementado Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Realização • Realização é uma relação pela qual um elemento especifica o contrato que outro elemento deve implementar • A realização é um relacionamento entre uma especificação e sua implementação • Indica que um elemento serve como contrato que o outro deve seguir 34 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Realização - Notação Empregado Empregado_Impl Empregado verificarFicha() calcularSalário() << interface>> Empregado_Impl Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Como você modelaria: • Dependente e Funcionário? • Pedido e Item do pedido? • Funcionário e Cartão de ponto? • Carro, Roda, Direção e Carburador? Exercícios - Associação x Agregação x Composição 35 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Exercícios • Identificar navegação e multiplicidade: • Dependente e Funcionário; • Pedido e Item do pedido; • Funcionário e Cartão de ponto; • Carro, Roda, Direção e Carburador; Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Diagramas Use Cases 36 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Diagramas de Use Cases • Servem facilitam o entendimento de um sistema mostrando a sua “visão externa” • São usados para modelar o contexto de um sistema, subsistema ou classe • São uma das maneiras mais comuns de documentar os requisitos do sistema – Delimitam o Sistema – Definem a funcionalidade do sistema Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Use Case • Um use case é uma unidade funcional que descreve o comportamento de um elemento da aplicação • contém sequências de ações, interagindo com os atores que usam a aplicação • inclui variantes, rotinas de erro, etc. que o sistema executa para produzir um resultado observável para um ator 37 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Use Case: Representação Gráfica • A coleção dos use cases deverá especificar todas as formas existentes de uso do sistema Matricular aluno Solicitarhistórico Verificar pré-requisitos Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Atores • O sistema será descrito através de vários use cases que são executados por um número de atores • Atores constituem as entidades do ambiente do sistema • São pessoas ou outros subsistemas que interagem com o sistema em desenvolvimento 38 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Atores - Notação Professora Sistema de controle de pre-requisitos Estudante Secretária <<Ator>> Coordenador Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Atores: Especialização • É possível definir tipos gerais de atores e especializá-los usando o relacionamento de especialização Cl iente ClienteEspecial 39 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Diagramas de Use Cases Estudante Secretária <<estende>> Solicitar histórico do semestre atual Solicitar histórico de todos os semestres Solicitar histórico <<estende>> Verificar dependências Matricular aluno <<inclui>> Sistema de controle de pré-requisitos Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Diagrama de Use Case Gerar Relatório Retornar Item Mudar Item Cliente Operador 40 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Expressão de variantes de use case • Nem sempre é óbvio decidir se uma funcionalidade corresponde a um novo use cases. As vezes trata-se de uma variação de um mesmo use case – Se as diferenças forem pequenas elas podem ser descritas através de variantes de um mesmo use case – Se as diferenças são grandes elas devem ser descritas como use cases separados Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Expressão de variantes de use case • Fluxo principal de eventos – Descreva a seqüência normal de eventos de um use case • Fluxo excepcional de eventos – Descreva as variações dos cursos básicos de eventos (ex: Erros) 41 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Expressão de Variantes • Use Case Retornar item Fluxo principal de eventos: • Quando o cliente depositar os seus itens, ele/ela irá pressionar o botão recibo para obter o recibo. O recibo impresso irá listar os itens depositados, seus totais e o valor a ser pago ao cliente Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Expressão de Variantes • Use Case Retornar item Fluxo excepcional de eventos: • Quando o cliente retorna um item ele é medido pelo sistema. A medição é usada para determinar que tipo de lata, garrafa ou gradeado foi depositado. Se aceito, o total do cliente será incrementado. Se não for aceito, apresentar mensagem ´NÃO É VALIDA´ 42 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Organizando Use Cases • Generalização (Generalization) • Inclusão (Include) • Extensão (Extend) Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Organizando Use Cases • Generalização (Generalization) - Quando o caso de uso B generaliza o caso de uso C isso significa que, além de fazer tudo que nele está especificado (ele = B), ele também executará tudo que está especificado no caso de uso C. A direção do relacionamento é sempre do generalizador (aqui o caso de uso B) para o generalizado (caso de uso C). 43 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Organizando Use Cases • Inclusão (Include) - Quando o caso de uso A “inclui” o caso de uso B, significa que sempre que o caso de uso A for executado o caso de uso B também será executado. A direção do relacionamento é do caso de uso que está incluindo para o caso de uso incluído. Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Organizando Use Cases • Extensão (Extend) - Quando o caso de uso B estende o caso de uso A, significa que quando o caso de uso A for executado o caso de uso B poderá (poderá – talvez não seja) ser executado também. A direção do relacionamento é do caso de uso extensor (aqui o caso de uso B) para o caso de uso estendido (aqui o caso de uso A). 44 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Organizando Use Cases Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Exercício Fazer Pedido Pontos de extensão set prioridade Fazer Pedido Urgente Validar usuário Verificar senha Teste de retina 45 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco <<estende>> (set prioridade) Fazer Pedido Pontos de extensão set prioridade Fazer Pedido Urgente Use Case Fazer Pedido Fluxo principal de eventos: inclui (Validar usuário). Receber do usuário os itens do pedido. (set prioridade). Submeter o pedido para processamento <<inclui>> Validar usuário Verificar senha Teste de retina é-um é-um Exercício Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Solicitar material Checar estoque Comprar material Emitir pedido de compra Exercício Almoxarife 46 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco <<estende> > Solicitar material Checar estoque <<inclui>> Comprar material Emitir pedido de compraé-um Exercício Almoxarife Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Exercício 47 Texto do Título • Nível de Corpo Um – Nível de Corpo Dois • Nível de Corpo Três – Nível de Corpo Quatro » Nível de Corpo Cinco Exercício