analise e projeto de software orientado a objetos ii - aula 04 - resolvida

33
Encontrando Classes, Atributos e Relacionamentos Profa. Adriana Freitas de Carvalho Curso: Sistemas de Informação UFMS  Análise e Pro jeto de Sof tware Orientado a Objetos II

Upload: adriana-freitas-de-carvalho

Post on 11-Oct-2015

47 views

Category:

Documents


1 download

TRANSCRIPT

Engenharia de Software I

Encontrando Classes, Atributose Relacionamentos

Profa. Adriana Freitas de CarvalhoCurso: Sistemas de InformaoUFMSAnlise e Projeto de SoftwareOrientado a Objetos IIINTRODUOObjetivoExercitar a abstrao de atributos, classes e relacionamentos.

ContedoExerccios

21. CONTA DE LUZCENRIO: As informaes a seguir se referem planilha Excel de uma pessoa que controla os gastos mensais com sua conta de luz.

Para cada conta de luz cadastra-se: data em que a leitura do relgio de luz foi realizada, nmero da leitura, quantidade de Kw gasto no ms, valor a pagar pela conta, data do pagamento e mdia de consumo.

Mensalmente, so realizadas as seguintes pesquisas:verificao do ms de menor consumo;verificao do ms de maior consumo.31. CONTA DE LUZIMAGEM DA PLANILHA:

EXERCCIO:Identifique as classes, atributos e mtodos desse cenrio.4

1. CONTA DE LUZRESOLUO:

COMENTRIOS SOBRE A RESOLUO:O retorno do mtodo string pois traz o ms e o ano (ex: 082005).5

2. CLASSE TEXTOSAIDACENRIO: Para fixao do conceito de classes em sala de aula, criaremos a classe TextoSaida.

O objetivo do exerccio criar uma classe que permita configurar um texto por meio de atributos (tamanho da letra, cor da fonte e cor do fundo), escolhendo em que tipo de componente ele deve ser exibido (entre as opes: label, edit e memo). Para no haver vnculo com linguagens de programao, essa classe no foi criada como herana de uma classe visual.

As cores podem ser escolhidas entre os tons: preto, branco, azul, amarelo ou cinza.Identifique as classes, atributos e mtodos desse cenrio.62. CLASSE TEXTOSAIDARESOLUO:

7

2. CLASSE TEXTOSAIDACOMENTRIOS SOBRE A RESOLUOA classe enumeration EnumTipoComponente foi criada para suportar o domnio do atributo tipoComponente, que consiste de valores fixos, definidos como sendo os componentes onde o texto pode ser exibido. O mesmo aconteceu com a classe EnumCor.83. CLASSE BONECOEMMOVIMENTOCENRIO: Crie uma classe que permita mover um boneco na tela.

Esse boneco deve ter nome, posio da coordenada X, posio da coordenada Y e direo atual (cima, baixo, direita, esquerda).

EXERCCIOIdentifique as classes, atributos e mtodos desse cenrio.93. CLASSE BONECOEMMOVIMENTORESOLUO:

10

3. CLASSE BONECOEMMOVIMENTOCOMENTRIOS SOBRE A RESOLUOPara que o boneco se mova, cabe ao ator informar a nova coordenada.

Isso feito por meio de parmetros do mtodo Mover. Aps mover o boneco, os atributos coordenadaX e coordenadaY so atualizados com os valores dos parmetros novaCoordenadaX e novaCoordenadaY, respectivamente.

Para alterar a direo, basta antes de chamar o mtodo mover, mudar o valor do atributo direcaoAtual.114. HORRIO DE REMDIOSCENRIO: As informaes a seguir se referem a uma aplicao de controle pessoal de horrio de remdios. Para cada remdio cadastra-se: o nome de quem vai tomar o remdio, a data de incio, a quantidade de dias que foi prescrita, a quantidade de vezes ao dia, a dosagem e o nome do remdio.

Ao cadastrar o remdio, a aplicao sugere todos os horrios possveis para tomar o remdio. O usurio escolhe o melhor horrio e a aplicao avisa at quando o remdio deve ser tomado e prepara uma planilha de horrios.124. HORRIO DE REMDIOSAo cadastrar o remdio, a aplicao sugere todos os horrios possveis para tomar o remdio. O usurio escolhe o melhor horrio e a aplicao avisa at quando o remdio deve ser tomado e prepara uma planilha de horrios.

