Projeto de Sistemas Aplicativos para a Internet FEA/USP EAD-5881 Tecnologia de Informtica Prof. Antonio Geraldo da Rocha Vidal vidal@usp.br 2 Contedo 1. Conceitos de Orientao a Objetos Classes Objetos Programao 2. Introduo Linguagem Java Conceitos e recursos bsicos 3. Projeto de Sistemas Orientados a Objetos 4. UML - Unified Modeling Language 3 Paradigma Paradigma um conjunto de regras que estabelece fronteiras e descreve como resolver problemas dentro destas fronteiras. Os paradigmas influenciam nossa percepo: ajudam-nos a organizar e a coordenar a maneira como olhamos para o mundo... Daniel Morris e Joel Brandon 4 Paradigmas Tradicional: baseia-se na compreenso de um sistema de informao como um conjunto de programas que executam processos sobre dados. Objetos: v um sistema de informao como uma coletnea de objetos que interagem entre si, apresentam caractersticas prprias, que so representadas pelas suas propriedades (dados) e mtodos (processos). 5 Paradigmas Programa Classe Processos Propriedades Mtodos Dados Tradicional Objetos 6 Orientao a Objetos - OO Anlise, projeto e programao orientados a objetos representam uma mudana de paradigma em relao s tcnicas clssicas. Objetos so os componentes de um sistema que pertencem a uma classe e possuem: Encapsulamento Herana Polimorfismo Propriedades Mtodos Eventos Mensagens Reutilizao Flexibilidade Interoperabilidade 7 Bases das Metodologias OO Diretamente derivada dos conceitos da programao orientada a objetos, a anlise e o projeto orientados a objeto definem uma nova maneira de pensar nos problemas utilizando modelos organizados a partir de conceitos do mundo real. O componente fundamental a classe de objetos, algo que combina estrutura e comportamento em uma nica entidade que pode derivar vrias ocorrncias ou instncias de objetos semelhantes. 8 Origens da OO Linguagens de Programao: Simula, Smaltalk, Flavours, Objective C, C++, Java, C#, Object Pascal e outras. Inteligncia Artificial: frames. Banco de Dados: modelos semnticos de dados.
9 Expectativas da OO A tecnologia de objetos oferece a modularidade de seus elementos podendo-se tomar um subconjunto existente e integr-lo de uma maneira diferente em outra parte do software (sistema aplicativo). Uma aplicao no universo de objetos consiste de um conjunto de blocos de construo auto-contidos e predefinidos que podem ser localizados, reparados ou substitudos. A construo de cdigo auto-contido propicia o teste completo antes de ser utilizado dentro da lgica de um sistema de informao. 10 Expectativas da OO Possibilita incrementos graduais de componentes aos j instalados, ampliando a abrangncia do sistema. A combinao de mdulos prov inicialmente um nvel bsico de funcionalidade que estendido sucessivamente para atender novas situaes, em um progresso contnuo da aplicao perante os usurios. Forte direcionamento reutilizao de artefatos de software j existentes, que so criados uma nica vez e disseminados. 11 Objetos Concretos Coisas Tangveis Automvel Eventos Casamento Transaes Transao comercial 12 Objetos so pacotes de software compostos por dados e procedimentos, que atuam sobre estes dados. Os procedimentos so tambm conhecidos como mtodos e determinam o comportamento do objeto. Os dados so tambm conhecidos como propriedades e determinam o estado do objeto. Objeto = dado + procedimento
Objeto = estado + comportamento Objetos de Software 13 Objetos de Software Propriedades Dados Variveis Comportamentos Mtodos Procedimentos 14 Objeto Automvel Potncia Dimenses Preo Mover Parar Buzinar Cor 15 Objetos de Software Todo acesso aos dados ou propriedades de um objeto feito atravs da sua interface, que expe mtodos e propriedades a outros objetos. 16 Encapsulamento definido como uma tcnica para minimizar interdependncias entre mdulos atravs da definio de interfaces externas. Interface Mudanas na implementao de uma classe que preserve a interface externa no afetam outras definies de classes. 17 Interfaces de Classes Uma Interface descreve um grupo de classes com as mesmas: Propriedades constantes; Mtodos abstratos; Uma Interface define a estrutura ou esqueleto padro de uma classe. No implementa nenhum comportamento real, mas apenas os declara. Implementa propriedades constantes e mtodos abstratos. 18 Mensagens Objetos interagem e comunicam-se atravs de mensagens... Emissor Receptor Andar(...) As mensagens identificam os mtodos a serem executados no objeto receptor e passam-lhes alguma informao. 19 Mtodos Um determinado mtodo define um comportamento do objeto. Tipos bsicos de mtodos: Construtor (constri estados) Destruidor (destri estados) Transformador (transforma estados) Acesso (fornece estados)
20 Abstrao Focalizar o essencial, ignorar propriedades acidentais ou especficas. Classe Automvel Classe Mamfero A abstrao deve sempre ter algum objetivo, pois o objetivo ele que determina o que e o que no essencial 21 Classes de Objetos Uma classe de objetos descreve um grupo de objetos com: Propriedades semelhantes; Comportamentos semelhantes; Relacionamentos comuns com outros objetos. 22 Classes Objetos Instncias Classe Automvel Atributos Potncia Velocidade Cor... Mtodos Acelerar Frear Buzinar... Classificao Instanciao 23 Classes Classe Pai Super Classe Atributos e mtodos da classe. Instanciao de classe Atributos e mtodos especficos. Subclasse Subclasse 24 Classes vs. Subclasses Classes: Contm informaes sobre como uma subclasse ou um objeto deve ser e como deve se comportar. Definem a forma e o comportamento padro de subclasses e objetos nela baseados. Subclasses: So instncias ou ocorrncias de uma classe. Herdam todas as suas caractersticas padro de uma classe. Alm disso, podem possuir caractersticas especficas. Podem derivar outras subclasses ou objetos nelas baseados. 25 Classes vs. Objetos Classes: Contm informaes sobre como um objeto deve ser e como deve se comportar. Definem a forma e o comportamento padro de objetos nela baseados. Objetos: So instncias ou ocorrncias de uma classe. Herdam todas as suas caractersticas padro de uma classe ou subclasse. Alm disso, podem possuir caractersticas especficas. No podem derivar outros objetos neles baseados. 26 Relacionamentos entre Classes Generalizao Herana Agregao Polimorfismo 27 Generalizao / Especializao Generalizao o relacionamento entre uma classe e uma ou mais verses refinadas dessa classe. Generalizao Especializao Generalizao a abstrao que permite compartilhar semelhanas entre classes, preservando suas diferenas. 28 Hierarquia de Classes Sub Classe A Classe Derivada Sub Classe B Classe Derivada Sub Classe C Classe Derivada Super Classe Classe Primitiva 29 Herana Uma classe derivada ou subclasse herda as propriedades e mtodos da classe me ou superclasse, mas pode: Adicionar novos mtodos prprios; Estender suas propriedades/atributos; Redefinir a implementao de mtodos existentes.
30 Herana Sub Classe A Classe Derivada Sub Classe B Classe Derivada Subsub Classe 1 Subsub Classe 2 Sub Classe C Classe Derivada Super Classe Classe Primitiva Localizao de Mtodos e Propriedades na Hierarquia Instncia Calcular() 31 Herana Automvel Automvel Esportivo Ferrari Generalizao Especializao Propriedades e mtodos comuns compartilhados por classes. Propriedades e mtodos diferentes de uma subclasse, acrescentando ou alterando caractersticas herdadas. 32 Agregao Chassi Carroceria Suspenso Motor Automvel Um objeto agregado construdo por vrios componentes Agregao Fixa 33 Agregao Pessoa Empresa Departamento Setor Um objeto agregado feito de componentes Agregao Varivel 34 Polimorfismo Refere-se a: Vrios comportamentos que um mesmo mtodo ou operao pode assumir; Capacidade de um nome referir-se a objetos diferentes que executam certas responsabilidades dependendo da mensagem que lhes passada. Um nome pode denotar objetos de muitas subclasses diferentes que esto relacionadas por alguma superclasse comum. Assim, um objeto identificado por esse nome tem a capacidade de responder a algum conjunto comum de operaes de modos diferentes. 35 Evento vs. Estado Evento: Uma ocorrncia significativa no mundo real que deve ser tratada pelos objetos de software. So atividades especficas e predeterminadas, provocada pelo usurio ou pelo sistema. Possuem mtodos de objetos associados a eles. Estado: Situao de um objeto em um dado instante do tempo. 36 Objetos: propriedades Caractersticas ou atributos dos objetos que so prprias da classe ou subclasse qual pertencem. Exemplo: objeto JOS, pertencente subclasse CLIENTE, da subclasse PESSOA FSICA, da classe PESSOA. Nmero: 000001 CPF: 999.888.777-66 Nome: Jos da Silva Endereo: Rua da Independncia, 709 Telefone: 3089-9090 Etc. 37 Objetos: mtodos & eventos Cada objeto reconhece e pode responder a aes denominadas eventos prprios da sua classe/subclasse. Eventos: So atividades especficas e predeterminadas provocada pelo usurio ou pelo sistema. Possuem mtodos associados a eles. Mtodos: So comportamentos ou procedimentos associados ao objeto. Mtodos podem existir independentemente de eventos. 38 Objetos: mensagens Objetos recebem mensagens de outros objetos com os quais se relacionam. Mensagens: Transferem informaes de um objeto para outro. So enviadas e recebidas atravs de eventos. So caracterizadas pelos mtodos ou comportamentos dos objetos; tanto do que envia como do que recebe. 39 Objetos: polimorfismo Usando a mesma mensagem, objetos podem assumir caractersticas e comportamentos diferentes: De acordo com contextos especficos; De acordo com eventos especficos; De acordo com eventos e contextos especficos. Um objeto pode assumir vrias formas: Propriedades/atributos diferentes; Mtodos/comportamentos diferentes. 40 Linguagens Orientadas a Objetos 41 Introduo s Linguagens Orientadas a Objetos Conceitos Bsicos (Vlidos para C++, C#, Java, J++ e J#) 42 Java Its a jungle out there
So drink your Java Propaganda do Printers Caf em Palo Alto CA/USA 43 Por que surgiu o Java? Software para eletro-domsticos (1992) Mnimo uso de memria Mnimo preo C++ simplificado Desenvolvida pela Sun Microsystems Inc. (1994) Distribuio de software atravs da Internet (1996) Novo paradigma de programao: Orientada a objeto Totalmente aberta Independente de plataforma e sistema operacional 44 Caractersticas do Java da Sun Linguagem orientada a objetos Estrutura semelhante ao C++ Gera Bytecodes Interpretada Alta Performance (JIT) Segurana Endereamento restrito Objetos assinados Aplicao Carregada Localmente 45 Caractersticas do Java da Sun Aplicaes Personalizadas Independncia de Arquitetura Neutra Distribuda No h herana mltipla No h aritmtica de ponteiros Inclui tratamento de excees Implementa Coletor de Lixo 46 Arquitetura de Programas Java 47 Java Script Primeira Verso do Java Aplicao Interna ao HTML Interpretada No havia o conceito de ByteCodes
<script language=Java Script Function -------- { .......
} </script> 48 Applet Java Aplicao executada quando se chama uma pgina WWW carregada na Mquina Cliente Restringe-se a uma determinada rea (janela) <applet code=apl.class codebase=http://www.fia.fea.usp.br/vidal align=left width=300 height=100 <param name=tamanho value=30> <param name=fonte value Arial> </applet: 49 Aplicao Java Aplicao executada stand-alone Exige somente a presena do interpretador Java (Java Virtual Machine)
public class HelloWorldApp { // Definio do Mtodo MAIN public static void main (String args[]) { String text = "Hello World!"; System.out.println(text); } } 50 Java e Orientao a Objetos Java suporta as principais caractersticas da programao orientada a objeto atravs de seus construtores de classes e de interfaces. Uma classe um modelo que descreve um conjunto inteiro de objetos. Em geral, uma classe tem os mesmos membros, isto , propriedades (dados) e mtodos (procedimentos), que os objetos criados a partir dela. Uma interface representa uma coleo de comportamentos relacionados. Contm somente declaraes de mtodos e propriedades constantes. 51 Criando Classes Uma classe composta por mtodos (comportamento) e propriedades (variveis que determinam o estado). public class Pessoa { // Variveis ou propriedades String Nome; boolean ComFome; // Mtodos int Comer(int quantidade) { //... } } Mtodos mudam o estado das variveis 52 Exemplo de Definio de Classe (propriedades) public class Morador... { String nomeCompleto; String apartamento; String telefone; int anoChegada; ....
53 Exemplo de Definio de Classe (mtodos) public class Morador... {.... public morador(String no, String ap, String te, int an)
{ nomeCompleto = no; apartamento = ap; telefone = te; anoChegada = an; } public int permanencia() { return (2002 - anoChegada); } } 54 Criando Objetos Criao do Objeto lassie a partir da classe Cachorro: /*Crie uma varivel de referncia para a classe Cachorro:*/ Cachorro lassie;
/*Crie um objeto da classe Cachorro e designe-o para a referncia:*/ lassie = new Cachorro(); 55 Usando Objetos Executando um mtodo do objeto criado: Cachorro.latir(); /* Errado! -no se pode fazer todos os cachorros latirem.*/
lassie.latir(); /* Correto! pode-se fazer um determinado cachorro latir.*/
56 Exemplo de Instanciao de uma Classe ... Morador prof; .... prof = new morador(Vidal, 82, 3081-0001,1998); ...
57 Exemplo de Mtodos com Mensagens ..... Morador prof; int p; .... prof = new morador(Vidal, 81, 3081-0001,1998); .... p = prof.permanencia(); // acionando o mtodo // permanencia para o // objeto definido em prof indica o envio de mensagem para o objeto prof .... 58 Herana A herana permite a voc reutilizar e modificar cdigo j existe. A herana forma relaes hierrquicas entre classes ou interfaces. A meu ver a mais significativa contribuio do paradigma da Orientao para Objetos para o desenvolvimento de software. 59 Exemplo de Herana import morador;
public class morador_inq extends morador { int aluguel; public morador_inq(String no, String ap, String tel, int an, int va) { super(no, ap, tel, an); aluguel = va; } }
60 Exemplo de Agregao Objeto Composto public class material extends Object { String rotulo; Boolean emCaixa; int anoEstocagem; double valor; Morador proprietario;
public material (....) ....
61 Exemplo de Agregao Objeto Composto public class material extends Object {.... public material (String ro, double va, boolean em, Morador pro, int an) {rotulo = ro; valor = va; emCaixa = em; proprietario = pro; anoEstocagem = an; }
public int permanencia() { return (2002 - anoEstocagem); }
62 Pacotes Um pacote um grupo de classes relacionadas. Eles so semelhantes a bibliotecas em outras linguagens de programao. Ajudam a organizar classes, relacionando-as em categorias com funcionalidades (mtodos e comportamentos) semelhantes. 63 Pacotes JAVA java.lang java.util java.io java.awt java.applet Para usar um pacote pr-existente, voc deve import-lo para o seu programa. 64 Pacotes Java 65 Anlise e Projeto de Sistemas Orientados a Objeto UML - Unified Modeling Language 66 Contedo Viso Geral UML Tcnicas de Modelagem Anlise: Classes Projeto: Objetos, Interface e Sistema Consideraes Finais 67 Metodologia Conjunto de tcnicas e diretrizes para construo, manuteno e melhoria de produtos de software. Fornece uma base de comunicao: um conjunto de tcnicas e uma base para engenharia de software. 68 Fases Clssicas do Desenvolvimento de Sistemas Definio de Requisitos Anlise Projeto Implementao Teste Implantao Domnio do Problema Domnio da Soluo 69 Metodologia OO Uma metodologia de desenvolvimento de sistemas considerada Orientada a Objetos se ela orienta a construo de sistemas a partir do entendimento do mundo real como um conjunto de objetos que comunicam-se entre si de forma coordenada. 70 Metodologia OO Principais Atividades: Entender quais so os objetos envolvidos no domnio do problema. Entender como se comunicam no mundo real. Projetar a forma como devem ser implementados. 71 UML Unified Modeling Language UML Booch Rumbaugh Jacobson Meyer Harel Wirgs-Brock Fusion Gamma et al Shlaer-Mellor Odell Objetivo: linguagem de modelagem unificada que tratasse assuntos de escala inerentes a sistemas complexos e de misso crtica, que se tornasse poderosa o suficiente para modelar qualquer tipo de aplicao em tempo real, cliente/servidor, orientada a objetos e outros tipos e padres de software. 72 A UML Os fomentadores da UML no inventaram a maioria das idias, em vez disso, seu papel foi selecionar e integrar as melhores prticas, tornando-a um meio padro de expressar projetos de sistemas. Ajuda a desmistificar o processo de modelagem de sistemas de software. Linguagem-padro para encorajar os desenvolvedores a modelar os seus sistemas de software, antes de constru-los. Adoo rpida e muito difundida. 73 A UML Tornou-se o modo-padro para desenhar diagramas de projetos orientados a objetos. Tambm foi adotada em campos no- orientados a objetos. projetada para ser independente do processo de software. uma linguagem padro para especificar, visualizar, documentar e construir componentes de um sistema de informao. Pode ser utilizada em todos os processos ao longo do ciclo de desenvolvimento e atravs de diferentes tecnologias de implementao. 74 A UML uma linguagem de modelagem; no uma metodologia. No possui um processo! Uma linguagem de modelagem a notao, principalmente grfica, utilizada por mtodos para expressar projetos. O processo a sugesto de quais passos devem ser seguidos na elaborao de um projeto. A linguagem de modelagem a parte-chave do processo para a comunicao. 75 A UML Est na sua verso 1.3 de 1999. Define uma notao e um metamodelo: Notao a parte grfica dos modelos; a sintaxe da linguagem de modelagem. Metamodelo um diagrama, geralmente o diagrama de classes, que define a como notao deve ser utilizada corretamente. A UML tem pouco rigor; suas notaes apelam para a intuio em vez da definio formal. O mais importante a utilidade para o projeto. Atualmente um padro do OMG Object Management Group. 76 A UML pode ser usada para: 1. Mostrar as fronteiras de um sistema e suas funes principais utilizando atores e casos de uso; 2. Ilustrar a realizao de casos de uso com diagramas de interao; 3. Representar uma estrutura esttica de um sistema utilizando diagramas de classe; 4. Modelar o comportamento de objetos com diagramas de transio de estados; 5. Revelar a arquitetura de implementao fsica com diagramas de componente e de implantao; 6. Estender sua funcionalidade atravs de esteretipos. 77 UML & Anlise e Projeto O objetivo real do desenvolvimento de software o cdigo executvel. Nenhum usurio ficar satisfeito apenas com diagramas de projeto bonitos. O usurio quer um software que seja executado! Portanto, ao utilizar a UML importante pensar em como ela ajudar a escrever o cdigo executvel. 78 Domnio da Soluo Domnio do Problema Processo de Desenvolvimento CONCEPO Projeto Lgico (Anlise Conceitual) ELABORAO Projeto Fsico (Projeto de Software) TRANSIO Teste Ajuste Treinamento CONSTRUO Implementao (Desenvolvimento) 1 2 3 ... Interativo e Incremental ITERAES: Anlise Projeto Implementao Teste & Ajuste Treinamento RISCOS: Requisitos Tecnologia Pessoal Habilitado Fatores Polticos REQUISITOS Reviso de Processos de Negcio 79 Tipos de Anlise Anlise Esttica: descreve as estruturas e os relacionamentos entre os objetos do domnio do problema (Diagrama de Classe de Objetos). Anlise Dinmica: descreve o comportamento dos objetos em termos de suas mudanas ao longo do tempo (Diagrama de Transio de Estados e Diagrama de Interao). 80 Modelagem com a UML 1. O que fazem e desejam os usurios do sistema? (anlise de processos e casos de uso). 2. Quais so os objetos no mundo real que interagem com o sistema em estudo e suas associaes? (diagrama de classes e MER). 3. Quais objetos so necessrios para cada caso de uso? (anlise de processos, casos de uso e CRC). 4. Como colaboram entre si objetos dentro de um caso de uso? (diagramas de interao). 5. Como sero implementados os controles de tempo real? (diagramas de estados e de atividades). 6. Como ser construdo o sistema? (diagrama de pacotes, diagrama de componentes, diagrama de implantao). ANLISE DE PROCESSOS (No faz parte formal da UML) 82 Processos & Organizaes Uma organizao pode ser vista como um grande processo que recebe insumos, informaes e recursos do ambiente, os processa e os devolve ao ambiente na forma de servios. A organizao tambm pode ser vista como um conjunto de processos operacionais e gerenciais, que se desdobram em etapas, e que por sua vez se subdividem em atividades e estas em tarefas. 83 Reviso vs. Reengenharia de Processos Melhoria Contnua Reengenharia Mudanas suaves, graduais e contnuas. Mudanas drsticas, fundamentais e descontnuas. Qualidade Total Racionalizao e Produtividade Desenvolvimento de Processos Baixo Risco Alto Risco No informatize, destrua (Hammer). Evolua lenta e gradualmente (Kaizen). Melhoria, Programas, Projetos Redesenho, Reprojeto 84 Mudana Organizacional Do foco nas funes...(Sistemas Isolados) 85 Mudana Organizacional ...ao foco nos Processos (Sistemas Integrados). 86 Processo um conjunto de atividades estruturadas, seqenciais e medidas que transforma um ou mais tipos de entrada e cria um produto ou servio que tem valor para determinados usurios, clientes ou mercados. Entradas Requisitos Produtos/ Servios Fornecedores Clientes PROCESSO
87 Caractersticas dos Processos Processos eficientes e eficazes possuem as seguintes caractersticas: Repetitibilidade Estabilidade Previsibilidade Mensurabilidade Documentao 88 Elementos de um Processo Nome Escopo e Limites Clientes (internos e/ou externos) Fornecedores (internos e/ou externos) Requisitos de Entrada e Sada Atividades e Participantes Mapa do Processo Indicadores e Medidas (tempo, custo etc.) Informaes! (incluindo sua documentao) 89 Diagrama de um Processo Fornecedor Processo Cliente
Sadas Requisitos Recursos Instalaes Padres de Desempenho Conhecimentos Habilidades Mtodos Procedimentos Regras PROCESSO
91 Metodologia para Anlise do Processo 1. Identificao de Produtos e Processos: A partir do entendimento dos negcios da organizao. 2. Matriz Servio/Fornecedor/Cliente: Detalha os produtos finais e intermedirios de um processo Detalha seus fornecedores e clientes internos e externos Detalha as responsabilidades envolvidas 3. Mapa do Processo: Fluxograma de atividades: identificando as unidades organizacionais, tarefas, tempos, pessoas e interfaces envolvidas em cada atividade. Fluxograma de informaes: identificando as informaes utilizadas no processo, detalhando seu recebimento, processamento, envio, registro e interfaces envolvidas. 92 Matriz Fornecedor X Cliente Cliente A Cliente B Cliente C ... Cliente X Fornecedor A Servio 1 Servio 3 Fornecedor B Servio 2 Fornecedor C Servio 4 ... Fornecedor X Servio X 93 Smbolos para Fluxogramas Operao Operao Manual Deciso Documento Arquivar Extrair Entrada Conector Pgina Conector Incio/Fim Processo Armazenamento Preparao Dados Disco Acesso Consulta 94 Mapa de Processo Processo de Negcio D e p t o .
2 D e p t o .
3 D e p t o . 1 Incio Atividade 1 Deciso Atividade 2 Atividade 3 Fim No Sim 95 Mapa de Processo Processo de Pedidos de Venda Evento Atividade Informao Unidade Organizacional Loja Vendas Vendas Vendas Pedido Recebido Entrar Pedido Pedido Reigstrado Processar Pedido Perguntar ao Cliente Preparar Pedido Suplementar Pedido Pronto Necessidade de Informaes Informaes Recebidas Pedido Suplementado Pedido do Cliente Clientes Regulares 96 Ciclo de Melhoria de Processos Entendimento do Negcio Anlise do Processo Projeto do Processo Implementao do Processo (automao) Gerenciamento do Processo 97 Benefcios para a Aplicao da Tecnologia da Informao Identificao clara do que dever ser automatizado Aponta a priorizao das atividades a serem automatizadas Viso do todo com responsabilidades bem definidas Garantia de automatizao de um processo j racionalizado e preparado para usar a TI Necessidades de suporte de Sistemas de Informao j identificadas (dados, polticas, normas, regras do negcio, procedimentos, recursos, capacitao etc.) Reduo do tempo para obteno da viso global. 98 UML: Casos de Uso (UML Use Case) A partir dos Processos de Negcio explicita requisitos de usurios em partes significativas. Descreve a funcionalidade do sistema percebida por atores externos ligados ao Processo de Negcio. Um ator interage com o sistema podendo ser um usurio, dispositivo ou outro sistema. O planejamento e a construo de sistemas realizado pela implementao de alguns Casos de Uso em cada iterao. 99 UML: Casos de Uso Tcnica proposta por Jacobson (1992). Conceitos bsicos: Cenrio: uma seqncia de passos que descreve uma interao entre um usurio e um sistema. Caso de uso: um conjunto de cenrios amarrados por um objetivo comum de um usurio. Base para testes dos requisitos do sistema. 100 UML: Casos de Uso Caractersticas dos Casos de Uso: H um caso comum, em que tudo d certo, e que ocorre com mais freqncia. H casos alternativos, menos freqentes, que podem ocorrer quando algo sai fora do comum (outros caminhos ou erros). Captura de Casos de Uso: Descrio do cenrio primrio como uma seqncia de passos numerados. Descrio descrio das alternativas, como variaes daquela seqncia de passos mais comum. 101 UML: Casos de Uso Exemplo Compra de um Produto na Web 1. O cliente navega pelo catlogo e seleciona itens a serem comprados. 2. O cliente vai para o check out. 3. O cliente preenche o formulrio para remessa. 4. O sistema apresenta a informao total incluindo: faturamento, remessa, preos e impostos. 5. O cliente preenche a informao de carto de crdito. 6. O sistema autoriza a compra. 7. O sistema confirma imediatamente a venda. 8. O sistema envia uma confirmao para o cliente via e-mail. 102 UML: Casos de Uso Exemplo Caso Alternativo 1 Falha na Autorizao: No passo 6, o sistema falha na autorizao da compra por carto de crdito. Permite ainda ao cliente reenviar a informao do carto de crdito ou tentar novamente com outro. Caso Alternativo 2 Cliente Habitual O sistema mostra a informao total e os quatro ltimos dgitos do carto de crdito. O cliente pode aceitar ou escrever por cima destas opes e retornar para o Caso Comum no passo 6. 103 UML: Diagrama de Casos de Uso Sistema Ator Caso de Uso uses 104 UML: Diagrama de Classes (UML Static Structure) Um dos mais importantes componentes da UML. Mostra a estrutura esttica de conceitos, tipos e classes do sistema. Conceitos mostram como os usurios pensam sobre o mundo real. Tipos mostram interfaces de componentes de software. Classes mostram a implementao dos componentes de software. considerado esttico pois a estrutura descrita sempre vlida para o sistema. 105 UML: Diagrama de Classes Grfico bidimensional de elementos de modelagem que pode conter: Tipos Pacotes Relacionamentos Classes Um diagrama de objetos uma variao do diagrama de classes que mostra objetos em vez de classes. 106 UML: Diagrama de Classes +IncluirPedido() +AtenderPedido() -Nmero -Data Pedido +Incluir() +Av aliar() -Cdigo -Nome -Limite Crdido -Endereo Cliente -Pedido 0..* -Cliente 1 +IncluirItem() +CalcularTotal() -Quantidade Item Pedido -Pedido 1 -Item 1..* +IncluirProduto() +AtualizarPreo() +AtualizarSaldo() -Cdigo -Nome -Preo -SaldoEstoque Produto -Item 0..* -Produto 1 Hardware Software Suprimento Generalizao Associao Agregao Dados/Propriedades Operaes/Mtodos Super Classe Subclasse Composio Multiplicidade 107 Diagrama de Classes - Exemplo -lastName : char -firstName : char -address : char -city : char -state : char -zipcode : char -phoneNumber : char -faxNumber : char -email : char Person event +ir() : float -salary : float -cpfNum : char -title : char Person::Employe e +prazo() : int -creditLimit : float -creditCarg : char -expireDate : char Person::Client +salePrice() : float -productName : char -productPrice : float -cgcNum : char Person::Supplier 108 Cartes CRC (No fazem parte formal da UML) Ajudam a chegar essncia do objetivo de uma classe. Bons para explorar como implementar Casos de Uso. Devem se utilizados para simplificar e esclarecer detalhes. teis para o entendimento de Classes e Objetos. 109 Cartes CRC PEDIDO Verifique se os itens esto em estoque Item Pedido Determine o Preo Produto Verifique se o pagamento vlido Cliente Despache para o endereo de entrega Cliente Responsabilidade Colaborao 110 UML: Diagramas de Interao (Sequence & Collaboration) So modelos que descrevem como grupos de objetos colaboram em algum comportamento do sistema. Tipicamente capturam o comportamento de um nico Caso de Uso. Mostram vrios objetos e as mensagens que so passadas entre estes objetos em um Caso de Uso. Categorias de Diagramas de Interao: Diagramas de Seqncia Diagramas de Colaborao 111 UML: Diagramas de Seqncia (UML Sequence) Mostram o fluxo global de controle da interao entre objetos atravs de mensagens. Permitem o entendimento da seqncia de mtodos em classes distintas que revela o comportamento pretendido. Ajudam o entendimento de processos concorrentes. As duas dimenses de um diagrama de seqncia so tempo (vertical) e objetos (horizontal). 112 UML: Diagrama de Seqncia Prepare() Entrada de Pedido Pedido Item de Pedido Adicione Item() Produto VerificarEstoque() RetirarEstoque() Retorno OK() PrecisaRepor() Item Reposio Message1() Item Entrega Message2() 113 UML: Diagramas de Colaborao (UML Collaboration) Mostra uma interao dinmica de um Caso de Uso organizada em torno de objetos e seus vnculos mtuos. Utiliza nmeros de seqncia para evidenciar a seqncia de mensagens. Flechas indicam as mensagens enviadas dentro de um dado Caso de Uso. Mostra como objetos so ligados entre si. Utiliza o layout de Diagramas de Classes ou de Pacotes para esboar a colaborao entre objetos. 114 UML: Diagrama de Colaborao Janela Entrada Pedido Pedido Incluir() Item Pedido Incluir() Produto VerificarEstoque() AtualizarSaldo() Item Entrega I n c l u i r ( ) Item Reposio I n c l u i r P r o d u t o ( ) 115 UML: Diagramas de Estados (UML Statechart) Mostram como um nico objeto se comporta atravs de muitos Casos de Uso. Mostra seqncias de estados que um objeto ou uma interao assume em sua vida em resposta a eventos, juntamente com suas respostas e aes. um complemento de uma classe relacionando os possveis estados que objetos da classe podem ter e quais eventos podem causar a mudana de estado (transio). 116 UML: Diagrama de Estados Registrando Pedido Analisando Pedido Alterando Pedido Pedido enviado Analise requisitada Alterao de Pedido Solicitada Cancelamento de Pedido Cancelamento de Pedido Solicitado Pedido deve ser cancelado Aprovando Pedido Pedido para Aprovao Pedido Pendente Pedido no pode ser atendido no momento Pedido j pode ser atendido Atendendo Pedido Pedido deve ser Atendido Pedido Atendido Eventos 117 UML: Diagramas de Atividades (UML Activity) Mostra comportamento com estrutura de controle. Pode mostrar: Muitos objetos em muitos usos. Muitos objetos em Caso de Uso nico. A implementao de mtodos. um diagrama de estados especial onde a maioria dos estados de ao e a maioria das transies ativada por concluso das aes dos estados de origem. Seu propsito estudar fluxos dirigidos por processamento interno, descrevendo as atividades desempenhadas numa operao. 118 UML: Diagrama de Atividades Registrar Pedido Cancelar Pedido Autorizar Pagamento Atualizar Estoqe Aceitar Pedido 119 UML: Pacotes (UML Deployment) Mostra grupos de classes e as dependncias entre elas. Pessoa Indivduo Organizao 120 UML: Diagramas de Componentes (UML Component) So mostradas dependncias entre componentes de software. Tipos de componentes: Cdigo-fonte Cdigo-binrio Executveis.
121 UML: Diagrama de Componentes Componente da Interface 1 Componente da Interface 2 Componente de Negcios 1 122 UML: Diagramas de Implantao (UML Deployment) Mostra elementos de configurao de processamento e os componentes de software, processos e objetos que neles se mantm. Inclui o uso fsico do sistema considerando computadores, dispositivos e suas interconexes. Mostram o layout fsico dos componentes nos ns de hardware. 123 UML: Diagrama de Implantao
SERVIDOR BANCO DE DADOS ESTAO CLIENTE (PC) ESTAO CLIENTE (PC) SERVIDOR WEB Entrada do Pedido Registro do Pedido 124 Relacionamento entre as Tcnicas de Modelagem Use Case Diagrama de Classes CRC DTE DI Componentes Pacotes Implantao Reviso de Processos 125 Tecnologias de Implementao Ferramentas CASE: Rational Rose (Rational), Visio Enterprise (Microsoft) etc. Linguagens Orientadas a Objetos: Java, J++, J#, C#, VB.NET, C++ e Smalltalk Ambientes de Desenvolvimento: VisualAge for Java (WebSphere) (IBM) Oracle Applications (Oracle) Visual Studio .NET (Microsoft) Visual Caf (Symantec) Jbuilder (Borland/Inprise) Banco de Dados Orientado a Objetos: O2 (O2 Technology) Objectstore (Object Design Inc.) Jasmine (Computer Associates) 126 Implementao de uma Metodologia OO Mudana de paradigma requer treinamento intensivo. Prottipos sem compromisso. Os primeiros sistemas devem ser livres. Grupo formal de metodologia proposta e treinamento. Acerto do ambiente de desenvolvimento suporte e padres. Administrao de classes/objetos Biblioteca de Classes. Ferramenta CASE. 127 Benefcios da OO Reutilizao de cdigo. Estabilidade. O projetista pensa em termos de comportamento dos objetos e no em detalhes de baixo nvel. Construo de objetos cada vez mais complexos. Confiabilidade. Verificao de preciso. Novos mercados de software. Desenvolvimento acelerado. Integridade. 128 Benefcios da OO Programao facilitada. Manuteno facilitada. Ciclo de vida dinmico. Refinamento durante a construo. Modelagem mais realista. Melhor comunicao entre profissionais de sistemas e usurios. Interoperabilidade. Processamento Cliente/Servidor. Processamento distribudo e paralelo. Bibliotecas de classes industrializadas e corporativas. 129 Fim! Obrigado e Sucesso!