You are on page 1of 129
: anes du em UME 51 exercicios resolvidos ig inclui questdes de concursos ptiblicos @ apresenta comentarios '® modelos compativeis com as versdes 1.4 e 2.0 da UML Apresentacao Minha experiéncia lecionando disciplinas de modelagem de desenvolvi- mento de:sistemas, com foco em UML, aliada @ necessidade de ter um material de apoio técnico mais completo, me levaram a escrever Desen- volvendo AplicagSes com UML' — do conceitual 4 implementacao. Entretanto, passei a perceber outras necessidades em sala'de aula, nessa e em outras disciplinas: um material de apoio pratico, que pudesse ser u- sado para fixagao da materia. Notei que essa nao era uma necessidade sé da docéncia, mas também do aluno que entende a teoria, mas néo consegue sair do ponto zero, néo consegue comecar. E por que isso? Porque sem pratica nao ¢ possivel aprender. Sem exercicios no ha como termos certeza do aprendizado. E olhando para minha experiéneia, ha dezoito anos como Analista e Pro- gramadora, percebi que também temos a necessidade do exemplo, Princi- palmente quando aprendemos sozinhos. Nesse caso, aprendemos por meio de tentativas e erros, exemplos e exercicios. Assim, espero que esse material atenda a todos: professores, alunos e profissionais da area. O livro esta dividido em capitulos, que tratam dos seguintes temas: Capitulo 1 — Encontrando classes, atributos e relacionamentos. Capitulo 2— Desenhando diagrama de classes a partir de minicenarios. 9 Desenvolvendo Aplicagses com UML 2.0 (2* edigto). X + Exercitando Modelagem em UML Capitulo 3 — Exercitando a identificagao de casos de uso. Capitulo 4 — Exercitando a identificagéo de classes a partir de casos de uso. Capitulo 5 — Alguns exercicios sobre diagrama de méquina de estados. ae A Quest6es de concursos piblicos sobre orientagao a objetos e UML. Alguns exercicios possuem complementos na forma de outros exercicios, oferecendo variagdes ou incrementos ao problema inicial. Vocés vao reparar que a maioria dos cenérios é descrita como sendo pes- ‘s0as comuns que precisam de uma ferramenta para resolver seus proble- mas. Meu objetivo com esse tipo de abordagem foi o de aproximar 0 pro- blema do conhecimento piiblico do meu leitor. Assim, tenho certeza que voe8s iréo se familiarizar com os problemas de cada um de nossos perso- nagens. Quaisquer dividas, comentarios, sugest6es e/ou criticas podem ser envia- das para meu e-mail livo@anacristinamelo.eti.br. Obrigada ¢ boa leitural “A diferenca no esté no tamanho do seu sonho, ‘mas no tamanho da sua vontade em querer realizé-io! sempre que voo8 conseguir realizar um sonho, comece tudo de novo, Ngo podemos viver sem ter objetivos!” ‘Ana Cristina S. L. Melo 1. Encontrando Classes, Atributos e Relacionamentos Exercicio: Conta de Luz. Exercicio: Classe TextoSaida Exeroloio: Classe BoneooEmMovimento.. Exercicio: Horério de Remédios .. Exercicio: Gastos Digrios... Exercicio: Comanda EletrOnica.... Exercicio: Lista de Compras .. Exercicio: Lista de Compras (Variagao A).. Exercicio: Lista de Compras (Variagao B).. 10. Exercicio: Lista de Compras (Variagao C).. 11. Exercicio: Lista de Compras (Variacao D).. 12. Exercicio: Colegao de CD's SeNooReENs eisaaanso 15. Exercicio: Sala de Reunigo (Variagao A).. 46. Exercicio: Heranga.cunuennsnsnsnsian 2, Desenhando Diagrama de Classes a partir de Minicenarios, 17. Minicenario: Controle de Terefes.. 18. Minicenario: LigagSes telefénicas via modem 19. Minicenario: Testes de Fixagéo.... 20. Minicenario: Testes de Fixagao (Variagao A) 21, Minioenaiio: Festas infantis 22, Minicenério: Festas infantis (Variagao A)... 23, Minicendirio: Cursos de Aperfeigoamento 24, Minicenério: Cursos de Aperfeicoamento (Variagao A)... 37 25. Minicenério: Classificados na Web 26. Minicenério: Jogo da Forca. RBS uhh XII + Exercitando Modelagem em UML 3. Exercitando a Identificagao de Casos de Uso. 34. Cenétio: Encomenda de places... 35. Cenario: Radio Taxi Mer & Sol 36. Cenério: Treinador de VOIE unm 37. Cenéirio: Controle de Obra . 38. Cenério: Controle de Obra (Variagao A) 39. Cenério: Senha de Atendimento. 40, Cenario: Controle de Boldo.. 4, Exercitando a pe ee eee de Uso..107 ‘44, Cenério: Encomenda de placas.... 107 45. Cenério: Radio Taxi Mar & Sol. 46. Cenérrio: Treinador de Vole! 47. Cenério: Controle de Boldo.. 48. Cenério: Jogo da Velha, 5: Aiguns Exercicios sobre Diagram de Maquina de Estados. 49, Cenério: Controle de Tarefas. 50. Cenério: Encomenda de Placas.. 51, Cenario: Radio Taxi Mar & Sol. } Apéndice. Questées de Concursos Pablicos sobre Orientacao a Objetos e UML... 4 Encontrando Classes, Atributos e Relacionamentos Um dos principais diagramas da UML é 0 Diagrama de Classes. Obser- vando meus alunos, nao vejo dificuldade no aprendizado do que é um re- lacionamento de associagao, heranga ou agregacéo. Velo dificuldade em se abstrair 0 conceito desses relacionamentos do mundo real, ou melhor, de um problema real. Provavelmente seja facil entender que nome 6 atributo de pessoa, e que funcionario é uma heranca de pessoa. Mas sera que 0 nivel de facilidade permanece o mesmo quando estamos diante de um pro- blema real ¢ este precisa ser abs- traido para atributos, classes, rela- sionamentos © outros elementos? Posso apostar que nao! E como é Possivel que essa abstrago se tome uma tarefa natural? Respon- do: exercitando e/ou aprendendo por meio de andlise de exercicios prontos. 2 + Exercitando Modelagem em UML Vamos comegar a exercitar essa abstragao mais priméria, que esta dire- tamente ligada ao conceito de orientaco a objetos, mas que sem ela nao existe modefo em UML. Vamos perceber, na evolucdo dos exercicios, 0 quanto uma modelagem pode mudar, de acordo com 0 contexto em que estamos trabalhando. Nosso objetivo nesse capitulo é trabalhar a abstra- 80, por isso s6 desenharemos a classe na notagao da UML quando for necessério explicar os relacionamentos. Os primeiros exercicios procuram extrait de um descritive (que eu chamo de cendrio) a classe existente, seus atributos e/ou métodos. Os exercicios seguintes comecam a explorar a existéncia de mais de uma classe, Nesses exercicios, teremos variagdes dos mesmos problemas, a fim de exercitar a evolugao da modelagem. Para entendimento geral desse capitulo, leia com atengao as convengées que adotei para resolueao dos exercicios. CONVEN LO: - Na maioria dos exercicios néo sao desenhadas classes no padrao da UML. As classes so apenas relacionadas numa tabela; ~ Os atributos e métodos segue a nomenciatura da UML, ou seja, iniciam com letra mindscula, tendo a primeira letra de cada palavra (a partir da segunda) em maidscula; — Todos os atributos possuem seus tipos identificados. Quando o atributo for um objeto, 0 tipo & citado como Classe XYZ, onde XYZ 6 o nome da classe, Quando 0 atributo for uma colegio (uma lista), 0 tipo € citado como eae onde XYZ é 0 nome da classe correspondente a cada item da lista; — Todos os métodos possuem, se existir, sua lista de parametros (acom- panhados do tipo) e o tipo de retorno} — Os métodos descritos foram deduzidos a partir do cenario. Entretanto, a lista completa dos métodos sé é possivel obter a partir de um diagrama de seqiéncias, que tem por objetivo identificar a troca de mensagens existen- te entre objetos, em cada caso de uso, Por este motivo, relaciono apenas 08 métodos mais relevantes; Encontrando Classes, Atributos e Relacionamentos + 3 — Os relacionamentos so descritos na segdo de “Comentarios sobre a Resolugao", em vez de serem representados numa classe; — Na fase de andlise,’ cabe desenharmos uma classe representando seus relacionamentos. Na fase de projeto, cabe transformarmos esses relacio- namentos em atributos, de forma a representar como eles serdo implemen- tados. Para melhor entendimento dos exercicios, especificamos esses atri- butos que correspondem aos relacionamentos implementados. Esses atri- butos so identificados como atributos derivados, pois seus valores nao so informados e sim gerados a partir de um relacionamento. Exemplo: Um funcionério possui os atributos nome e cargo. Porém cargo é uma classe que possui os atributos descricao e salério. O atributo cargo dentro de funcionario é fruto do relacionamento das duas classes; ~ Todo atributo cujo tipo seja uma classe enumeration, nao é definido co- mo um atributo derivado, visto a classe enumeration atuar como um tipo de dado e néio como um relacionamento; ~ Atributos @ métodos de classe séo representados sublinhados, conforme notagéo da UML; ~ Em alguns exercicios, para elucidar 0 cenério, so exibidas cépias de planithas ou relatorios existentes no Mundo Real de nossos clientes, Aten- 40! Alguns requisitos, as vezes, estao implicitos nesses exemplos. 1. EXERCICIO: CONTA DE LUZ CENARIO: As informagSes a seguir se referem a planilha Excel de Gabriel, {que controla os gastos mensais com sua conta de luz. Para cada conta de luz cadastra-se: data em que a leltura do relégio de luz {oi realizada, nimero da leitura, quantidade de Kw gasto no més, valor a pagar pela conta, data do pagamento e média de consumo. Mensalmente, sao realizadas as seguintes pesquisas: ~ verificagao do més de menor consumo; ~verificagao do més de maior consumo. 4 + Exercitando Modelagem em UML IMAGEM DA PLANILHA: ContaLuz COMENTARIOS SOBRE A RESOLUGAO: o4o7/2005| 4166. 460] 206.43] 15/07/2005] 15.3, o2ioer2005| 4201 aso] 457,07| 15/08/2005 | 12,06 ‘Menor Consumo 350. Maior Consumo 460 jul05) verificaMesMenorConsumo : string verificaMesMaiorConsumo : string a) O retorno do método é string pois traz o més e 0 ano (ex: 082005). 2. EXERCICIO: CLASSE TEXTOSAIDA CENARIO: Para fixagéio do concsito de classes em sala de aula, Prof* Cris- tina criou com seus alunos a classe TextoSaida. © objetivo do exercicio é criar uma classe que permita configurar um texto ‘por t de atributos (tamanho da letra, cor da fonte e cor do fundo), esco- ‘ memo). Eeeseairors it 0 ver chil (rive as opcoon Encontrando Classes, Atributos ¢ Relaclonamentos + 5 Para n&o haver vinculo com linguagens de programagao, essa classe nao. foi criada como heranga de uma classe visual. ‘As cores podem ser escolhidas entre os tons: preto, branco, azul, amarelo ou cinza. texto: tipoComponente : EnumTipoComponente cadastrar tamanhoLetra : integer exibirTexto ‘corFonte: EnumGor corFundo : EnumCor label edit memo preto branco ezul amarelo cinza TextoSaida «enumeration» EnumTipoComponente «enumeration» EnumCor COMENTARIOS SOBRE A RESOLUCAO: a) A classe enumeration EnumTipoComponente foi criada para suportar 0 dominio do atributo tipoComponente, que consiste de valores fixos, defini- dos como sendo os componentes onde o texto pade ser exibido. O mesmo ‘aconteceu com a classe EnumCor. 3, EXercIcIo; CLASSE BONECOEMMOVIMENTO CeNARIO: Professora Cristina decidiu criar uma classe que permita mover um boneco na tela, Esse boneco deve ter nome, posigéo da coordenada X, posicao da coor- denada Y e diregao atual (cima, baixo, direita, esquerda). 6 + Exercitando Modelagem em UML nome : string cadastrar ‘coordenadaX : integer mover (novaCoordenadaX: ‘oordenadaY : integer integer, novaCoordena- direcaoAtual : EnumDirecao_| _da¥: integer) cima «enumeration» | beixo EnumDirecao | direita esquerda COMENTARIOS SOBRE A RESOLUGAO: a) Para que 0 boneco se mova, cabe ao ator informar a nova coordenada. Isso é felto por meio de parametros do método Mover. Apés mover o bo- Neco, os atributos coordenadaX e coordenadaY sao atualizados com os valores dos parametros novaCoordenadaX e novaCoordenadaY, respecti- vamente. Para alterar a diregéo, basta antes de chamar 0 método mover, mudar 0 valor do atributo direcaoAtual. 4, EXERCICIO: HORARIO DE REMEDIOS CENARIO: As informagSes a seguir se referem a uma aplicacao de controle pessoal de horario de remédios, existente no Palm de Mauricio. Para cada remédio cadastra-se: 0 nome de quem vai tomar o remédio, a data de inicio, a quantidade de dias que foi prescrita pelo médico, a quan- tidade de vezes ao dia, a dosagem e 0 nome do remédio. Ao cadastrar 0 remédio, a aplicagao sugere todos os hordrios possiveis para tomar 0 remédio. O usuario escolhe o melhor horério a aplicagao avisa até quando o remédio deve ser tomado e prepara uma planitha de horéiros. © usuario, no inicio do dia, seleciona a opgao de planilha de hordrios de remédios do dia. Encontrando Classes, Atributos ¢ Relacionamentos + 7 No caso de Mauricio atrasar 0 horario de tomar 0 remédio num determina- do dia, a planilha reorganiza os horérios daquele dia. ‘sugerirHorarios exibirPlanithaHorerios (dataReferencia : date ) PrescricaoRemedio HorarioRemedio COMENTARIOS SOBRE A RESOLUGAO: a) Numa primeira modelagem, os atributos remédio e usuario (do Remé- dio) foram definides como string. Esses atributos so fortes candidatos a se lornarem classes de negécio. O que determina essa mudanga é o con- texto da aplicagao. Nesse caso, estamos tratando de uma aplicagao bem Pequena, cujo objetivo principal é o controle de horérios. Sendo assim, podemos nessa verso no transformar esses atributos em classes. b) Toda prescrigao tem associada a ela uma planitha de hordrios. \sso cria um relacionamento da classe PrescricaoRemedio com a classe Horario- Remedio, representada pelo atributo planilhaHorario, que corresponde a uma coleg&o de objetos da Classe HorarioRemedio. c) O método sugerirHorario é responsével por montar um conjunto possivel de hordrios, a partir do atributo gtdVezesDia, Por exemplo, se um remédio ‘iver que ser tomado de 8 em 8 horas, a aplicago pode sugerir os seguin- tes hordrios: [6h, 14h, 22h], (7h, 15h, 23h], [8h, 16h, 24h]. Uma vez escolhido 0 conjunto de horarios, 0 método HorarioRemedio.ca- dastrarHorario @ chamado quantas vezes forem necessarias para cadas- trar todos os horarios em todos os dias. Exercitando Modelagem em UML 4) A classe HorarioRemedio foi criada incluindo o atributo data, para permi- {ir 0 cadastramento de hordirios diferentes para cada dia. Se nao fosse por essa abordagem, poderiamos ter criado um atributo horério: time na classe PrescricaoRemedio, com multiplicidade de [1..*], prevendo de uma a varias doses (horarios) por dia. 5. Exercicio: Gastos DiARIOS CENARIO: As informagbes a seguir se referem a Planilha Excel de Vera, que faz 0 controle de seus gastos diarios. Para cada gasto, Vera cadastra: o tipo do gasto (remédio, roupa, refeicao etc.), a data do gasto, o valor gasto e a forma de pagamento (dinheiro, cheque, cartao ou cheque pré). No final do més, Vera lista 0 total dos gastos mensais, palwaios po fo ue gasto e exibindo o quanto foi gasto em cada tipo de forma de pagamento. gerarRelatorioMen- formaPagamento : Eaum- ‘sal(mesAno: string) yento FormaPagam enumeration» oe EnumFormaPaga- mento: chequePre ‘COMENTARIOS SOBRE A RESOLUGAO: a) A classe enumeration foi criada para suportar o dominio do atributo FormaPagamento, que consistia de valores fixos e com caracteristicas de Encontrando Classes, Atributos e Relacionamentos + 9 Tara mutagao. Numa aplicagao de contexto maior, essa classe poderia dei- xar de ser enumeration para se transformar numa classe de negécios. b) Todo gasto refere-se a somente um tipo. Isso cria um relacionamento da classe Gasfo com a classe TipoGasto, representada pelo atributo tipo. ) Toda a complexidade do relatério mensal esté encapsulada no método gerarRelatorioMensal. 6. EXERCICIO: COMANDA ELETRONICA CENARIO: As informaces a seguir se referem a uma aplicacéo de controle de comanda eletrénica da padaria Doce Sabor do Seu Joaquim. © cliente usa uma comanda eletrénica durante suas compras na Padaria. A cada produto consumido, atendente registra em sua comanda (que possui uma numeragdo) 0 produto e a quantidade. ‘Ao passar no caixa na saida da Padaria, a Caixa Ié os gastos da comanda, finalizando a compra. Na leitura da comanda, verifica-se o valor unitario de cada produto a fim de calcular 0 valor total da compra. ‘codigo : string Produto descricao : string cadastrar precoUnitario : real numero: integer registraritem( item : ItemCo- NalorTotal : real Comanda ‘manda ) fitens : Colegao de ItemCo- manda fecharComanda ItemComanda_| /Produto: Produto cadastrar quantidade : integer 10 + Exercitando Modelagem em UML COMENTARIOS SOBRE A RESOLUGAO: a) O atributo valorTotal da classe Comanda é derivado, porque é 0 resulta- do do calculo do método fecharComanda. Esse método obtém todos os itens da Comanda e para cada um verifica o prego Unitario do produto, calculando 0 sub-total, de acordo com a seguinte formula: ‘temComanda.quantidade * TtexComanda.produto.precoUnitario © total da Comanda (atributo valorTotal) 6 o somatério dos subtotais. b) Toda comanda possui uma lista de itens. Isso cia um relacionamento da classe Comanda com a classe ItemComanda, representada pelo atribu- to itens, Por sua vez, um item de comanda se refere a somente um produ- to, Esta representacdo ¢ feita no atributo produto. 7. Exercicio: Lista DE COMPRAS CENARvo: Carolina controla em Excel uma planilha com a sua lista de com- ras mensal. Ela cadastra o nome do produto, a unidade de compra, a quantidade prevista para um més, a quantidade que efetivamente sera comprada € 0 prego estimado (atualizado todo més). IMAGEM DA PLANILHA: Total Estimado 150,00) ESCLARECIMENTOS SOBRE 0 PROBLEMA: a) A quantidade de compra pode variar em virtude de sobra de um més para 0 outro, ou da necessidade de um gasto maior no més. Por exemplo: almogo em familia. b) As compras so feitas pela propria Carolina. Por esse motivo, ela nfo vé necessidade de relacionar as marcas dos produtos. Encontrando Classes, Atributos ¢ Relacionamentos + 12 c) Mensalmente, Carolina analisa © quanto pagou por cada produto, ¢ se achar necessério, atualiza 0 prego estimado de cada produto. COMENTARIOS SOBRE A RESOLUGAO: a) © método obterTotalEstimado ¢ um método que atua sobra a colecdo de objetos ltemCompra, ou seja, s6 podemos saber qual é 0 total estimado de toda a Lista de Compras (conjunto dos itens de compra), se quantifi- ‘carmos © subtotal de cada item. Sendo assim, podemos concluir que © atributo totalEstimado que pertence a Lista de Compras é derivado, pois ‘0 resultado desse método. © algoritmo do método obterTotalEstima- do(més: integer) 6: define objitenconpra + Ttexconpra obter a colegio de objrtencompra, onde ListaCompra.noe = parinetro mds cotal € 0 para cada objztencompra subtotal € ‘objrtenConpra.atdrfetivacompra * ‘objrtenconpra.produto.precoRstimado total € total + subtotal fimpara ‘obterTotalestimads € total 12 + Exercitando Modelagem em UML b) Toda lista de compras possui um conjunto de itens. Isso cria um relacio~ namento da classe ListaCompra com a classe ItemCompra, representada pelo atributo itens, Por sua vez, um item de compra se refere a somente um produto. Essa representagao se da por meio do atributo produto. } 8. EXERCICIO: LISTA DE COMPRAS (VARIAGAO A) ‘CENARIO: Carolina ndo tem mais tempo de fazer as compras pessoalmen- te, Precisou detalhar 0 produto, de forma a the permitir delegar essa tarefa a outra pessoa. Além disso, ndo quer que paguem um valor absurdo por algum produto. Sendo assim, incluiu em sua planitha as colunas “prego, maximo ja comprado" e “prego maximo a pagar” no més corrente, onde esta titima coluna calculada a partir da coluna anterior acrescida de 5%. © “prego maximo j& comprado” ¢ inserido na planilha, a partir das compras realizadas, ‘mes : integer cadastrar eee ee eas | ee cee agers totalE'stimado : real integer) Tproduto : Classe Produto temCompra | qtdEfetivaCompra : real cadastrar IprecoMaximoMes : real ‘nome : string doscricaoProduto : string prone unidadeCompra : string cadastrar COMENTARIOS SOBRE A RESOLUGAO: a) Os atributos e ou métodos criados estao em negrito. O que foi retirado consta riscado. Encontrando Classes, Atributos e Relacionamentos + 13 b) Com a criagao dos atributos precoMaximoAnterior e precoMaximoMes, eliminou-se 0 atributo precoEstimado. Essa informagao sera obtida a partir do atributo precoMaximoAnterior. ¢) O atributo precoMaximoAnterior 6 cadastrado pelo usuario. ) 0 algoritmo do método obterTotalEstimado foi alterado: define objrtencompra : TtenCorpra obter colegio de objTtenconpra, onde Listacorpra.nes ~ pardnetro mis total € 0 para cada chjrtenConpra subtotal € ‘objTtencompra.gtdefetivacompra + bjrtenconpra.produto.pracokaximodnterior total € total + subtotal fim-para obtertotalmstinado € total €) O atributo precoMaximoMes & derivado, pois ele néo recebe um valor diretamente do usuario. Seu valor é derivado de um célculo feito sobre 0 atributo precoMaximoAnterior, considerando a formula a seguir. Esse atri- buto também poderia ter sido definido como um método do tipo fungao, cujo retorno seria o prego maximo do més. Ttencompra.precoMaxinotes = ItesCompra.produto.precotleximoanterior * 1.05 9. EXERCICIO: LISTA DE COMPRAS (VARIAGAO B) CENARIO: Carolina esté assustada com a variacdo de prego de um Supermer- ‘cado para outro. Tem feito compras (ou pedido para fazer) em até trés Su- jos diferentes. Sendo assim, resolveu melhorar sua planilha. Criou ‘segunda planilha que contém o prego mais baixo que ela pagou num ributos e/ou métodos qui {itens : Colegao de temCompra {total€stimado : real /produto : Classe Produto qtd€fetivaCompra : real IprecoMaximoMes : real nome : string descricaoProduta : string unidadeCompra : string tdPrevistoMes : real IprecoMaximaAnterior: real HistoricoGompra mes : integer Iproduto ; Classe Produto valorPago : real Isupermercado : Classe Supermercado, cadastrar Supermercado nome : string cadastrar COMENTARIOS SOBRE A RESOLUGAO: a) O atributo mes da classe HistoricoCompra esta definido como para armazenar 0 nimero correspondente ao més do ano. b) 0 attibuto precoMaximoAnterior nao é mais langado manualment usudrio. Agora, ele é obtide automaticamente por uma formula, que’ (© maior valor pago dentre os ultimos meses, para o produto em q Exemplo: na planitha de exemplo, para 0 produto arroz, o resultado | 2,05 e para 0 produto feljao seria 2,25. c) Cada histérico de compra est associado a um supermercado @ produto. Isso cria os relacionamentos da Classe HistoricoCompra Classe Produto e a Classe Supermercado. Na classe HistoricoCo Encontrando Classes, Atributos e Relacionamentos + 15 que se armazena o valor pago a cada més, indicando em que supermer- cado foi feita a compra. 10. EXERCICIO: LISTA DE COMPRAS (VARIAGAO C) CENARIO: Carolina deseja saber qual o Supermercado que apresentou mais produtos baratos, num determinado més. RESOLUGAO: METODO DA CLASSE HisTORICOCOMPRA: obterSupermercadoMais Vantajoso(mesReferencia: integer): Supermercado ALGORITMO: define supermercadcRef + Supermercade Selecionar todos os cbjetos de Kistorieccomra, onde KistoricoCompra.nes = mesReferencia, agrupando por Supermercado Para cada grupo de objHistoricotompra-supernercado ‘totalizar 0 atributo valorpago desse grupo se 0 total de valor pago for 0 maior obtido até o momento, guardar 0 supermercado correspondente en supermercedonet ‘fimpara obtersupermercadowai svantajoso € supermercadonet COMENTARIOS SOBRE A RESOLUCAO: 4) Se a classe HistoricoCompra armazena o menor valor pago por um pro- duto, num determinado més, significa que o supermercado mais vantajoso @ aquele onde se gastou mais, pois ofereceu mais produtos em oferta. 11. EXERCICIO: LISTA DE COMPRAS (VARIACAO D) ‘CENARIO: Carolina deseja desconsiderar o prego de um determinado més para cAlculos de maior ou menor valor, ou ainda do supermercado mais vantajoso. 16 * Exercitando Modelagem em UML Exemplo (1): saber qual o Supermercado que apresentou mais produtos baratos, num determinado més. Supondo que ela comprou um produto numa promogao relémpago que ofereceu 50% de desconto, esse valor nao pode ser parametro para suas compras futuras. Exemplo (2): para calcular o precoMaximoAnterior, a aplicagéo pega o maior valor Vamos supor que um determinado produto teve queda de pre- 0. Isso significa que os meses de prego alto ndo podem ser considerados para as proximas compras. RESOLUGAO: CLASSE: —_HistoricoCompra ATRIBUTO: validoParaAnalise: boolean 12. Exercicio: COLEGAO DE CD’s CENARIO: Adriano tem uma colego grande de CD's e gostaria de cadas- trar no seu Palm a lista desses CD's, pois as vezes nem sabe o que tem. Ele pensou em cadastrar 0 nome do cantor(a) ou conjunto, 0 titulo do CD ano de langamento. Encontrando Classes, Atributos ¢ Relacionamentos + 17 COMENTARIOS SOBRE A RESOLUGAO: 1) Todo CD esta relacionado a um misico que pode ser um cantor solo ou um conjunto. Isso cria um relacionamento entre a classe CD e a classe Musico, b) O atributo ehSolo indica se 0 objeto se refere a um cantor solo ou a um conjunto. 13. EXERCIcIO: COLECAO DE CD’s (VARIACAO A) CENARIO: Adriano notou que alguns CD's sao de coletaneas. Sendo assim, nao tém apenas um cantor (ou conjunto) e sim varios. Ele quer cadastrar essa lista de misicos, sem relaciond-los as misicas. Deseja controlar também se 0 CD é de coleténea e se é duplo. Adriano gostaria de ter cadastrada a lista das misicas de cada CD, com 0 tempo de duragao de cada faixa. ‘So relatérios desejados: os CD's de um determinado musico e em quais CD's esta uma determinada misica. Imusico : Classe Musico ‘cadastrar co titulo : string \istarCdsPorMusico(musico: ano: integer Classe Musico) 18 + Exercitando Modelagem em UML listarCdsPorMusica(musica: ehColetanea : boolean Classe Musica) flistaMusicas : Colegao de Musica = ‘nome : string Musica Fatea ‘sel ‘cadastrar oF 12 cD Musico 1.4 Musica COMENTARIOS SOBRE A RESOLUGAO: a) Nao hé relacionamento da classe Musica com a classe Musico, pois este foi o requisito do usuario: no realizar o controle de que misico esta interpretando que can¢ao. b) © atributo /istaMusicas da classe CD representa o relaclonamento de multiplicidade 1..* da classe CD com a classe Musica. 14, EXERCICIO: SALA DE REUNIAO CENARIO: Patricia 6 secretaria e dentre suas tarefas habituais existe a de controlar 0 uso das trés salas de reuniao, que sdo utilizadas por todos os setores da empresa. Ela possul pastas de trabalho em Excel para cada més do ano e, dentro de cada pasta, existem de vinte e oito a trinta e uma planilhas, uma para cada dia do més. Encontrando Classes, Atributos e Relacionamentos + 19 Na planitha, ela criow a coluna de horérios e trés colunas, uma para cada sala de reuniao. Num controle & parte, ela relaciona o nome do funcionario, seu cargo e ramal. Além da alocagao, surge freqientemente a necessida- de de realocagdo de uma reuniéo, mudando sala e/ou data e/ou horario. Outra consulta constante que 6 feita & Patricia, pelos Diretores, & sobre as ‘salas que estardo livres numa determinada data, numa faixa de hordrio. Para cada sala, precisa-se saber o nlimero de lugares. Vela o exemplo a seguir, IMAGEM DA PLANILHA: 20 + Exercitande Modelagem em UML Funcionario SalaReuniao SalaReuniao 0.4} ‘AlocacacSala - Funcionario. (COMENTARIOS SOBRE A RESOLUCAO: a) Toda alocagSo de sala registra qual sala foi alocada qual foi o funcio- nario responsavel pelo pedido de alocagao. Isso cria os relacionamentos entre as classes AlocacaoSala, SalaReuniao b) Repare que 0 cenério ndo citou a necessidade de se cadastrar 0 assun- to da Reunido, mas essa informagao € relevante, pois aparece em todas as alocagSes registradas na Pianilha. Isso mostra que, ao levantarmos os requisitos de uma aplicarao, ndo basta fevarmos em conta somente o que é dito. Precisamos.analisar também o que ¢ mostrado, na forma de fichas, documentos, formulérios, planilhas, Telatérios etc. c) O método obterSalaLivre é de classe, pois sua execugao nao é sobre um objeto e sim sobre toda a colegao de objetos SalaReuniao. O resultado desse método & um conjunto (uma colegao) de objetos SalaReuniao, que pode ser um conjunto vazio (nenhuma sala dispontvel), um conjunto unité- rio ou retomar todas as salas de reunio. Encontrando Classes, Atributos.e Relacionamentos > 21 15. EXERCICIO: SALA DE REUNIAO (VARIAGAO A) CENARIO: Os materiais de apoio séo divididos entre as salas de reunido. Sendo assim, é preciso controlar os materials que estdo alocados e para quais reuniSes. Por exemplo: retroprojetor — sala 101 na reuniao de 9 as 10h30; flip ~ sala 102 na reuniao de 10 as 12. numero : integer vieldata: : SalaReuniao qtdLugares : integer hhoralnicio: time, horaFim: __SalaReuniao do 0 atributo listaMateriaisAlocados, que esta em ee en foi criada a classe Material. 10 de sala também, uma lista de materiais alo- ae Encontrando Classes, Atributos e Relacionamentos + 23 tributes | Métodos nome : string dataNascimento : date Jendereco : Classe Endereco ItelsContato : Colegao de Telefone Iprofissa0 : Classe Profissao cadastrar obteridade RESOLUGAO: Por heranga da classe Pessoa: Endereco e Telefone. Relacionando-se diretamente com Funcionario: Cargo. RESOLUGAO: Por heranga da classe Pessoa: Endereco e Telefone. Relacionando-se Capitulo 2 Desenhando Diagrama de Classes a partir de Minicendrios ‘Com a préxima lista de exercicios, voc® continuard a treinar seu poder de abstragao dos conceitos de classe e atributos. Usaremos minicendrios mais complexos que os apresentados no Capitulo 1. Desenharemos um diagrama de classes para cada um-dos exercicios deste capitulo. Repetiremos a formula de criar variagdes dos exercicios, que permitam a manuten¢ao do modelo. Nos exercicios deste capitulo incluiremos uma pequena lista de casos de Uso, representados num diagrama de casos de uso. Entretanto, em virtude do néimero reduzido e da baixa complexidade dos mesmos, nao escreve- Temos 0 descritivo de seus cenarios. Tentaremos abstrair as classes @ seus atributos diretamente da especificagao do problema (minicendrio).. CONVENCOES DO CAPITULO: ~ Todas as classes contém atributos (com seus tipos), métodos (com seus parametros e tipo de retomo) ¢ relacionamentos (com suas mulliplicidades); —Atributos derivados ou de classe também sao representados. Atributos e métodos de classe sao representados sublinhados; — O diagrama de classes é da fase de andlise. Sendo assim, nao aparece- 180 atributos derivados que representem relacionamentos; — Os métodos descritos foram deduzidos a partir do cenario. Entretanto, a lista completa dos métodos sé é possivel obter a partir de um diagrama de 24 Desenhando Diagrama Classes a partir de Minicendrios + 25 seqiéncias, que tem por objetivo identificar a troca de mensagens existen- te entre objetos, em cada caso de uso; — Os casos de uso Manter XXX indicam que 0 caso de uso tratara da con- sulta, incluso, alteragao e excluséo de XXX. Exemplo: Caso de Uso Man- ter Cliente 6 responsavel pela consulta, inclusao, alterago e exclusdo dos dados cadastrais de cliente; ~ 0s atributos e métodos seguem a nomenciatura da UML, ou seja, iniciam com letra mindscula, tendo a primeira letra de cada palavra (a partir da segunda) em maidscula; — Todo atributo cujo tipo seja uma classe enumeration nao é definido como um atributo derivado, visto a classe enumeration atuar com um tipo de da- do @ néo como um relacionamento. Vamos exercitar nosso poder de abstragao! 17. MINICENARIO: CONTROLE DE TAREFAS,, ‘Arnaldo deseja escrever uma aplicagao de controle de tarefas para colocar em seu Palm. As especificagées da aplicago s8o as seguintes: © cadastro de cada tarefa contém o niimero da prioridade, representado por um valor real. Isso permite entrar com intervalos intermediérios, Além da prioridade, o cadastro deve conter: nome da tarefa, a data limite de execucdo (se houver), © percentual ja concluido e o detalhamento da tare- fa Para cada tarefa ha uma lista de itens que descrevem sua execugSo. Para cada item de execugdo, cadastram-se: —0 percentual correspondente a descrigao da execugao —a data da execucao (quando for concluida) ‘Quando uma tarefa receber 100% de execucao, esta deve ser movida au- tomaticamente para a lista de tarefas concluidas, podendo ser apagada, se for 0 caso, Veja 0 exemplo desse controle em papel. + Exercitando Modelagem em UML Data limite. Percentual a concluido = 85% Detalhamento Lista de tens para serem executados: planeiamento dos oreparativos para a festa de RESOLUGAO (DIAGRAMA DE CASOS DE USO): ManterItens. «oxtends», ~ ame - Verificar Conclusao da Tarefa, Desenhando Diagrama de Classes a partir de Minicenérios + 27 RESOLUGAO (DIAGRAMA DE CLASSES): COMENTARIOS SOBRE A RESOLUGAO: a) A lista de itens de execugao faz parte da tarefa-que representa o todo. Desta forma, o relacionamento foi representado como uma agregagao. b) 0 attributo percentualConclusao nao é um atributo que sera cadastrado. Seu valor & sempre calculado a partir do somatério dos percentuais dos itens de execugo que jé foram concluidos (ou seja, que tenham uma data de execucdo). Por este motivo, ele foi definido como atributo derivado. A regra de sua derivagao foi explicada num item de nota, pertencente ao atributo. Existem diversas formas de expressar esse tipo de regra. c) © atributo status poderia ter sido expresso como um atributo identificado como “ativo: boolean”. Entretanto, isso restringjria 0 atributo a dois valores. Ao se definir 0 tipo enumerado, ja prevemos uma manutencdo evolutiva do modelo, facilitando a inclusao de outros status. 4) O caso de uso Venticar Concluséo da Tarefa tem por objetivo verificar se todos os itens associados a uma tarefa jé foram concluidos, alterando aufomaticamente o status da tarefa para conciuida e) Como 0 tnico usuario dessa aplicagao ¢ o Amaldo, o ator foi identifica- do como Pessoa. f) No caso de uso Manter Itens da Tarefa, o ator cadastra, iniclalmente, somente © percentual da tarefa e sua descrioSo. Depois, a cada tarefa EE Exercitande Madelagem em UML concluida, 0 ator volta nesse caso de uso para langar a data de execugao. item de tarefa é considerado como concluido se tiver uma data de exe- cugao cadastrada. 18. MINICENARIO: LIGACGES TELEFONICAS VIA MODEM Bruna resolveu desenvolver uma aplicagao para controlar as ligagées tele- fonicas de sua casa, a fim de checar se o valor que paga mensalmente esta correto. Assim, sempre que desejar, podera listar as ligagdes efetua- das num determinado periodo, contabilizando o valor a pagar. Para que isso seja possivel, toda ligagdo sera feita pelo computador. A cada solicitacao de ligagao, a aplicagao devera registrar: a data da ligagao, a hora da ligagdo, quantidade de minutos gastos (que deve ser registrado no momento que a ligago for encerrada), o numero de pulsos (que deve ser calculado pela aplicagao) e 0 telefone para onde se discou A aplicagao permitira 0 controle de uma agenda de telefones, com nimero do telefone e nome da pessoa de contato. O usuario podera escolher, no momento da ligagao, se deseja um dos registros da agenda ou se digitara diretamente o némero do telefone, ‘A forma de calculo.dos pulsos considera os seguintes critérios: — A ligagSo ao ser completada j4 conta um pulso. A partir dal, a cada qua- tro minutos de conversagao concluida, cobra-se mais um pulso. ~ Cada pulso custa R$ 0,08 para ligagdes locas. Exemplo: Ligagode 2m = 1 pulso Ligagao de 4m30s_- 2 pulsos Ligagdode 8m = 3 pulsos. — Os finais de semana possuem uma promogéio. Cada ligagao contabiliza somente um pulso, independente do numero de minutos de conversacdo. Desenhando Diagrama de Classes a partir de Minicendrios + 29 RESOLUGAO (DIAGRAMA DE Gasos DE USO): newneContat: ing cans cate 30 * Exercitando Modelagem em UML COMENTARIOS SOBRE A RESOLUGAO: a) O relacionamento da classe Ligacdo com a classe Agenda serve apenas para manter o controle do lugar para onde foi felta a ligagao. Entretanto, a multiplicidade é de 0..*, pois no momento da ligacao 0 usuario pode esco- lher de onde quer obter o telefone, podendo digitar um numero sem querer registré-lo na agenda. O telefone & replicado na classe Ligagdo, para se manter o hist6rico de ligagdes, j que 0 contato pode ter seu nimero de telefone alterado. b) 0 atributo tempoGasto da classe Ligagao é derivado, pois seu valor 6 0 resultado do método calcularTempo da classe RegraCalculo, ¢) O atributo numeroPulsos da classe Ligagao é derivado, pois seu valor © resultado do método calcularPulsos da classe RegraCalculo. 4d) O caso de uso cadastrarPulsos & responsavel por solicitar 0 calculo do tempo e baseado nessa informacéo, calcular 0 numero de pulsos. Como as informagdes tempo gasto e ndmero de pulsos no so persistidos, en- tao 0 caso de uso Lisfar ligacdes de um periodo precisa fazer utilizacao do caso de uso cadastrar Pulsos para apresentar 0 relatério. 2) Como o Unico usuario dessa aplicagao é a Bruna, o ator foi identificado como Pessoa. * 19. MINICENARIO: TESTES DE FIXAGAO Mariana prepara diversos exercicios para suas filhas que esto na primeira e na segunda séries. Ela gostaria de informatizar esses exercicios, para gerar testes aleatérios. Cada teste gerado deve ser guardado (acompanhado de suas questées), com a indicagao de sua data de geragéio. Na geragao de um teste, preci- 0 informar o nimero de questées desejadas e a qual disciplina pertence teste. Para cada disciplina, cadastra-se: uma lista de questées objetivas, identifi cando de que bimestre é cada questo e a que matéria pertence. O gabari- to também é cadastrado a fim de facilitar a correcdo do teste. Cada matéria faz parte de uma tmnica disciplina. A série esta ligada a matéria. Desenhando Diagrama de Classes a partir de Minicenarios + 31 Por exemplo: para a disciplina de matemdtica, Mariana prepara um teste com 20 questdes. Cada questao corresponde a um bimestre (1°, 2°, 3° ou 4°) e a uma matéria (ex: adigdo, diviséo, nameros pares e impares, nume- fos primos, sindnimos etc). Cada matéria corresponde a uma disciplina (adigao — matematica; sindnimos — portugués etc).

You might also like