O usurio, no incio do dia, seleciona a opo de planilha de horrios de remdios do dia. No caso da pessoa atrasar o horrio de tomar o remdio num determinado dia, a planilha reorganiza os horrios daquele dia.

EXERCCIOIdentifique as classes, atributos e mtodos desse cenrio.Represente os relacionamentos como atributos derivados.134. HORRIO DE REMDIOSRESOLUO:14

4. HORRIO DE REMDIOSCOMENTRIOS SOBRE A RESOLUO:Numa primeira modelagem, os atributos remdio e usurio (do Remdio) foram definidos como string. Esses atributos so fortes candidatos a se tomarem classes de negcio. O que determina essa mudana o contexto da aplicao. Nesse caso, estamos tratando de uma aplicao bem pequena, cujo objetivo principal o controle de horrios. Sendo assim, podemos nessa verso no transformar esses atributos em classes.

Toda prescrio tem associada a ela uma planilha de horrios. Isso cria um relacionamento da classe PrescricaoRemedio com a classe Horario-Remedio, representada pelo atributo planilhaHorario. que corresponde a uma coleo de objetos da Classe HorarioRemedio.154. HORRIO DE REMDIOSO mtodo sugerirHoraro monta um conjunto possvel de horrios, a partir do atributo qtdVezesDia. Por exemplo, se um remdio tiver que ser tomado de 8 em 8 horas, a aplicao pode sugerir os seguintes horrios: [6h, 14h. 22h], [7h, 15h, 23h], [8h, 16h, 24h]. Uma vez escolhido o conjunto de horrios, o mtodo HoraroRemedio.cadastrarHorario chamado quantas vezes for preciso para cadastrar todos os horrios em todos os dias.

A classe HorarioRemedio foi criada incluindo o atributo data, para permitir o cadastramento de horrios diferentes para cada dia. Se no fosse por essa abordagem, poderamos ter criado um atributo horrio: time na classe PrescricaoRemedio, com multiplicidade de [1..*], prevendo de uma a vrias doses (horrios) por dia.165. GASTOS DIRIOSCENRIO: As informaes a seguir se referem Planilha Excel de Vera, que faz o controle de seus gastos dirios.

Para cada gasto, Vera cadastra: o tipo do gasto (remdio, roupa, refeio etc.), a data do gasto, o valor gasto e a forma de pagamento (dinheiro, cheque, carto ou cheque pr). No final do ms, Vera lista o total dos gastos mensais, agrupados por tipo de gasto e exibindo o quanto foi gasto em cada tipo de forma de pagamento.

EXERCCIO:Identifique as classes, atributos e mtodos desse cenrio.Represente os relacionamentos como atributos derivados.175. GASTOS DIRIOSRESOLUO:18

5. GASTOS DIRIOSCOMENTRIOS SOBRE A RESOLUO:A classe enumeration foi criada para suportar o domnio do atributo FormaPagamento, que consistia de valores fixos e com caractersticas de rara mutao. Numa aplicao de contexto maior, essa classe poderia deixar de ser enumeration para se transformar numa classe de negcios.

Todo gasto refere-se a somente um tipo. Isso cria um relacionamento da classe Gasto com a classe TipoGasto, representada pelo atributo tipo.

Toda a complexidade do relatrio mensal est encapsulada no mtodo gerarRelatorioMensal.196. COMANDA ELETRNICACENRIO: As informaes a seguir se referem a uma aplicao de controle de comanda eletrnica de uma padaria. O cliente usa uma comanda eletrnica durante suas compras na Padaria.

A cada produto consumido, o atendente registra em sua comanda (que possui uma numerao) o produto e a quantidade. Ao passar no caixa na sada da Padaria, a Caixa l os gastos da comanda, e finaliza a compra. Na leitura da comanda, verifica-se o valor unitrio de cada produto a fim de calcular o valor total da compra.EXERCCIO:Identifique as classes, atributos e mtodos desse cenrio.Represente os relacionamentos como atributos derivados.206. COMANDA ELETRNICARESOLUO:21

6. COMANDA ELETRNICACOMENTRIOS SOBRE A RESOLUO:O atributo valorTotal da classe Comanda derivado, porque o resultado do clculo do mtodo fecharComanda. Esse mtodo obtm todos os itens da Comanda e para cada um verifica o preo Unitrio do produto, calculando o sub-total, de acordo com a seguinte frmula:ItemComanda.quantidade * ItemComanda.produto.precoOnitario

O total da Comanda (atributo valorTotal) o somatrio dos subtotais.

