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.