UNIFEI

Propaganda
UNIFEI
Disciplina
Professor
Universidade Federal de Itajubá
Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI
CCO02 – Engenharia de Software II
Enzo Seraphim
Lista de Exercícios sobre Padrões de Projeto – Construção
1) Foi solicitado que você criasse um sistema para gerenciar construção de carros de competição. Os carros
são formados por rodas, motor e assessórios de aerodinâmica. As rodas são caracterizadas pelo tamanho do
raio e pela largura do pneu. O motor pela quantidade de cilindros e tamanho do cilindro. Os assessórios de
aerodinâmica são caracterizados pelo tipo (aerofólio ou bico) e tamanho. Construa uma classe que seja
capaz de construir um carro. Use o padrão Builder.
2) Foi solicitado que você criasse um sistema para gerenciar construção de um condomínio de casas. As
casas são formadas por sala, banheiro, cozinha, quarto, e copa. Sobre a sala deve­se guardar tipo piso e
quantidade de tomadas. Sobre o banheiro deve­se guardar quantidade de tomadas e se possui bidê. Sobre a
cozinha se tem piso até o teto e a quantidade de tomadas. Sobre o quarto deve­se guardar a quantidade de
tomadas e se possui guarda roupa embutido. Existem 3 tipos de casas A, B e C. A casa A possui 1 sala, 1
banheiro, 1 cozinha e 2 quartos. A casa B possui quantidade m 2 de quintal, 1 sala, 2 banheiros, 1 cozinha e 3
quartos. A casa C possui uma quantidade m 2 de quintal e jardim, alem de 1 sala, 3 banheiros, 1 cozinha, 1
copa e 3 quartos. Use o padrão Builder.
3) Foi solicitado que você criasse um sistema para gerenciar construção doces e salgados de uma confeitaria
que podem ser fritos ou assados. A confeitaria fabrica salgados do tipo esfirra e pastel, além de doces do tipo
torta e churros. Sobre a esfirra deve­se guardar se é aberta ou fechada e tipo de recheio. Sobre a coxinha
deve­se guardar o tipo de recheio e se tem ou não requeijão. Sobre a torta deve­se guardar o tipo recheio e
se possui ou não tampa. Sobre o churros deve­se guardar o tipo recheio e a cobertura (açúcar ou canela).
Use o padrão Abstract Factory.
4) Implemente um sistema de lava­jato para carros. O atendimento é feito através de um dos serviços:
busca­e­traz ou por agendamento. No serviço de busca­e­traz um cliente em uma data solicita que o carro
seja buscado e levado em um endereço. No serviço de agendamento um cliente em uma data leva o carro ao
lava­jato. Cada serviço atendido deve formar um caixa diário que é de responsabilidade de um funcionário.
Uma outra cópia do serviço atendido deve formar o ficha do cliente. Use o padrão de software prototipo
para construir um modelo UML e uma implementação em Java .
5) Implemente em java a classe abaixo, e implemente um método para descobrir qual é a maior batata,
maior cenoura e o maior tomate produzido.
6) Um professor só pode orientar um aluno por vez de doutorado em um ano. Ao final do ano o aluno
defente e não é mais orientado pelo professor. Um professor é caracterizado por nome e titulação. Um Aluno
é caracterizado pelo nome e nome projeto. Construa uma modelagem que permita voltar no tempo e
orientar novamente seus ex­alunos.
UNIFEI
Disciplina
Professor
Universidade Federal de Itajubá
Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI
CCO02 – Engenharia de Software II
Enzo Seraphim
Lista de Exercícios sobre Padrões de Projeto – Construção
7) Implemente na linguagem java o modelo UML abaixo e responda qual o nome padrão de construção
usado. 8) A Gula fabrica 4 tipos de produtos que possuem um preço de venda. Os produtos são: bombons cobertos
por quantidades variadas de chocolate e um tipo de recheio; barras de chocolate de diversos tamanhos com
algum ingrediente adicional; bolachas com um tipo de massa e outro tipo de recheio; biscoitos com um tipo
de aroma. As fábricas que fabricam barra só podem fabricar bombons e as fábricas que fabricam bolacha só
podem fabricar biscotos. Construa um diagrama de classes usando pelo menos um padrão de construção e
justifique o padrão usado.
9) Construa um diagrama de classes e a implementação na linguagem java do padrão de projeto fábrica
abstrata para criar 2 famílias: Estantes e Mesa. Toda estante tem uma quantidade de divisórias na horizontal
e na vertical. As estantes de madeira não possuem portas, no entanto, possuem um espaço para televisão
(definido pelo tamanho da televisão em polegadas). As estantes de aço possuem uma quantidade de portas e
a espessura das lâminas de aço. Todas as mesas possuem uma largura, um comprimento e altura. As mesas
de madeira possuem um tipo de madeira utilizada e se possuem detalhes em relevo. As mesas de aço podem
ter um tampão de vidro ou de pedra (definidas por um enumerado). Existem dois fabricantes destes móveis:
um que fabrica móveis de madeira chamado Carpintaria e outro que fabrica móveis de aço chamado
Fundição.
10) Implemente na linguagem Java as classes do diagrama UML abaixo. Somente declare o que deve estar
dentro de cada classe, pois não será avaliado declarações fora do escopo da classe (ex: pacotes, inclusões de
arquivos, etc). Responda: Qual o nome desse padrão de projeto.
UNIFEI
Disciplina
Professor
Universidade Federal de Itajubá
Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI
CCO02 – Engenharia de Software II
Enzo Seraphim
Lista de Exercícios sobre Padrões de Projeto – Construção
11) Implemente o padrão protótipo genérico abaixo na linguagem JAVA. Crie um main que aloca as classes
Aluno e Celular.
12) Baseado na classe Protótipo do exercício anterior, crie uma nova interface genérica chamada Igualdade
que tem um método chamado isEqual() que retorna boolean. O parâmetro desse método deve garantir que a
comparação seja com outro objeto da mesma classe. Em seguida adicione a implementação desta interface
nas classes Aluno e Celular. Modifique o main para testar a igualdade entre dois alunos com valores de
atributos iguais e dois celulares com valores de atributos diferentes.
13) Dado a classe Consulta abaixo, implemente o diagrama que usa o padrão recordador para guardar o
histórico dos tratamentos feitos pela consulta. Faça um main que cria a classe consulta e mude o valor do
tratamento 5 vezes. Em seguida, desfaça o tratamento 3 vezes, imprimindo o valor do tratamento na tela
após cada desfazer.
classe sem recordador:
classe com recordador:
14) Todo funcionário deve ter seu nome, cargo, salário e departamento que trabalha na empresa. No
decorrer do tempo o funcionário pode ser alocado para outros departamentos da empresa. Entretanto, pode
haver uma requisição para que o funcionário retorne ao seu departamento anterior. Construa um
diagrama de classes usando o padrão de projeto Recordador.
UNIFEI
Disciplina
Professor
Universidade Federal de Itajubá
Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI
CCO02 – Engenharia de Software II
Enzo Seraphim
Lista de Exercícios sobre Padrões de Projeto – Construção
15) Implemente as classes com os relacionamentos abaixo na linguagem Java e responda qual é o padrão de
construção caracterizado. Somente declare o que deve estar dentro de cada classe, pois não será avaliado
declarações fora do escopo da classe (ex: pacotes, inclusões de arquivos, etc).
16) Implemente o padrão protótipo genérico CRTP (curiously recurring template pattern) abaixo na
linguagem JAVA. Adicione na sua implementação uma nova interface genérica chamada Igualdade que tem
um método chamado isEqual() que tem como parâmetro um outro objeto da mesma classe. Essa função
deve retorna verdadeiro se ambas classes tem os mesmos valores de atributos. Verifique esse condição para a
implementação desta interface nas classes nas classes Carro e Moto.
17) Foi solicitado que você criasse um sistema para gerenciar construção doces e salgados de uma
confeitaria que podem ser fritos ou assados. A confeitaria fabrica salgados do tipo esfirra e coxinha. Sobre a
esfirra deve­se guardar se é aberta ou fechada e tipo de recheio. Sobre a coxinha deve­se guardar o tipo de
recheio e se tem ou não requeijão. Use o padrão método de fabrica para criar confeitarias especificas para
cada tipo de salgado.
UNIFEI
Disciplina
Professor
Universidade Federal de Itajubá
Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI
CCO02 – Engenharia de Software II
Enzo Seraphim
Lista de Exercícios sobre Padrões de Projeto – Construção
18) Uma empresa que vende perfume possui uma única matriz, 2 fábricas e 3 lojas de vendas. Sobre a
matriz deve­se armazenar o CGC, endereço e o químico responsável. Sobre as fábricas deve­se se armazenar
o endereço CGC, endereço e número de operários. Sobre as lojas deve­se se armazenar o endereço CGC,
endereço e o número de vendedores. Os perfumes são fabricados pela fábrica e são caracterizados pelo
identificador (incremental), nome, preço e linha masculino ou feminino. Qualquer unidade da empresa,
matriz ou fábrica ou loja, podem vender perfumes. Quando o perfume é vendido pela matriz ou pela fábrica
o lucro sobre o valor de custo é de 70%, mas quando é vendido na loja o lucro sobre o valor de custo é de
50%. Toda venda incrementa o faturamento anual da empresa que deve ser armazenado na matriz.
Construa uma aplicação texto que inicialmente pede as informações de 1 matriz, 2 fábricas, 3 lojas e 2
perfumes. Mostre o mostre o faturamento anual da empresa. Faça uma venda de perfumes para cada dessas
unidades mudando o perfume. Mostre novamente o mostre o faturamento anual da empresa. 19) Implemente as classes com os relacionamentos abaixo na linguagem
Java. Somente declare o que deve estar dentro de cada classe, pois não será avaliado declarações fora do
escopo da classe (ex: pacotes, inclusões de arquivos, etc).
20) Implemente as classes com os relacionamentos abaixo na linguagem
Java. Somente declare o que deve estar dentro de cada classe, pois não será avaliado declarações fora do
escopo da classe (ex: pacotes, inclusões de arquivos, etc).
UNIFEI
Disciplina
Professor
Universidade Federal de Itajubá
Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI
CCO02 – Engenharia de Software II
Enzo Seraphim
Lista de Exercícios sobre Padrões de Projeto – Construção
21) A rede McMineiro fabrica quatro tipos de lanches: X­Burger, X­Tudo, Frango­Simples e Frango Tudo. O
X­Burger é feito com 2 hambúrgueres, 3 folhas alface, 3 fatias de queijo, 50g de molho especial, 1 rodela
cebola, 3 fatias de picles e um pão de leite com gergelim. O X­Tudo é feito com 2 hambúrgueres, 2 folhas
alface, 2 fatias de queijo, 50g de maionese, 1 ovo, 3 fatias de bacon e um pão de leite com gergelim. O
Frango­Simples é feito com 1 filé de frango empanado, 5 folhas de alface, 2 fatias de queijo, 75g de
maionese e uma pão de leite. O Frango­Tudo é feito com 2 filés de frango empanado, 2 fatias de queijo, 60g
de molho especial, 1 ovo, 3 fatias de bacon e um pão de leite com gergelim. As lanchonetes da franquia são
de dois tipos McMineiro Galinha e o McMineiro Vaquinha. Ambas lanchonetes somente fabricam lanches, no
entanto, o McMineiro Galinha fabrica somente lanches de frango e o McMineiro Vaquinha fabrica somente
lanches de hambúrguer. Construa um diagrama em UML usando o padrão de projeto fábrica abstrata. Omita
métodos gets e sets para atributos privados da classe e os métodos manipuladores de relacionamentos entre
as classes. Neste diagrama não existem classes vazias, ou seja, uma classe sem campos ou sem métodos.
22) Implemente na linguagem java o modelo UML abaixo e responda: qual o nome padrão de construção
usado; e o que faz o método D.metD1(v:String):String.
Download