RESPOSTA: import java.util.arraylist; import java.util.list; class CarrinhoDeCompras2 { List<Produto> produtos;

Documentos relacionados
final class UltimosDiasMeses{ static final int[] DIAS_DO_MES = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; }

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

Programação Orientada a Objetos SANTOS, Rafael (PLT)

Programação Estruturada e Orientada a Objetos

Aula teórica 11. Tema 11. Repetição. Ciclo while Ciclo do-while Ciclo for

Tratamento de Exceções

Computação II - Java - Prova 1 Prof. Adriano Joaquim de Oliveira Cruz /05/13. Questão: Total Pontos: Gráu:

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java

Linguagem de Programação II Implementação

Tipos, Literais, Operadores

Tipos, Literais, Operadores

Tipos de dados e comandos POO

RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:

nome = n; cargo = c; salario = s; public void print() { System.out.println(nome cargo salario); public void aumento( double fator){

9 Classes Abstractas e Interfaces

Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador)

Tratamento de Erros. Sérgio Luiz Ruivace Cerqueira

Prova 2 PMR3201 1o. semestre 2016 Prof. Thiago Martins

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 6 Filas

Atributos e Métodos Estáticos

Prof. Rogério Rocha 1

Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

MsC. João Maria MsC. Liviane Melo

Universidade Federal de Goiás Instituto de Informática 1ª Prova de Introdução a Programação 06/04/11

Programação Orientada a Objetos

Prova 2 PMR3201 1o. semestre 2015 Prof. Thiago Martins

Linguagem de Programação II Implementação

Aula 5 POO 1 Encapsulamento. Profa. Elaine Faria UFU

Aula 7 Modularização. Processamento da Informação. Universidade Federal do ABC

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

Análise de Programação

Interfaces POO. Prof. Marcio Delamaro

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }

DATA ACCESS OBJECT (DAO)

private static Ascii ascii = new Ascii(); static List<Character> asciinumber = ascii.getasciitable(); Scanner input = new Scanner(System.

Sobrecarga. Algoritmos e Programação II. Aula 3 Sobrecarga

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Simulado de Linguagem de Programação Java

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Exercícios sobre repetição. 1. Escreva um método que lê via teclado 8 números e retorna a quantidade de negativos.

Tratamento de Exceções em Java

ALGORITMOS. Professor: Diego Oliveira. Aula 06 - Tipos Primitivos de Dados

Objetivo do programa: Implementação de um analisador de Logs do Servidor Web com base nos requisitos da unidade curricular de Estatística.

DIRETORIA ACADÊMICA DE GESTÃO E TECNOLOGIA DA INFORMAÇÃO DIATINF TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS TADS

Recursividade. Prof. Jesus José de Oliveira Neto

Algoritmos e Programação 2. Objetos e Classes em Java. Classes. Revisão. Definições de classes incluem (geralmente):

insfcanceof new public switch transient while byte continue extends for int null

Algoritmos I Aula 14 Java: estruturas de seleção e repetição

Aula teórica 10 Tema 10. Selecção Instruções de selecção:

Vetores Unimensionais

LÓGICA DE PROGRAMAÇÃO (JAVA) VARIÁVEIS. Professor Carlos Muniz

Lógica de Programação e Algoritmos

Seleção Múltipla Laços (while, do-while, for) AULA 05

LISTA DUPLAMENTE ENCADEADA

Problema do Caminho Hamiltoniano

Interfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

Notas de Aula 01: Introdução à linguagem de programação Java e ao ambiente de desenvolvimento NetBeans

Sabemos que a classe é responsável por definir a estrutura e o comportamento de seus objetos. Portanto, os objetos são instâncias das classes.

Transcrição:

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 AP2 2 semestre de 2016. Nome Assinatura Observações: 1. Prova sem consulta e sem uso de máquina de calcular. 2. Use caneta para preencher o seu nome e assinar nas folhas de questões e nas folhas de respostas. 3. Você pode usar lápis para responder as questões. 4. Ao final da prova devolva as folhas de questões e as de respostas. 5. Todas as respostas devem ser transcritas nas folhas de respostas. As respostas nas folhas de questões não serão corrigidas. Questão 1) (3.0 pontos) Considere o gabarito da questão 2 da AP1, a qual pedia para implementar um carrinho de compras. Crie agora uma classe CarrinhoDeCompras2, usada método main() abaixo, o qual implementa o carrinho como uma lista e não um vetor. Além dos métodos adiciona() e soma(), crie o método boolean retira (int cod), o qual usa o método getcodigo() da classe Produto e remove o produto com o respectivo código. Este método deve retorna true quando a remoção acontecer, e falso caso contrário. class CarrinhoDeCompras { Produto produtos[]; int ultimo = 0; public CarrinhoDeCompras() { produtos = new Produto[1000]; public void adiciona (Produto p) { produtos[ultimo] = p; ultimo++; public double soma () { double s = 0; for (int i=0; i<ultimo; i++) s = s + produtos[i].getpreco(); return s; public class AP2_2016_2_Q2 { public static void main(string[] args) {

Produto tv = new Produto(1, "TV Plasma", 1500); Produto geladeira = new Produto(2, "Geladeira Frost Free", 1000); Produto sofa = new Produto(3, "Sofa 3 lugares", 500); CarrinhoDeCompras2 carrinho = new CarrinhoDeCompras2(); carrinho.adiciona(tv); carrinho.adiciona(geladeira); carrinho.adiciona(sofa); System.out.println("Valor do carrinho: " + carrinho.soma()); RESPOSTA: import java.util.arraylist; import java.util.list; class CarrinhoDeCompras2 { List<Produto> produtos; public CarrinhoDeCompras2() { produtos = new ArrayList<Produto>(); public void adiciona (Produto p) { produtos.add(p); public double soma () { double s = 0; for (Produto p : produtos) s = s + p.getpreco(); return s; public boolean retira (int cod) { for (Produto p : produtos) { if (p.getcodigo() == cod) { produtos.remove(p); return true; return false; Questão 2) (3.0 pontos) Suponha um sistema de controle de pedidos num restaurante. Neste sistema, um cliente pode ser identificado pelo número de sua mesa ou pelo número do seu telefone, no caso do pedido ser entregue em domicílio. Um pedido contém o código do prato, o preço deste e o cliente correspondente. Os pedidos a serem entregues em domicílio tem acréscimo de 10% (Para acrescer

um valor de x%, basta multiplicar este valor por (1 + x/100). Baseado no código do método main(), informado abaixo, apresente uma implementação para as classes utilizadas neste código. import java.util.arraylist; import java.util.list; public class AP2_2016_2_Q2 { public static void main(string[] args) { List<Pedido> pedidos = new ArrayList<Pedido>(); pedidos.add(new PedidoLocal(1, 50.0, 1)); // Código do prato, valor e código do cliente pedidos.add(new PedidoLocal(2, 20.0, 1)); pedidos.add(new PedidoLocal(3, 100.0, 1)); pedidos.add(new PedidoViagem(1, 50.0, "9999-9999")); // Código do prato, valor e telefone do cliente pedidos.add(new PedidoViagem(2, 20.0, "8888-8888")); double soma = 0; for (Pedido p : pedidos) { soma = soma + p.getprecoprato(); System.out.println("A soma é: " + soma); RESPOSTA: import java.util.arraylist; import java.util.list; class Pedido { int codprato; double precoprato; public Pedido(int codprato, double precoprato) { this.codprato = codprato; this.precoprato = precoprato; public double getprecoprato() { return precoprato; class PedidoViagem extends Pedido { String telefone; public PedidoViagem(int codprato, double precoprato, String tel) { super(codprato, precoprato); this.telefone = tel; public double getprecoprato() { return super.getprecoprato()*1.1;

class PedidoLocal extends Pedido { int mesa; public PedidoLocal(int codprato, double precoprato, int mesa) { super(codprato, precoprato); this.mesa = mesa; Questão 3) (4.0 pontos) Implemente, em Java, o algoritmo de Balance Line. Dados dois arquivos informados como parâmtero de entrada, o arquivo mestre e o arquivo de transações, será gerado um novo aqruivo mestre, cujo o nome será mestre-<nome do arquivo mestre de entrada>, que será formado pela implementação das transações no arquivo mestre original. Caso contrário, se a operação não puder ser realizada, será gerado o arquivo erro-<nome do arquivo mestre de entrada>, contendo as transações não realizadas. As operações, I (inclusão), R (retirada) e A (alteração), são realizadas sobre matrículas únicas. Por exemplo, se o arquivo mestre for (onde cada linha é composta de duas informações, a matrícula de um aluno e o seu CR): 1 10.0 2 0.3 3 7.6 4 5.5 10 7.2 15 2.3 E o arquivo de transações for (cada linha é composta da matrícula, da transação e do novo CR, para as operações A e I) : 1 R 2 A 5.0 3 I 0.5 4 R 5 I 8.9 6 R 9 A 10.0 20 R O novo arquivo mestre será: 2 5.0 3 7.6 5 8.9 10 7.2 15 2.3 O arquivo de erros será (isto é, as transações que não puderam ser realizadas): 3 I 0.5 6 R 9 A 10.0 20 R

SEU PROGRAMA DEVE EXECUTAR COM QUAISQUER ARQUIVOS INFORMADOS COMO PARÂMETROS DE ENTRADA. SE O SEU PROGRAMA RESOLVER SOMENTE O PROBLEMA DO EXEMPLO SUPRACITADO, SUA QUESTÃO SERÁ TOTALMENTE DESCONTADA. RESPOSTA: import java.io.*; public class AP2_POO_2016_2_Q3{ public static void main(string[] args) throws IOException{ BufferedReader in_m, in_t; in_m = new BufferedReader(new FileReader(args[0])); in_t = new BufferedReader(new FileReader(args[1])); BufferedWriter out_m, out_e; out_m = new BufferedWriter(new FileWriter("mestre-" + args[0])); out_e = new BufferedWriter(new FileWriter("erro-" + args[0])); try { String s_m, vs_m[], s_t, vs_t[]; while((s_m!= null) && (s_t!= null)){ //mat iguais... vs_m = s_m.split(" "); vs_t = s_t.split(" "); if(vs_m[0].equals(vs_t[0])){ if(vs_t[1].equals("i")){ out_e.write(s_t + "\n"); out_m.write(s_m + "\n"); else if(vs_t[1].equals("a")) out_m.write(vs_t[0] + " " + vs_t[2] + "\n"); //matricula do mestre e menor... else if(integer.parseint(vs_m[0])<integer.parseint(vs_t[0])){ out_m.write(s_m + "\n"); //matricula do arquivo de transacoes e menor... else{ if(vs_t[1].equals("i")) out_m.write(vs_t[0] + " " + vs_t[2] + "\n");

else out_e.write(s_t + "\n"); //acabou o arquivo de transacoes: copia o resto no novo mestre... while (s_m!= null){ out_m.write(s_m + "\n"); //acabou o arquivo mestre: deve-se analisar todas as transicoes... while (s_t!= null){ vs_t = s_t.split(" "); if(vs_t[1].equals("i")){ out_m.write(vs_t[0] + " " + vs_t[2] + "\n"); else out_e.write(s_t + "\n"); in_m.close(); in_t.close(); out_e.close(); out_m.close(); catch (Exception e){ System.out.println("Excecao\n");