Baixe o app para aproveitar ainda mais
Prévia do material em texto
Fundação CECIERJ – Vice Presidência de Educação Superior a Distância Curso de Tecnologia em Sistemas de Computação Disciplina: Programação Orientada a Objetos AP1X 1° semestre de 2021. Nome – Assinatura – Observações: 1. As respostas devem ser entregues apenas como CÓDIGO FONTE JAVA, NUM ARQUIVO ÚNICO PARA CADA QUESTÃO, COM EXTENSÃO .java; 2. Entregas fora do formato especificado, por exemplo, em arquivos com extensão “.pdf”, “.doc” ou outros, não serão corrigidas. Serão aceitas apenas soluções escritas na linguagem Java. Programas com erro de compilação não serão corrigidos. Use o Java na versão 8 da linguagem. 3. Quando o enunciado de uma questão inclui especificação de formato de entrada e saída, tal especificação deve ser seguida à risca pelo programa entregue. Atender ao enunciado faz parte da avaliação e da composição da nota final. 4. Os exemplos fornecidos nos enunciados das questões correspondem a casos específicos apontados para fins de ilustração e não correspondem ao universo completo de entradas possíveis especificado no enunciado. Os programas entregues devem ser elaborados considerando qualquer caso que siga a especificação e não apenas os exemplos dados. Essa é a prática adotada tanto na elaboração das ADs desta disciplina quanto no mercado de trabalho. 5. As APs são um mecanismo de avaliação individual. Para a correção desta avaliação utilizaremos um software que verifica a similaridade entre programas. Respostas plagiadas não serão corrigidas e serão zeradas. 6. Não seja o plágio do que ouve, vê, lê por aí. Estilo é plagiar a si mesmo (Última frase é atribuída a Alfred Hitchcock). Questão 1) (5.0 pontos) Dadas uma matriz de caracteres e uma string, escreva um algoritmo em Java que verifique se essa string está presente na matriz supracitada. A string pode estar em qualquer ordem, isto é, todos os 8 vizinhos devem ser considerados. Além disso, esse algoritmo não permite que o mesmo caracter seja usado mais de uma vez no encontro da string, retornando true se a palavra for encontrada, e false, caso contrário. No exemplo a seguir, se a string for MICROSOFT e se matriz for: Seu algoritmo deve retornar true. Dica: a matriz deve ser lida utilizando-se a classe Scanner. Essa leitura é interrompida quando a entrada recebe a palavra FIM. Questão 2) (5.0 pontos) IMPORTANTE: NÃO INCLUA o código listado abaixo na sua resolução que será entregue. Inclua apenas as classes pedidas ao longo da questão. Suponha que um município nos contratou para construir um sistema para calcular o IPTU de diferentes imóveis. O uso do sistema pode ser ilustrado com o código abaixo: public class AP1_2021_1_Q2 { public static void main(String[] args) { Imovel i1 = new Imovel(100, "1/1/1980", "centro"); System.out.println("IPTU do imóvel " + i1.getCodigo() + ": R$ " + i1.getValorIPTU()); Imovel i2 = new Apto(100, "1/1/1980", "periferia", 2, "fundos"); Imovel i3 = new Loja(100, "1/1/1980", "centro", false); Imoveis propriedades = new Imoveis(1000); propriedades.adicionaImovel(i1); propriedades.adicionaImovel(i2); propriedades.adicionaImovel(i3); System.out.println("Total de IPTU a ser arrecadado: R$ " + propriedades.calculaIPTUTotal()); } } Na construção do primeiro imóvel (objeto i1) são informados a metragem quadrada do imóvel, sua data de construção e sua localização (centro ou periferia), nesta ordem na chamada do construtor. Em Apto, além da metragem, data de construção e localização, são informadas a quantidade de quartos e se o apartamento é de frente ou de fundos. Em Loja, por sua vez, é importante saber se está num shopping, além das informações de metragem, data de construção e localização. Declare as classes usadas no código acima de forma que o código possa rodar sem alterações. O cálculo do IPTU é dado pela seguinte fórmula: ValorIPTU = ValorVenal * Alíquota Para o município em questão, a Alíquota base será de 10%, ou seja, multiplicaremos o valor venal por 0.1. Para calcular o valor venal, temos as seguintes condições: Localização: Centro Periferia R$ 1000 / m2 R$ 500 / m2 Idade do imóvel: < 10 anos Entre 10 e 30 anos Acima de 30 anos Valor Venal integral 80% do Valor Venal 60% do Valor Venal Para o cálculo da idade, a linguagem Java possui um método chamado between() que retorna o intervalo de dias, meses e anos entre 2 datas (https://docs.oracle.com/javase/8/docs/api/java/time/Period.html#between- java.time.LocalDate-java.time.LocalDate-). A data atual pode ser obtida chamando o método java.time.LocalDate.now(). Observe que a idade não deveria ser armazenada como um campo em imóvel, uma vez que, com o passar do tempo, a quantidade de anos aumentará e o valor do IPTU eventualmente será modificado. Ou seja, a idade deveria ser calculada dinamicamente, sempre que necessário. Além dessas condições, quando os imóveis são apartamentos, caso possuam até 2 quartos e a posição seja fundos, a alíquota cai para 5%. Caso seja uma loja e não esteja num shopping, a alíquota será de 8%. A classe Imoveis recebe um valor no construtor, o qual limita a quantidade de imóveis a serem inseridos. Este valor é útil quando trabalhamos com vetores, os quais precisam de um tamanho inicial para serem alocados. Caso não utilizem vetores, podem ignorar o valor passado. Para o programa acima, a saída deverá ser a seguinte: IPTU do imóvel 1: R$ 6000.0 Total de IPTU a ser arrecadado: R$ 12300.0 Um identificador para cada imóvel deve ser gerado e mantido internamente na classe Imovel. Observe que o identificador não é informado na chamada do construtor, mas é exibido na impressão acima (analise o código fonte correspondente na main()). Utilize os conceitos de OO sempre que possível e adequado. Leia atentamente o código acima para inferir todas as classes e métodos necessários. https://docs.oracle.com/javase/8/docs/api/java/time/Period.html#between-java.time.LocalDate-java.time.LocalDate- https://docs.oracle.com/javase/8/docs/api/java/time/Period.html#between-java.time.LocalDate-java.time.LocalDate-
Compartilhar