Toda comanda possui uma lista de itens. Isso cria um relacionamento da classe Comanda com a classe ItemComanda, representada pelo atributo itens. Por sua vez, um item de comanda se refere a somente um produto. Esta representao feita no atributo produto.227. LISTA DE COMPRASCENRIO: Carolina controla em Excel uma planilha com a sua lista de compras mensal. Ela cadastra o nome do produto, a unidade de compra, a quantidade prevista para um ms, a quantidade que efetivamente ser comprada e o preo estimado (atualizado todo ms).23

7. LISTA DE COMPRASESCLARECIMENTOS SOBRE O PROBLEMA:A quantidade de compra pode variar em virtude de sobra de um ms para o outro, ou da necessidade de um gasto maior no ms. Por exemplo: almoo em famlia.As compras so feitas pela prpria Carolina. Por esse motivo, ela no v necessidade de relacionar as marcas dos produtos.Mensalmente, Carolina analisa o quanto pagou por cada produto, e se achar necessrio, atualiza o preo estimado de cada produto.EXERCCIO:Identifique as classes, atributos e mtodos desse cenrio.Represente os relacionamentos como atributos derivados.247. LISTA DE COMPRASRESOLUO:25

7. LISTA DE COMPRASCOMENTRIOS SOBRE A RESOLUO:O mtodo obterTotalEstimado um mtodo que atua sobre a coleo de objetos ItemCompra, ou seja, s podemos saber qual o total estimado de toda a Lista de Compras (conjunto dos itens de compra), se quantificarmos o subtotal de cada item.

Ou seja, podemos concluir que o atributo totalEstimado que pertence Lista de Compras derivado, pois o resultado desse mtodo. O algoritmo do mtodo obterTotalEstimado(ms: integer) :267. LISTA DE COMPRAS define obj ItemCompra: ItemCompra

obter a coleo de objItemCompra,onde ListaCompra.ms = parmetro ms total O para cada objItemComprasubtotal objItemCompra.qtdEfetivaCompra * objItemCompra.produto.precoEstimadototal total + subtotal fim-para obterTotalEstimado total277. LISTA DE COMPRASToda lista de compras possui um conjunto de itens. Isso cria um relacionamento 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 representao se d por meio do atributo produto.288. LISTA DE COMPRAS (VARIAO A)CENRIO: Carolina no tem mais tempo de fazer as compras pessoalmente. Precisou detalhar o produto, de forma a lhe permitir delegar essa tarefa a outra pessoa. Alm disso, no quer que paguem um valor absurdo por algum produto. Sendo assim, incluiu em sua planilha as colunas "preo mximo j comprado" e "preo mximo a pagar" no ms corrente, onde esta ltima coluna calculada a partir da coluna anterior acrescida de 5%. O "preo mximo j comprado" inserido na planilha, a partir das compras efetivamente realizadas.

EXERCCIO:Quais so os atributos e/ou mtodos que precisam ser includos nas classes do exerccio anterior, para refletir esse novo cenrio.298. LISTA DE COMPRAS (VARIAO A)RESOLUO:30

8. LISTA DE COMPRAS (VARIAO A)COMENTRIOS SOBRE A RESOLUO:

Os atributos e ou mtodos criados esto em negrito. O que foi retirado consta riscado.Com a criao dos atributos precoMaximoAnterior e precoMaximoMes, eliminou-se o atributo precoEstimado. Essa informao ser obtida a partir do atributo precoMaximoAnterior.O atributo precoMaximoAnterior Q cadastrado pelo usurio.O algoritmo do mtodo obterTotatEstimado foi alterado:318. LISTA DE COMPRAS (VARIAO A) define obj ItemCompra: ItemCompra

obter a coleo de objItemCompra,onde ListaCompra.ms = parmetro ms total O para cada objItemComprasubtotal objItemCompra.qtdEfetivaCompra*objItemCompra.produto.precoMaximoAnteriortotal total + subtotal fim-para obterTotalEstimado total328. LISTA DE COMPRAS (VARIAO A)O atributo precoMaximoMes derivado, pois ele no recebe um valor diretamente do usurio. Seu valor derivado de um clculo feito sobre o atributo precoMaximoAnterior, considerando a frmula a seguir. Esse atributo tambm poderia ter sido definido como um mtodo do tipo funo, cujo retomo seria o preo mximo do ms.

ItemCompra.precoMaximoMes = ItemConpra.produto.precoMaximoAnterior * 1.0533