Exercitando_Modelagem_em_UML
129 pág.

Exercitando_Modelagem_em_UML

Disciplina:MODELAGEM DE DADOS1.321 materiais24.227 seguidores
Pré-visualização22 páginas
objItsmCompra

subtotal <- objItemConÇFra.qtdEfetivaCompra •
obj I temCoflipra. produto.précoMaximoAnterior

total <- total + subtotal
fim-para
obterTotalEstimado í- toCal

e) O atributo precoMaximoMes é derivado, pois ele não recebe um valor
diretamente do usuário. Seu valor é derivado de um cálculo feito sobre o
atributo precoMaximoAnterior, considerando a fórmula a seguir. Esse atri-
buto também poderia ter sido definido como um método do tipo função,
cujo retomo seria o preço máximo do mês.

ItemCornpra.precoMaxiinoMes = ItemConpra.produto-precoHaximoAaterior * l ,OS

9. EXERCÍCIO: LISTA DE COMPRAS (VARIAÇÃO B)
CENÁRIO: Carolina está assustada com a variação de preço de um Supermer-
cado para outro. Tem feito compras (ou pedido para fazer) em até três Su-
permercados diferentes. Sendo assim, resolveu melhorar sua planilha. Criou
uma segunda planilha que contém o preço mais baixo que ela pagou num
determinado mês, indicando a que supermercado pertence. Veja a seguir
IMAGEM DA PLANILHA:

Produto
Arroz
Arroz
Arroz
Feilão
Feijão

Mês de
Compra
julho
agosto
setembro
julho
agosto

Valor
Compra

1.80
1.75
2,05
2.10
2,25

Supermercado
XXX
YYY
XXX
XXX
XXX

14 • Exercitando Modelagem em UML

EXERCÍCIO:
Quais são os atributos e/ou métodos que precisam ser incluídos nas dm

exercício anterior, para refletir esse novo cenário.
Verifique se há necessidade de criar novas classes.

RESOLUÇÃO: '
Classe

LlstaCompra

ItemCompra

Produto

HistoricoCompra

Supermercado

Atributos
mês : integer
/itens : Coleção de ItemCompra
/total Estimado : real
/produto : Classe Produto
qtdEfetivaCompra : real
/precoMaximoMes : real
nome : string
descricaoProduto : string
unidadeCompra : string
qtdPrevistoMes : real
/precoMaximoAnteríor : real
mês : integer
/produto : Classe Produto
valorPago : real
/supermercado : Classe
Supermercado
nome : síring

Métodos
cadastrar
obterTotal Estimado)

: integer)

cadastrar

cadastrar

.

cadastrar

cadastrar
1
 *m

COMENTÁRIOS SOBRE A RESOLUÇÃO:
a) O atributo mês da classe HistoricoCompra está definido como im<
para armazenar o número correspondente ao mês do ano.

b) O atributo precoMaximoAnteríor não é mais lançado manualmente |M
usuário. Agora, ele é obtido automaticamente por uma fórmula, que ver
o maior valor pago dentre os últimos meses, para o produto em queslío,
Exemplo: na planilha de exemplo, para o produto arroz, o resultado •
2,05 e para o produto feijão seria 2,25.
c) Cada histórico de compra está associado a um supermercado e ;i m
produto. Isso cria os relacionamentos da Classe HistoricoCompra com i
Classe Produto e a Classe Supermercado. Na classe HistoricoCompri

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. EXERCÍCIO: LISTA DE COMPRAS (VARIAÇÃO C)
CENÁRIO: Carolina deseja saber qual o Supermercado que apresentou
mais produtos baratos, num determinado mês.

EXERCÍCIO:
A resolução dessa situação se dá com a inclusão de um método.

Sugira um nome para'esse método, indicando sua assinatura.
A que classe pertence esse método e como seria seu algoritmo?

RESOLUÇÃO:
MÉTODO DA CLASSE HISTORICOCOMPRA:
obterSupermercadoMaisVantajoso(mesReferencia: integer): Supermercado

ALGORITMO:
define EupermercadoRef : Supermercado

Selecionar eodos 05 objetos de HistoricoCompra,
onde HistoricoCompra.mês = mesHeferencia, agrupando por Supermercado

Para cada grupo de objUistoricoCompra.supermercado
totalizar o atributo valorpago desse grupo
se o Cotai de valor pago for o maior obtido até o momento, guardar o

