0% acharam este documento útil (0 voto)
19 visualizações9 páginas

Atv2 LP3

ativida de java, lp3
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
19 visualizações9 páginas

Atv2 LP3

ativida de java, lp3
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 9

2024.

Questão 1) (2,0 pontos) Para cada uma das sentenças a seguir assinale (V) para
verdadeiro e (F) para falso.

● ATENÇÃO: Cada resposta (letra) errada anula uma resposta correta. Questões sem
resposta não contam pontos mas também não anulam respostas certas.
● As respostas V ou F devem ser a caneta e nesta parte da prova.

a) (V) O encapsulamento é um princípio da orientação a objetos e em Java em geral é


implementado usando os devidos modificadores de acesso e os métodos getters e setters.
b) (F) Uma classe não pode codificar o construtor sem parâmetros já que é um construtor
padrão da classe.
c) (V) Um atributo de classe pode ser útil quando é necessário contar quantos objetos foram
criados para uma determinada classe.
d) (V) Métodos de classe precisam ser codificados por meio do modificador "static" em
Java.
e) (F) O Java permite que uma classe possa herdar de uma ou mais classes. Por exemplo,
em uma instituição bancária a classe Cliente herda da classe Funcionário quando em
alguns casos herdar também de Cliente por usar o banco.
f) (F) Em uma classe abstrata Funcionário e o método abstrato CalcularSalario faz o cálculo
do salário base e na subclasse Vendedor (que herda de Funcionário) há a sobrescrita do
método CalcularSalario que considera as comissões de vendas do funcionário.
g) (F) Uma classe que implementa uma Interface com 5 métodos pode implementar apenas
3 deles, justamente os que a classe conseguir estabelecer lógicas.
h) (F) Em uma solução com figuras geométricas 2D, um possível atributo de uma interface
Visualizável pode ser a cor do elemento a ser desenhado.

Questão 2) (2,0 pontos) O projeto de uma solução utilizando Polimorfismo, Classes e


Métodos Abstratos e Interfaces requer obedecer algumas restrições impostas por estes
recursos em uma programação Orientada a Objetos.

Analise os códigos a seguir, circule e numere cada situação em que há algum erro no uso
destes recursos e depois para cada erro identificado explique qual foi o erro.

public class Funcionario {


double salario;

public Funcionario(double sal) {


this.salario = sal;
}
public abstract void calculoFerias();
public abstract double getBonificacao();
}

Erro 1:
● Classe concreta com métodos abstratos: A classe Funcionario está sendo
declarada como uma classe concreta (normal), porém contém dois métodos
abstratos: calculoFerias() e getBonificacao(). Isso não é permitido em
Java. Se a classe tem métodos abstratos, ela deve ser abstrata.

—----------------------------------------------------------------------------
public interface Email {
String assunto;

public void enviar(String mensagem, String destinatario);

public String receber();


}

Erro 2:

● Atributos em interfaces: Em Java, interfaces não podem ter atributos de


instância. No código, String assunto é declarado como se fosse um atributo de
instância, o que não é permitido em uma interface. Todos os campos de uma
interface são implicitamente public, static e final, ou seja, constantes.

—----------------------------------------------------------------------------

public class Vendedor extends Funcionario implements Email {


double vendas;

public Vendedor(double sal, double ven) {


super(sal);
this.vendas = ven;
}

@Override
public Double getBonificacao() {
return vendas * 0.05;
}
}

Falta implementação dos métodos da interface: A classe Vendedor implementa a


interface Email, mas não implementa os métodos obrigatórios da interface, como
enviar() e receber(). Em Java, se uma classe implementa uma interface, ela deve
implementar todos os métodos da interface. Caso contrário, a classe Vendedor também
teria que ser declarada como abstrata.
—----------------------------------------------------------------------------

public static void main(String[] args) {


Funcionario f = new Vendedor(3000.0, 27000.0);
System.out.println(f.getBonificacao());
}

