You are on page 1of 33

Encontrando Classes, Atributos

e Relacionamentos

Profa. Adriana Freitas de Carvalho
Curso: Sistemas de Informao
UFMS
Anlise e Projeto de Software
Orientado a Objetos II
INTRODUO
Objetivo
Exercitar a abstrao de atributos, classes e
relacionamentos.


Contedo
Exerccios



2
1. CONTA DE LUZ
CENRIO: 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.
3
1. CONTA DE LUZ
IMAGEM DA PLANILHA:








EXERCCIO:
Identifique as classes, atributos e mtodos desse cenrio.
4
1. CONTA DE LUZ
RESOLUO:







COMENTRIOS SOBRE A RESOLUO:
O retorno do mtodo string pois traz o ms e o ano (ex:
082005).
5
2. CLASSE TEXTOSAIDA
CENRIO: 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.
6
2. CLASSE TEXTOSAIDA
RESOLUO:







7
2. CLASSE TEXTOSAIDA
COMENTRIOS SOBRE A RESOLUO
A 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.
8
3. CLASSE BONECOEMMOVIMENTO
CENRIO: 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).

EXERCCIO
Identifique as classes, atributos e mtodos desse cenrio.
9
3. CLASSE BONECOEMMOVIMENTO
RESOLUO:







10
3. CLASSE BONECOEMMOVIMENTO
COMENTRIOS SOBRE A RESOLUO
Para 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.
11
4. HORRIO DE REMDIOS
CENRIO: 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.
12
4. HORRIO DE REMDIOS
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.

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.

EXERCCIO
Identifique as classes, atributos e mtodos desse cenrio.
Represente os relacionamentos como atributos derivados.
13
4. HORRIO DE REMDIOS
RESOLUO:
14
4. HORRIO DE REMDIOS
COMENTRIOS SOBRE A RESOLUO:
a) 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.

b) 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.
15
4. HORRIO DE REMDIOS
c) O 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.

d) 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.
16
5. GASTOS DIRIOS
CENRIO: 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.
17
5. GASTOS DIRIOS
RESOLUO:
18
5. GASTOS DIRIOS
COMENTRIOS SOBRE A RESOLUO:
a) 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.

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

c) Toda a complexidade do relatrio mensal est encapsulada
no mtodo gerarRelatorioMensal.
19
6. COMANDA ELETRNICA
CENRIO: 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.
20
6. COMANDA ELETRNICA
RESOLUO:
21
6. COMANDA ELETRNICA
COMENTRIOS SOBRE A RESOLUO:
a) 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.

b) 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.
22
7. LISTA DE COMPRAS
CENRIO: 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 COMPRAS
ESCLARECIMENTOS SOBRE O PROBLEMA:
a) 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.
b) As compras so feitas pela prpria Carolina. Por esse motivo,
ela no v necessidade de relacionar as marcas dos
produtos.
c) 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.
24
7. LISTA DE COMPRAS
RESOLUO:
25
7. LISTA DE COMPRAS
COMENTRIOS SOBRE A RESOLUO:
a) 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) :
26
7. LISTA DE COMPRAS

define obj ItemCompra: ItemCompra

obter a coleo de objItemCompra,
onde ListaCompra.ms = parmetro ms
total O
para cada objItemCompra
subtotal objItemCompra.qtdEfetivaCompra *
objItemCompra.produto.precoEstimado
total total + subtotal
fim-para
obterTotalEstimado total
27
7. LISTA DE COMPRAS
b) Toda 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.
28
8. 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.
29
8. LISTA DE COMPRAS (VARIAO A)
RESOLUO:
30
8. LISTA DE COMPRAS (VARIAO A)
COMENTRIOS SOBRE A RESOLUO:

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

obter a coleo de objItemCompra,
onde ListaCompra.ms = parmetro ms
total O
para cada objItemCompra
subtotal objItemCompra.qtdEfetivaCompra *
objItemCompra.produto.precoMaximoAnterior
total total + subtotal
fim-para
obterTotalEstimado total
32
8. LISTA DE COMPRAS (VARIAO A)
e) 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.05
33

You might also like