Modelagem de Sistemas Orientada a Objeto Com UML Diagramas da UML • Diagramas de casos de uso – Diagramas, descrições e modelos de objetos. • Diagramas de estrutura – Diagramas de classe e de objeto. • Diagramas de interação – Diagramas sequenciais e de colaboração. • Diagramas de estado – Diagramas de mudanças de estado e de atividades. • Diagramas de implementação – Diagramas de pacotes, de componentes e de desdobramento. Relação entre os diferentes diagramas da UML Diagramas de estado Pedido enviado Alteração de pedido Registrando pedido Pedido não pode ser atendido no memento Especificação de Requisitos Cancelando pedido Pedido para aprovação Pedido será cancelado Analisando pedido Cenários Cancelamento de pedido Alterando pedido Pedido para análise Especificação de requisitos Pedido para aprovação Receber pedido Pedido cancelado Separação Preencher pedido Aprovando pedido Enviar fatura Desvio/Decisão Pedido será atendido Receber pagamento Pedido já pode ser atendido Entregar urgente Colocando pedido Diagramas de implementação Atendendo pedido Pedido atendido Entregar normal Intercalação Junção IU Processamento de Pedido Fechar pedido IU Mala Direta AWT Aplicação Processamento de Pedido Pedidos Pedido 1 Entra Vendedor 1 Pedido Aplicação Mala Direta Móveis Ltda. Clientes Acessa 1..* Contabilidade Mesa AB. 1 Cadeira Z. Cliente_info osu ed sosac sod oãçircseD * Acessa Vendedor A Contabilidade Pedido 2 Inclui Loja M. sadnev ed ametsiS tenretnI alep Cliente_info complem_1 Acessa Inventário Cadeira Z. 1..* oirótaleR sadnev ed ed ametsiS edadilibatnoc Mesa 15. Cliente_info complem_2 Item_pedido Acessa * Mesa 222. Inventário Poltrona X. Cobrança. exe rodedneV Registro. exe sadnev ed oirótaleR siaudividni ed ametsiS oirátnevnI sadnev ed oirótaleR sianoiger Diagramas de classe etnereG lanoiger Diagrama de caso de uso Vendedor Entra 1 Pedido_ID Total_$ Entrar_ID Preencher_Ped Submeter_Ped Ver_Vend_ID Sub_Ped_Cont Sub_Ped_Inv Nome-Client End_Cobran Limit_Credit 1..* Item Ver_Item Total_Ped Uma Linha de Pedido Aluno. cls Professor. cls Submete Cliente Inclui Um Pedido Curso_ Oferecido. cls Tem 1 Janela entrada de Pedido Curso. cls Pessoa. exe Pedido 1..* Nome_Vend Vendedor_ID Item_ID Nome_Item Preco_Item Imposto Transporte Cartões CRC Curso. dll Ver_Credit Atual_Status * Acessa Contabilidade Cliente_info complem_1 Cliente_info complem_2 * Acessa Inventário Janela entrada de Pedido prepare() *prepare() :Janela de Entrada de Pedido temEstoque:= verificar() 1:prepare() [temEstoque] retirar() precisaReposição:= precisaRepor() [precisaReposição] Um item de reposição :Pedido 2*[para todas as linhas do pedido] :prepare() 3:temEstoque: +verificar() 4:[temEstoque]:= remover() linhaMacau:LinhaDePedido 7:[temEstoque]:novo [temEstoquenovo] Um item de entrega :ItemDeEntrega Sistema de Vendas Servidor Internet 5:precisaReposição:= precisaRepor estoqueMacau: ItemDeEstoque Pacote 1 Módulo de Vendas Cliente 6:[precisaReposição]:novo :ItemDeReposição Sistema de contabilidade Notebook Vendedor Várias plataformas (Intel/Windows; Apple/MacOS) Pacote 2 Gestão de Vendas Rede corporativa Novell Network/SQL Pacote 3 Interface para banco de dados Sistema de inventário SUN Solaris/UNIX Diagramas de interação Especificação de Requisitos Especificação de requisitos Cenários • Cenários descrevem passo a passo exemplos específicos de uso do sistema. Os nomes e verbos utilizados na construção do cenário frequentemente definem classes e operações, respectivamente. • Ex.: O cliente navega no catálogo de itens e adiciona itens desejados à sua cesta de compras. Quando o cliente deseja pagar, descreve o endereço de entrega, fornece as informações do cartão de crédito e confirma a venda. O sistema verifica a autorização do cartão de crédito e confirma a venda imediatamente e envia um e-mail logo a seguir. Diagrama de casos de uso • Diagrama de caso de uso define processos genéricos que o sistema deve estar capacitado para realizar e as interações entre os processos e sistemas externos ou pessoas (atores). As descrições dos casos de uso definem cenários genéricos. Descrição dos casos de uso Sistema de vendas pela Internet Relatório de vendas Sistema de contabilidade Vendedor Relatório de vendas individuais Gerente regional Relatório de vendas regionais Sistema de Inventário Cartão CRC • Cartões de Classes, Responsabilidades e Colaboradores proporcionam aos usuários e desenvolvedores um modo para identificar classes, atributos e mensagens, trabalhando com cenários. Nome da classe Descrição da função da classe Atributos Nome da classe Super classes Subclasses Responsabilidades (operações) Colaboradores (associações entre classes) Cartão CRC Exemplos Vendedor Pessoa que submete pedidos de clientes. Pedido Documento (eletrônico) submetido por um vendedor contendo informações sobre o cliente e os itens desejados. Cliente Uma empresa ou indivíduo que busca comprar algum produto e/ou obter crédito. Sistema de contabilidade Fonte de informações sobre a disponibilidade de crédito de clientes potenciais. Inventário Fonte de informações sobre a disponibilidade de itens dos produtos oferecidos, prazo de entrega, ... Modelo de Objetos Ideais • O modelo de objetos ideais, criado por Jacobson (OOSE, Object Oriented Software Engineering), define três tipos de classes de acordo com a abrangência de cada uma (classes de interface; classes de entidade, classes de controle). Solicitação de Extrato Transferência de fundos Cliente Depósito Sistema Banco Diagramas de estrutura Diagramas de classe (1) • O diagrama de classe descreve as classes, suas associações com outras classes (responsabilidades) e relacionamento de herança. Entra Vendedor 1 Pedido 1..* 1 Cliente_info * Acessa Contabilidade Inclui Cliente_info complem_1 Cliente_info complem_2 Acessa Inventário 1..* Item_pedido * Diagramas de estrutura Diagramas de classe (2) Vendedor Entra 1 Pedido 1..* Nome_Vend Vendedor_ID Pedido_ID Total_$ Entrar_ID Preencher_Ped Submeter_Ped Ver_Vend_ID Sub_Ped_Cont Sub_Ped_Inv Tem 1 • O diagrama de classe pode descrever de forma mais complexa os atributos e as operações das classes. Cliente Inclui Nome-Client End_Cobran Limit_Credit 1..* Item Item_ID Nome_Item Preco_Item Imposto Transporte Ver_Item Total_Ped Submete Ver_Credit Atual_Status * Acessa Contabilidade Cliente_info complem_1 Cliente_info complem_2 * Acessa Inventário Diagramas de estrutura Diagramas de objetos • O diagrama de objetos é usado para explorar problemas específicos em determinadas classes. Pedido 1 Móveis Ltda. Acessa Contabilidade Mesa AB. Cadeira Z. Vendedor A Pedido 2 Loja M. Mesa 15. Cadeira Z. Mesa 222. Poltrona X. Acessa Inventário Diagramas de interação • O diagrama de interação é um modelo que descreve como grupos de objetos colaboram em algum comportamento. • O diagrama de interação captura o comportamento de um único caso de uso. Exibe vários objetos e as mensagens que são trocas entre eles em um caso de uso. • Existem dois tipos de diagramas de interação: diagramas de sequência e diagramas de colaboração. Diagramas de interação Diagrama de sequência • O diagrama de sequência mostra o fluxo de mensagens (eventos) entre objetos. Proporciona um modo formal para especificar um cenário. • Os objetos são mostrados como caixas na parte superior de uma linha tracejada. A barra vertical é chamada de linha da vida do objeto e representa a vida do objeto durante a interação. Cada mensagem é representada por um vetor entre as linhas de vida de dois objetos. A ordem na qual as mensagens ocorrem é mostrada da parte superior à parte inferior do diagrama. Existem ainda as autochamadas, uma mensagem que o objeto chama para si mesmo. Diagrama de sequência Janela entrada de Pedido Um Pedido Uma Linha de Pedido Janela entrada de Pedido prepare() *prepare() temEstoque:= verificar() [temEstoque] retirar() precisaReposição:= precisaRepor() [precisaReposição] Um item de reposição [temEstoquenovo] Um item de entrega Diagramas de interação Diagrama de colaboração • O diagrama de colaboração é uma combinação de objetos e sequência de diagramas. Ele mostra o fluxo de eventos entre objetos. • Os objetos são representados por retângulos com seus nomes (de objeto ou classe). Se apropriado, coloca-se também os atributos associados. Linhas conectam os objetos (mensagens), com denominações indicando as operações (cada operação é precedida por um número sequencial para indicar a ordem de execução. Um vetor após ou ao lado do nome da operação indica a direção do fluxo (a operação sempre é executada onde reside, o vetor aponta a origem da operação). Diagrama de colaboração :Janela de Entrada de Pedido 1:prepare() :Pedido 2*[para todas as linhas do pedido] :prepare() 3:temEstoque: +verificar() 4:[temEstoque]:= remover() linhaMacau:LinhaDePedido 7:[temEstoque]:novo :ItemDeEntrega 5:precisaReposição:= precisaRepor estoqueMacau: ItemDeEstoque 6:[precisaReposição]:novo :ItemDeReposição Diagramas de estado • Estado se refere a um conjunto de valores quer descrevem um objeto num determinado instante. Em outras palavras, um objeto é determinado pelos valores associados aos seus atributos. • Diagramas de estado são chamados também de diagramas de transição de estado. Exibe em detalhes o comportamento de um objeto. • O diagrama de estado mostra todos os valores (estados) que o atributo de um objeto pode assumir quando mensagens (eventos) são processadas. Diagramas de estado são mais úteis para classes cujas instâncias são muito dinâmicas. Diagramas de estado (1) Pedido enviado Alteração de pedido Registrando pedido Alterando pedido Pedido para análise Analisando pedido Pedido não pode ser atendido no memento Colocando pedido Cancelamento de pedido Cancelando pedido Pedido para aprovação Pedido será cancelado Pedido para aprovação Pedido cancelado Aprovando pedido Pedido será atendido Pedido já pode ser atendido Pedido atendido Atendendo pedido Diagramas de estado (2) Subestado simultâneo Preparando despacho de mercadoria Selecionando itens de carga Emitindo romaneio Itens selecionados Montando carga Carga montada Romaneio emitido Subestado sequencial Fechamento do negócio Analisando crédito Crédito Ok Analisando itens de compra Itens analisados Negociando condição Negócio fechado Diagramas de atividades • O diagrama de atividades mostra todas as atividades que provocam mudanças de valores em um objeto. Diagramas de atividades são usados para capturar o fluxo de trabalho (“workflow”) ou a sequência de decisão em um processo. • Na UML, atividades são chamadas de estados, então, o diagrama de atividades está associado ao diagrama de estado. • Num diagrama de atividade, os estados são normalmente atividades limitadas no tempo. Eventos geralmente estão associados às transições. • Diagrama de estado focaliza os eventos que ocorrem para um determinado objeto. Diagrama de atividades podem ser usados para modelar todo um processo de negócio ou proporcionar uma visão global do que está acontecendo dentro de um caso de uso. Diagrama de atividades Receber pedido Separação Preencher pedido Enviar fatura Desvio/Decisão Receber pagamento Entregar urgente Entregar normal Intercalação Junção Fechar pedido Diagramas de implementação • Diagramas de implementação mostram decisões sobre o design e a arquitetura do sistema. Existem três tipos: • Diagramas de pacotes: permitem que os desenvolvedores mostrem como as classes podem ser subdivididas em módulos. São diagramas lógicos e não necessariamente implicam em uma divisão física das classes. • Diagramas de componentes: são usados para mostrar os módulos físicos que um desenvolvedor deve utilizar. • Diagramas de desdobramento: permitem que os desenvolvedores modelem a plataforma física e a rede que será utilizadas pela aplicação. Diagrama de pacotes IU Processamento de Pedido IU Mala Direta AWT Aplicação Processamento de Pedido Aplicação Mala Direta Pedidos Clientes Diagrama de componentes Cobrança. exe Registro. exe Curso. dll Curso. cls Curso_ Oferecido. cls Pessoa. exe Aluno. cls Professor. cls Diagrama de desdobramento Sistema de Vendas Servidor Internet Sistema de contabilidade Notebook Vendedor Pacote 1 Módulo de Vendas Cliente Várias plataformas (Intel/Windows; Apple/MacOS) Pacote 2 Gestão de Vendas Rede corporativa Novell Network/SQL Pacote 3 Interface para banco de dados Sistema de inventário SUN Solaris/UNIX