● Método calculoFerias() não implementado: Embora o método


getBonificacao() esteja sendo sobrescrito corretamente, o método abstrato
calculoFerias() da classe Funcionario não foi sobrescrito na classe
Vendedor. Como Vendedor herda de Funcionario, ela deve implementar
todos os métodos abstratos da classe pai, ou seja, também o
calculoFerias().

—----------------------------------------------------------------------------

Questão 3) (3,0 pontos) Na indústria, o seu conjunto de equipamentos pode ser comandado
pelo que chamamos de sinóticos, um esquema com figuras que ilustra a planta industrial.
Por exemplo, na Figura 1 uma válvula ("torneira") permite ou não uma bomba bombear um
líquido para um reservatório.
Imagine que cada equipamento é representado por uma figura geométrica (classe
Figura2D), os retângulos representam os dutos/canos e o reservatório, os círculos a bomba,
e os triângulos as válvulas. Cada elemento precisa ter sua área calculada além de manter
um status de status (ligado/desligado) e valor associado (int). Cada item pode mostrar de
forma gráfica o seu funcionamento, por exemplo a bomba está ligada com vazão de
200cm³/s. Além disso, o operador pode registrar explicação sobre o equipamento e o
sistema apresenta um texto de explicação. Por exemplo, para a válvula o sistema explicou
que uma válvula pode liberar ou bloquear o fluxo de líquido.
Usando devidamente os recursos de classes abstratas e interfaces, implemente uma
solução para este cenário com as seguintes características:

a) (1,0 ponto) Implemente a classe abstrata Figura2D com os dados de situação, de valor
e com o método com o cálculo de área. Na implementação, para simplificar a resposta,
pode-se usar atributos públicos e não precisa criar os getters, setters e construtores.

public abstract class Figura2D {

public boolean ligado;

public int valor;

public abstract void Explicar();

public abstract void mostrarFuncionamento();

public abstract double calcularArea();

b) (1,0 ponto) Implemente pelo menos as classes concretas retângulo e círculo, com seus
devidos atributos e os métodos para calcular área.
public class Retangulo extends Figura2D{

public double base;

public double altura;

public Retangulo(double base, double altura){

this.base = base;

this.altura = altura;

public double CalcularAreaRetagulo(){

return base*altura;

}}

public class Circulo extends Figura2D{

public double raio;

public Circulo(double raio){

this.raio = raio;

public double CalcularAreaCirculo(){

return Math.PI*raio*raio;

}}

c) (1,0 ponto) Imagine que o seguinte código é usado para visualizar os dados em tela e
explicar os elementos. Implemente a interface em questão e também os ajustes que
precisam ser feitos nas classes concretas. Pode-se responder os ajustes apenas para
retângulo. (Imagine que para visualizar dados ao atualizar, os métodos imprimem
mensagens em tela com System.out.print).

Visualizavel[] equips = new Visualizavel[3]();

equips[0] = new Quadrado();

equips[1] = new Circulo();

equips[2] = new Retangulo();


for(Visualizavel v : equips) {

v.MostrarDadosAtuais();

System.out.println("Explicação: " + v.Explicar());

public interface Explicar{

public string getExplicar(); }

public class Retangulo extends Figura2D implements IExplicacao {

public double base;

public double altura;

public Retangulo(double base, double altura){

this.base = base;

this.altura = altura;

public double CalcularAreaRetagulo(){

return base*altura;

public String getExplicacao(){

return("EXPLICAÇAO");

}
2023.2

Questão 1) (1,0 ponto) Observe o código a seguir e responda as questões seguintes:


public class Principal {
public static void main(String[] args) {
Paciente p1 = new Paciente();
Paciente p2 = new PacienteCritico();
p1.ChecarGlicose();
p2.ChecarGlicose();
}
}

public class Paciente {


protected String nome;
protected double glicose;

Paciente() {
this.nome = "Novo";
this.glicose = 80;
}

public void ChecarGlicose() {


if (this.glicose > 100)
System.out.println(" ");
else
System.out.println(" ");
}
}

public class PacienteCritico extends Paciente {


private double hemoglobinaGlicada;

PacienteCritico() {
this.nome = "Novo";
this.glicose = 120;
this.hemoglobinaGlicada = 230;
}

public void ChecarGlicose() {


if ((this.glicose > 100) && (this.hemoglobinaGlicada > 200))
System.out.println(" ");
else
System.out.println(" ");
}
}
a) (0,2 pontos) Considerando que o programa está correto, o que será impresso pelo
programa?

nao sera impresso nada pois os System.out.println esta vazio

b) (0,4 pontos) Em qual(is) método(s) seria necessário usar o @Override? Quais as


consequências ao não se utilizar o @Override no(s) método(s) necessários?

no metodo ChecarGlicose, a consequencia seria escrever o nome do metodo errado e


ele nao funcionar.

c) (0,4 pontos) Qual tipo de polimorfismo está presente neste exemplo. Explique.

tambem em ChecarGlicose(), pois ele esta em diferentes classes com implemetaçoes


diferentes.

Questão 2) (1,5 pontos)

