Elaboração de Diagrama de Classe a partir de Diagramas de Caso de Uso Profa. Priscila Facciolli Análise e Proj. Sist. Orient. Objetos 1 Conteúdo Realizando Casos de Uso Atores Casos de Uso Atribuindo operações às Classes Exercícios Análise e Proj. Sist. Orient. Objetos 2 Realizando Casos de Uso Os Diagramas de Casos de Uso são úteis na especificação e documentação dos requisitos do sistema. Estes requisitos precisam ser traduzidos para uma arquitetura de sistema que realize as funcionalidades denotadas por eles. Vejamos então, como converter um Diagrama de Casos de Uso em um Diagrama de Classes. Análise e Proj. Sist. Orient. Objetos 3 Atores Os atores representam entidades externas que interagem com o sistema. Para que esta interação ocorra, é necessário que os atores sejam modelados. Em geral, se um ator individual precisa ser identificado, utilizamos uma classe. Diversas instâncias dessa classe representam atores diferentes desempenhando o mesmo papel. Análise e Proj. Sist. Orient. Objetos 4 Atores Aluno - ra: inteiro - nome: string - Endereço:string Aluno <<abstract>> Terminal - no.serie: longo - Modelo: enumeração - Endereço: Endereço IP Terminal Análise e Proj. Sist. Orient. Objetos 5 Casos de Uso Para se derivar classes a partir de casos de uso, inicie listando as responsabilidades de cada caso de uso. Por exemplo, considere o seguinte Diagrama de Casos de Uso: Análise e Proj. Sist. Orient. Objetos 6 Casos de Uso Efetuar saque Cliente Efetuar depósito Efetuar transferência Banco Análise e Proj. Sist. Orient. Objetos 7 Casos de Uso As responsabilidades de cada caso de uso acima podem ser listadas: Efetuar Saque: Obter a quantia do cliente Verificar se a quantia está coberta pelo saldo em conta Verificar se a quantia está dentro da política do banco Verificar se o caixa eletrônico possui dinheiro suficiente Entregar o dinheiro Debitar a conta bancária Imprimir o comprovante do cliente Sistemas Operacionais 8 Casos de Uso Efetuar Depósito: Obter a quantia do cliente Receber o envelope do cliente Marcar a hora do depósito Creditar a conta bancária Imprimir o comprovante do cliente Efetuar Transferência Obter a conta de origem Obter a conta de destino Obter a quantia Verificar se a conta de origem cobre a quantia Verificar se a quantia está dentro da política do banco Debitar a conta de origem Creditar a conta de destino Imprimir o comprovante do cliente Sistemas Operacionais 9 Casos de Uso Note que muitas dessas responsabilidades se sobrepõe. Então, uma atitude eficiente é escrever apenas uma operação que atenda ao maior número de responsabilidades. Assim, poderíamos ter as seguintes operações: obter Quantia ( ) verificar Quantia (quantia) desembolsar Fundos (quantia) debitar (quantia) etc Sistemas Operacionais 10 Atribuindo Operações á Classes Quando uma classe é significativa no mundo real, as operações nela normalmente são claras, mas com o desenvolvimento do sistema, vamos criando classes cada vez mais abstratas. Então, para se decidir em qual classe escrever uma operação, podemos usar as seguintes regras: Análise e Proj. Sist. Orient. Objetos 11 Atribuindo Operações á Classes Receptor da Ação: Se um objeto recebe a ação enquanto outro a realiza, é melhor associar a operação ao destino, não ao seu iniciador. Consulta versus alteração: Se um objeto é alterado enquanto outros são apenas consultados pela operação, o objeto modificado é o destino da ação. Classe focal: Se uma classe é a mais central na subrede de classes envolvidas pela ação, ela é o destino da operação Analogia com o mundo real: Se os objetos fossem reais, o destino da ação seria o objeto que você pressionaria, moveria, ativaria ou manipularia de alguma forma Análise e Proj. Sist. Orient. Objetos 12 Atribuindo Operações á Classes Com essas regras, poderíamos escrever as operações do caixa eletrônico da seguinte forma: Cliente.obter Quantia ( ). Obtém a quantia do cliente. Conta.verificar.Quantia (quantia). Verifica se a quantia é coberta pela conta. Banco.verificar.Quantia (quantia). Verifica se a quantia está dentro da política do banco. Caixa Eletrônico.verificar Quantia (quantia). Verifica se o terminal possui dinheiro suficiente. Caixa Eletrônico.desembolsar Fundos (quantia). Desembolsa o dinheiro. Sistemas Operacionais 13 Atribuindo Operações á Classes Conta.debitar (quantia) – Debita a conta bancária Comprovante.inserirTransação ( ). Acrescenta uma transação ao comprovante do cliente Caixa Eletrônico.receber Fundos (quantia). Aceita o envelope do cliente com seu depósito. Conta.creditar (quantia) . Credita a conta bancária. Cliente. Obter Conta ( ) Obtém tanto a conta de origem quanto a conta de destino. Comprovante.emitido ( ). Emite o comprovante. Análise e Proj. Sist. Orient. Objetos 14 Atribuindo Operações á Classes Podemos agora elaborar o Diagrama de Classes: 1 1 Banco * * Conta saldo Verificar Fundos Caixa Eletrônico Verificar Quantia Dinheiro disponível Creditar Verificar quantia debitar Desembolsar fundos Comprovante transações Receber fundos 1 * Inserir Transação Cliente * 1 Obter Quantia Obter conta Emitir Análise e Proj. Sist. Orient. Objetos 15 Exercício 1) Uma impressora multifuncional é capaz de imprimir, digitalizar, copiar, enviar e receber fax. Considere o seguinte Diagrama de Casos de Uso para essa impressora: << include >> Receber Fax Imprimir << include >> << include >> Copiar Computador Digitalizar << include >> Linha Telefônica Enviar Fax Análise e Proj. Sist. Orient. Objetos 16