supermercado correspondente em supermercadoRef
£im-para
obterSupermercadoMaisVantajoso 4- supermercadoRef

COMENTÁRIOS SOBRE A RESOLUÇÃO:
a) Se a classe HistorícoCompra 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. EXERCÍCIO: LISTA DE COMPRAS (VARIAÇÃO D)
CENÁRIO: Carolina deseja desconsiderar o preço de um determinado mês
para cálculos 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 promoção relâmpago que ofereceu 50% de desconto, esse valor não
pode ser parâmetro para suas compras futuras.

Exemplo (2): para calcular o precoMaximoAnterior, a aplicação pega o
maior valor. Vamos supor que um determinado produto teve queda de pre-
ço. Isso significa que os meses de preço alto não podem ser considerados
para as próximas compras.

EXERCÍCIO:
Em que classe deve ser incluído um atributo para resoEver essa questão

e como deve ser esse atributo?

RESOLUÇÃO:
CLASSE:
ATRIBUTO:

HistoricoCompra
validoParaAnalise: boolean

12. EXERCÍCIO: COLECÃO DE CD's
CENÁRIO: Adriano tem uma coleção grande de CD's e gostaria de cadas-
trar no seu Palm a lista desses CD's, pois às vezes nem sabe o que tem.

Ele pensou em cadastrar o nome do cantor{a) ou conjunto, o título do CD e
o ano de lançamento.

EXERCÍCIO:
Identifique as classes, atributos e métodos desse cenário.
Represente os relacionamentos como atributos derivados.

RESOLUÇÃO:
Classe

Musico

Atributos
nome : string
ehSolo : boolean

Métodos

cadastrar

Encontrando Classes, Atributos e Relacionamentos • 17

Classe

CD

Atributos
/musico : Classe Musico
titulo : sfring
ano : intetjer

Métodos

cadastrar

COMENTÁRIOS SOBRE A RESOLUÇÃO:
a) Todo CD está relacionado a um músico que pode ser um cantor solo ou
um conjunto. Isso cria um relacionamento entre a classe CD e a classe
Mus/co.
b) O atributo ehSolo indica se o objeto se refere a um cantor solo ou a um
conjunto.

13. EXERCÍCIO: COLEÇÃO DE CD's (VARIAÇÃO A)
CENÁRIO; Adriano notou que alguns CD's são de coletâneas. Sendo assim,
não têm apenas um cantor (ou conjunto) e sim vários. Ele quer cadastrar
essa lista de músicos, sem relacioná-los às músicas. Deseja controlar
também se o CD é de coletânea e se é duplo.

Adriano gostaria de ter cadastrada a lista das músicas de cada CD, com o
tempo de duração de cada faixa.

São relatórios desejados: os CD's de um determinado músico e em quais
CD's está uma determinada música.

EXERCÍCIO:
Aíualize a lista de classes, atributos e métodos para refletir esse cenário.

Represente os relacionamentos como atributos derivados.
Desenhe um diagrama de classes, somente com o nome das classes,

especificando os relacionamentos e as multiplicídades.

RESOLUÇÃO:
Classe

Musico

CD

Atributos
nome : string
ehSolo : boolean
/musico : Classe Musico
titulo : string
ano : tnteqer

Métodos

cadastrar

cadastrar
listarCdsPorMusico(musico:

Classe Musico)

18 • Exercitando Mocielagem em UML

Classe

Musica

Atributos
ehDuplo : boolean
ehColetânea : boolean
/ItstaMusIcas : Coleçáo de
Musica
nome : string
tempoFaixa : real

Métodos
listarCdsPorMusica(musica:

Classe Musica)

cadastrar

CD
0..* 1.-"

Musico

1..'

Musica

COMENTÁRIOS SOBRE A RESOLUÇÃO:
a) Não há relacionamento da classe Musica com a classe Musico, pois
este foi o requisito do usuário: não realizar o controle de que músico está
interpretando que canção.

b) O atributo HstaMusicas da classe CD representa o relacionamento de
multiplicidade 1..* da classe CD com a classe Musica.

14. EXERCÍCIO: SALA DE REUNIÃO
CENÁRIO: Patrícia é secretária e dentre suas tarefas habituais existe a de
controlar o uso das três salas de reunião, que são utilizadas por todos os
setores da empresa.

Ela possui 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