Neste momento da disciplina tratamos os princípios de orientação a objetos, dentre


eles a Abstração, o Encapsulamento, a Herança e o Polimorfismo. Estes princípios,
junto com os recursos de linguagem de programação para sua implementação,
contribuem para um bom desenvolvimento de software. Imagine que um determinado
software precisa de acessar a porta serial do computador para enviar dados e que
você precisará... (continua no enunciado que não está totalmente visível).

Questão 3 (2,5 pontos)


Imagine que uma concessionária de uma rodovia privatizada precisa implementar um
programa para cobrança de pedágio. Neste programa, existem 3 classes: Veículo,
Carro e Caminhão que apresentam as seguintes características:

Um veículo possui uma placa, um carro além de placa possui o número de


passageiros e caminhão também possui placa e além disso possui o número de
eixos.

Para lógica do cálculo de pedágio, suponha que para carro é cobrado o valor de
R$1,50 por passageiro e para caminhão o valor de R$5,30 por eixo.

No corpo principal do programa foi usado o seguinte código:

Veiculo[] veiculos = new Veiculo[3]();


Veiculo[0] = new Carro("MQF4226", 5);
Veiculo[1] = new Caminhao("XPT3222", 3);
Veiculo[2] = new Caminhao("ZAE2111", 5);

for(Veiculo v : veiculos) {
v.imprimir();
System.out.println(" Valor pedágio: " + v.CalcularPedagio());
}

Implemente as classes Veículo, Carro e Caminhão usando apropriadamente os


recursos de herança da linguagem Java com ênfase para os conceitos de classes
abstratas, métodos abstratos, uso do “super” e outros.

Questão 4 (1,0 ponto)


O polimorfismo pode ser implementado de algumas maneiras e em cada uma delas é
necessário ter meios para se distinguir qual comportamento/método será executado.

a) Neste contexto, explique o que é uma sobrecarga de métodos dentro de uma


classe e qual meio usado para distinguir qual método será executado quando a
classe/método for usado.

sobrecarga é definir múltiplas funções com o mesmo nome, e pra distinguir essas
funções são usados os parâmetros

b) Apresente um exemplo prático do uso da sobrecarga de método e de como a


distinção entre os métodos ocorre. O exemplo pode ser feito com explicação de um
código, mas não é necessário codificar, pode ser também apenas uma explicação
indicando claramente as classes e outros elementos que explicam os conceitos
pedidos na questão.

Por exemplo, temos a classe Numero_A que nesta classe temos o método Número
que recebe como parâmetro um número e o retorna, e nesta mesma classe temos o
mesmo método só que sem receber nenhum parâmetro e retorna um numero tbm,
entao podemos distinguir o método Numero pelos parâmetros, já que em um recebe
um número, e em outro não recebe nada.

Você também pode gostar

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy