Prévia do material em texto
GABARITO
DISCIPLINA
EEP101 - Programação Orientada a Objetos
APLICAÇÃO
16/06/2021
CÓDIGO
DA PROVA P010/P011
QUESTÕES OBJETIVAS
Questão 1.1
Um dos princípios da programação orientada a objetos é o encapsulamento, diretamente relacionado
ao acesso e modificação de dados da classe. Assim, é correto afirmar que através do encapsulamento,
é possível:
a. abstrair conceitos e dados da classe.
b. hierarquizar classes e dados.
c. abstrair funções.
d. não permitir que dados sejam modificados fora da classe que o possui.
e. definir atributos e especificar classes.
RESOLUÇÃO
A resposta correta é: não permitir que dados sejam modificados fora da classe que o possui.
Justificativa
Uma forma de proteção dos dados ao acesso e modificação.
Questão 1.2
Na linguagem Java, uma forma de implementar o polimorfismo é fazendo o uso de interface. A esse
respeito, marque a alternativa incorreta.
a. Uma interface é um contrato, as classes devem implementar alguns dos métodos.
b. A classe que faz uso de uma interface deverá usar no seu cabeçalho a
palavra implements seguido do nome da interface.
c. Uma interface é um contrato, as classes devem implementar todos os métodos.
d. Não é possível criar objetos a partir de uma interface.
e. É possível criar hierarquia de interfaces.
RESOLUÇÃO
A resposta errada é: Uma interface é um contrato, as classes devem implementar alguns dos
métodos.
Justificativa
O contrato deve ser cumprido, por isso todos os métodos da interface devem ser implementados sem
exceção.
Questão 1.3
Observe o código Java a seguir, que implementa a classe Data. Nesta classe há atributos private e o
acesso é restrito aos métodos da classe, chamados “getters” e “setters”. Esta propriedade
implementada nesta classe, consiste em:
public class Data {
private int dia;
private int mes;
private int ano;
public Data(int dia, int mes, int ano) {
this.dia = dia;
this.mes = mes;
this.ano = ano;
}
public int getDia() {
return dia;
}
public void setDia(int dia) {
this.dia = dia;
}
public int getMes() {
return mes;
}
public void setMes(int mes) {
this.mes = mes;
}
public int getAno() {
return ano;
}
public void setAno(int ano) {
this.ano = ano;
}
@Override
public String toString() {
return "Data [dia=" + dia + ", mes=" + mes + ", ano=" + ano + "]";
}
}
a. herança
b. encapsulamento
c. polimorfismo
d. associação de classes
e. interface.
RESOLUÇÃO
A resposta correta é: encapsulamento.
Justificativa
Encapsulamento é uma propriedade da orientação a objetos de forma que acesso e modificação de
atributos da classe, sejam realizadas somente por métodos da classe ou ainda por métodos de classes
de mesmo pacote, de tal forma a garantir segurança dos dados manipulados pelos objetos das
classes.
Questão 1.4
Observe o código Java a seguir, em que a classe ImprimirP herda características e funcionalidades da
classe Thread. Marque a alternativa incorreta:
public class ImprimirP extends Thread{
int idTarefa;
int tempo;
public ImprimirP(int id, int t) {
this.idTarefa = id;
this.tempo = t;
}
public void run() {
try {
System.out.println("Tarefa
#"+this.idTarefa+" vai dormir
"+this.tempo+" milisegundos");
Thread.sleep(this.tempo);
}catch(InterruptedException e) {
e.printStackTrace();
}
System.out.println("Tarefa
#"+this.idTarefa+" acordou!!");
}
}
public class TesteThreadImprimirP {
public static void main(String[] args) {
// TODO Auto-generated method
stub
ImprimirP t1 = new ImprimirP(1, 5000);
t1.start();
ImprimirP t2 = new ImprimirP(2, 500);
t2.start();
ImprimirP t3 = new ImprimirP(3, 3000);
t3.start();
}
}
a. Há três threads rodando.
b. A classe ImprimirP implementa o método run() que ativa a execução de uma tarefa que será
executada em paralelo.
c. Há três tarefas sendo executadas em paralelo.
d. A tarefa é escrever String sobre status, identificador e o tempo da tarefa.
e. O início da tarefa se dá pela execução do método super.
RESOLUÇÃO
A resposta correta é: O início da tarefa se dá pela execução do método super.
Justificativa
O início da tarefa se dá pela execução do método start da superclasse Thread.
QUESTÕES DISSERTATIVAS
Questão 2
Escreva o código em Java das classes a seguir, com atributos privados e métodos acessadores e
modificadores. Implemente o conceito de polimorfismo nos construtores da classe Bebida e o
conceito de herança entre classes, ou seja, BebidaAlcoolica é uma especialização de Bebida.
RESOLUÇÃO
import java.util.Date;
public class Bebida {
private String nome;
private String codigo;
private Double preco;
public Bebida() {
}
public Bebida(String nome, String
codigo, Double preco) {
this.nome=nome;
this.codigo=codigo;
this.preco=preco;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCodigo() {
return codigo;
}
import java.util.*;
public class BebidaAlcoolica extends
Bebida{
private Double teor;
public BebidaAlcoolica(Double teor,
Double preco, String codigo, String nome)
{
super.setPreco(preco);
super.setCodigo(codigo);
super.setNome(nome);
this.teor=teor;
}
public Double getTeor() {
return teor;
}
public void setTeor(Double teor) {
this.teor = teor;
}
}
Bebida
Nome: String
Código: String
Preço: Double
Getters e Setters
BebidaAlcoolica
Teor: Double
Getters e Setters
public void setCodigo(String codigo)
{
this.codigo = codigo;
}
public Double getPreco() {
return preco;
}
public void setPreco(Double preco) {
preco = preco;
}
}
Rubricas | critérios de correção
Cada classe: 0.2*2 = 0.4 ponto
Todos os atributos private: 0.2 ponto
Polimorfismo no construtor, mínimo 2 construtores com parâmetros diferentes: 0.2 ponto
Herança: 0.2 ponto
Cada método implementado: 0.1 *10 = 1 ponto
Questão 3
Exemplifique o uso da classe de objetos List, do pacote java.util, adicionando 3 objetos nesta estrutura
de dados e mostrando seu conteúdo.
RESOLUÇÃO
import java.util.*;
public class TestaList {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> lista1 = new ArrayList<>();
lista1.add("Maria");
lista1.add(1, "Joao");
lista1.add("Ana");
lista1.add("Ana");
lista1.add(1,"teste");
System.out.println("ArrayList de Nomes: " + lista1);
}
}
Rubricas | critérios de correção
Considerar cada item pedido (a)classe de objetos List, (b)pacote java.util, (c) 3 objetos na estrutura de
dados e (d)mostrar o conteúdo, 0.5 pontos.