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

Prova 2

O documento descreve a criação de várias classes em Java, incluindo EntradaEmAgenda, Agenda, Matriz2x2, Cliente, e métodos para calcular produtos, simular lançamentos de dados, entre outros. Cada classe possui atributos, construtores, métodos e exemplos de uso, demonstrando conceitos de programação orientada a objetos e manipulação de arrays. Além disso, o documento inclui questões de múltipla escolha relacionadas a arrays e estruturas de dados em Java.

Enviado por

Sorrry
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)
25 visualizações49 páginas

Prova 2

O documento descreve a criação de várias classes em Java, incluindo EntradaEmAgenda, Agenda, Matriz2x2, Cliente, e métodos para calcular produtos, simular lançamentos de dados, entre outros. Cada classe possui atributos, construtores, métodos e exemplos de uso, demonstrando conceitos de programação orientada a objetos e manipulação de arrays. Além disso, o documento inclui questões de múltipla escolha relacionadas a arrays e estruturas de dados em Java.

Enviado por

Sorrry
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/ 49

3 Arrays e ArrayLists

17. Crie uma classe EntradaEmAgenda que contenha:


• os dados necessários para armazenar uma entrada de agenda
(hora, dia, mês, ano
e assunto);
• um construtor;
• um método toString;
• um método ehNoDia que recebe valores de dia, mês e ano e
retorna true se o dia,
mês e ano daquela instância da classe forem iguais aos
argumentos passados.
Crie também uma classe Agenda que:
• encapsule uma agenda de compromissos representada por
um ArrayList de instân-
cias da classe EntradaEmAgenda;
– este item é obrigatório. Caso não seja contemplado, toda a
questão será des-
considerada
• implemente um método construtor;
• possua um método para adicionar um novo compromisso à
lista de compromissos;
• tenha um método listaDia que recebe valores de dia, mês e
ano e lista todas as
instâncias de EntradaEmAgenda que caem naquele dia, mês e
ano.
Por fim, escreva uma classe executável que crie uma Agenda,
adicione a ela 2 compro-
missos e, usando o método listaDia, liste as entradas da
agenda que tem a mesma da
data do seu aniversário.

public class EntradaEmAgenda {


private int hora;
private int dia;
private int mes;
private int ano;
private String assunto;

public EntradaEmAgenda(int hora, int dia, int mes, int ano,


String assunto) {
this.hora = hora;
this.dia = dia;
this.mes = mes;
this.ano = ano;
this.assunto = assunto;
}

@Override
public String toString() {
return "Compromisso: " + assunto + " - Data: " + dia +
"/" + mes + "/" + ano +
" às " + hora + "h";
}

public boolean ehNoDia(int dia, int mes, int ano) {


return this.dia == dia && this.mes == mes && this.ano
== ano;
}
}

import java.util.ArrayList;

public class Agenda {


private ArrayList<EntradaEmAgenda> compromissos;

public Agenda() {
this.compromissos = new
ArrayList<EntradaEmAgenda>();
}

public void adicionarCompromisso(EntradaEmAgenda


compromisso) {
compromissos.add(compromisso);
}

public void listaDia(int dia, int mes, int ano) {


System.out.println("Compromissos para " + dia + "/" +
mes + "/" + ano + ":");
boolean encontrou = false;

for (EntradaEmAgenda compromisso : compromissos) {


if (compromisso.ehNoDia(dia, mes, ano)) {
System.out.println(compromisso);
encontrou = true;
}
}

if (!encontrou) {
System.out.println("Nenhum compromisso encontrado
para esta data.");
}
}
}

public class TesteAgenda {


public static void main(String[] args) {

Agenda minhaAgenda = new Agenda();

EntradaEmAgenda compromisso1 = new


EntradaEmAgenda(14, 15, 3, 2025, "Reunião de trabalho");

EntradaEmAgenda compromisso2 = new


EntradaEmAgenda(19, 20, 4, 2025, "Jantar de aniversário");
minhaAgenda.adicionarCompromisso(compromisso1);
minhaAgenda.adicionarCompromisso(compromisso2);

minhaAgenda.listaDia(20, 4, 2025);
}
}
18. Escreva uma classe que encapsule uma matriz de tamanho
2 × 2 de valores do tipo float
usando um array de duas dimensões. Nesta classe, além do
construtor, escreva um
método que calcule o determinante da matriz encapsulada e
um método que permita a
impressão em formato matricial dos seus valores. Escreva um
aplicativo de teste que
demonstre as capacidades da classe criada.

public class Matriz2x2 {


private float[][] matriz;

public Matriz2x2(float[][] valores) {


if (valores.length != 2 || valores[0].length != 2 ||
valores[1].length != 2) {
throw new IllegalArgumentException("A matriz deve
ser 2x2");
}

this.matriz = new float[2][2];


for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
this.matriz[i][j] = valores[i][j];
}
}
}

public float calcularDeterminante() {


return (matriz[0][0] * matriz[1][1]) - (matriz[0][1] *
matriz[1][0]);
}

public void imprimirMatriz() {


for (int i = 0; i < 2; i++) {
System.out.print("| ");
for (int j = 0; j < 2; j++) {
System.out.print(matriz[i][j] + " ");
}
System.out.println("|");
}
}
}

public class TesteMatriz {


public static void main(String[] args) {

float[][] valores = {{2.0f, 3.0f}, {1.0f, 4.0f}};

Matriz2x2 matriz = new Matriz2x2(valores);

System.out.println("Matriz:");
matriz.imprimirMatriz();

float determinante = matriz.calcularDeterminante();


System.out.println("Determinante: " + determinante);
}
}
19. Crie um objeto de uma classe chamada Cliente com os
atributos id, nome, idade, telefone.
Faça um programa para solicitar os dados de vários clientes e
armazenar em um ArrayList
até que se digite um número de id negativo. Em seguida,
exiba os dados de todos os
clientes.

import java.util.ArrayList;
import java.util.Scanner;

public class Cliente {


private int id;
private String nome;
private int idade;
private String telefone;

public Cliente(int id, String nome, int idade, String


telefone) {
this.id = id;
this.nome = nome;
this.idade = idade;
this.telefone = telefone;
}

@Override
public String toString() {
return "Cliente [ID: " + id + ", Nome: " + nome + ",
Idade: " + idade +
", Telefone: " + telefone + "]";
}
}

public class CadastroClientes {


public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<Cliente> clientes = new ArrayList<>();

int id;
String nome;
int idade;
String telefone;

do {
System.out.println("\nCadastro de Cliente");
System.out.print("ID (negativo para sair): ");
id = scanner.nextInt();

if (id < 0) {
break;
}

scanner.nextLine(); // Consumir a quebra de linha

System.out.print("Nome: ");
nome = scanner.nextLine();
System.out.print("Idade: ");
idade = scanner.nextInt();
scanner.nextLine(); // Consumir a quebra de linha

System.out.print("Telefone: ");
telefone = scanner.nextLine();

Cliente cliente = new Cliente(id, nome, idade,


telefone);
clientes.add(cliente);

System.out.println("Cliente cadastrado com


sucesso!");

} while (true);

System.out.println("\nLista de Clientes Cadastrados:");


for (Cliente cliente : clientes) {
System.out.println(cliente);
}

scanner.close();
}
}

20. Escreva um aplicativo que calcula o produto de uma série


de inteiros que são passados
para um método produto utilizando uma lista de argumentos
de comprimento variável.
Escreva também uma classe executável que teste seu método
com várias chamadas,
cada uma com um número diferente de argumentos.

public class CalculadoraProduto {

public static int produto(int... numeros) {


int resultado = 1;

for (int numero : numeros) {


resultado *= numero;
}

return resultado;
}
}

public class TesteCalculadoraProduto {


public static void main(String[] args) {

System.out.println("Produto de 2 e 3: " +
CalculadoraProduto.produto(2, 3));
System.out.println("Produto de 1, 2, 3, 4: " +
CalculadoraProduto.produto(1, 2, 3, 4));
System.out.println("Produto de 5, 10, 2: " +
CalculadoraProduto.produto(5, 10, 2));
System.out.println("Produto de 7: " +
CalculadoraProduto.produto(7));
System.out.println("Produto sem argumentos: " +
CalculadoraProduto.produto()); // Retorna 1
}
}

21. Escreva um aplicativo para simular o lançamento de dois


dados. O aplicativo deve utilizar
um objeto de classe Random, uma vez para lançar o primeiro
dado e novamente para
lançar o segundo dado. A soma dos dois valores deve então
ser calculada. Cada dado
pode mostrar um valor inteiro de 1 a 6, portanto a soma dos
valores irá variar de 2 a 12, com 7 sendo a soma mais
frequente e 2 e 12, as somas menos frequentes. Seu
aplicativo deve lançar o dado 36.000.000 vezes. Utilize um
array unidimensional para
contar o número de vezes que cada possível soma aparece.
Exiba os resultados.

import java.util.Random;

public class SimulacaoDados {


public static void main(String[] args) {
Random random = new Random();

int[] contagem = new int[13];


int numeroLancamentos = 36_000_000;

for (int i = 0; i < numeroLancamentos; i++) {


int dado1 = random.nextInt(6) + 1;
int dado2 = random.nextInt(6) + 1;

int soma = dado1 + dado2;


contagem[soma]++;
}

System.out.println("Resultados após " +


numeroLancamentos + " lançamentos:");
System.out.println("Soma\tOcorrências\tPorcentagem");

for (int i = 2; i <= 12; i++) {


double porcentagem = (double) contagem[i] /
numeroLancamentos * 100;
System.out.printf("%d\t%d\t\t%.2f%%\n", i,
contagem[i], porcentagem);
}
}
}

22. [FCC - 2022 - Analista Judiciário - Tecnologia da


Informação] Considere o código Java
abaixo.
public class Main {
public static void main(String args[]) {
int dados[][] = new int[5][];
for(int i = 0; i < 5; i++) {
dados[i] = new dados[5];
for(int j = 0; j < 5; j++) {
dados[i][j] = i + j;
System.out.println(dados[i][j]);
}
}
}
}
Sobre o código
(A) Ocorrerá uma exceção do tipo NullPointerException, pois
na terceira linha não foi
definido o número de linhas da array dados.
(B) Ao tirar o comando dados[i] = new int[5]; o programa
executará normalmente.
(C) i < 5 na quarta linha pode ser substituído por i <
dados.length sem afetar a lógica
de execução.
(D) O comando int[][] dados = new int[5][]; precisa
obrigatoriamente ser substi-
tuído por int[][] dados = new int[5][5];.
(E) Ocorrerá uma exceção do tipo NullPointerException no
comando dados [i][j] = i + j;.

23. [UFMA - 2023 - Analista de Tecnologia da Informação]


Na linguagem de programação
JAVA, qual das seguintes alternativas representa uma
declaração válida?
(A) char[ ] ch = new char[5]
(B) char[ ] ch = new char(5)
(C) char[ ] ch = new char( )
(D) char[ ] ch = new char[ ]
(E) char[] ch = new [5]

24. [CONSULPLAN - 2017 - TRF - 2ª REGIÃO - Analista


Judiciário - Informática Desen-
volvimento] “Um array em Java é uma coleção ordenada que
ocupa uma porção fixa e
sequencial da memória. Além disso, é definido como uma
estrutura homogênea, pois
armazena um determinado tipo de dado. Esse, por sua vez, faz
referências para objetos,
valores de um tipo primitivo ou para outros arrays.” Considere
que o usuário digitou os
valores: 14, 40, 16, 22 e 60 para o array. Assinale a alternativa
que contém o valor que
será exibido quando executado o código Java a seguir.

for (i = 0; i < 5; i++) {


for (j = 0; j < 4; j++) {
if (vetor[j] < vetor[j + 1]) {
aux = vetor[j];
vetor[j] = vetor[j + 1];
vetor[j + 1] = aux;
}
}
}
(A) 14, 16, 22, 40 e 60.
(B) 28, 32, 44, 80 e 120.
(C) 60, 40, 22, 16 e 14.
(D) 120, 80, 44, 32 e 28.

25. [CS-UFG - 2024 - Câmara de Anápolis - GO - Analista


Administrativo - Analista de Siste-
mas] Considere o trecho abaixo de código escrito na
linguagem Java
int index, aux, i, j;
for (i = 0; i <= 3; i++) {
index = i;
for (j = i + 1; j <= 4; j++) {
if (v[j] < v[index]) {
index = j;
}
}
if (index != i) {
aux = v[index];
v[index] = v[i];
v[i] = aux;
}
}
Suponha um vetor inteiro v de tamanho 5. Ao entrar com
valores v = [3, 7, 2, 3, 10] a
saída deste vetor após passar pelo código será
(A) v = [10, 7, 3, 3, 2].
(B) v = [2, 3, 10, 3, 7].
(C) v = [3, 3, 2, 10, 7].
(D) v = [2, 3, 3, 7, 10].

26. [FADE - UFPE - 2023 - UFPE - Analista de Tecnologia da


Informação - Área: Sistemas]
Considere o seguinte código em Java:
public class Main {
public static void main(String[] args) {
Integer[] A = new Integer[3];
A[0] = 2;
A[1] = 3;
A[2] = 9;
proc(A, A[2]);
System.out.println(A[0] + A[1] + A[2]);
}
private static void proc(Integer[] B, Integer c) {
B[0] = c;
B[2] = B[0] + B[1];
}
}
A execução desse código resulta na impressão do seguinte
valor:
(A) 14
(B) 17
(C) 24
(D) 11
(E) 21

27. [FADE - UFPE - 2023 - UFPE - Analista de Tecnologia da


Informação - Área: Sistemas]
Considere o seguinte código em Java:
public class Main {
public static void main(String[] args) {
int[] A = {12, 25, 16, 11, 9, 31, 23, 27, 22};
System.out.println(A[A[2] - A[4]] - A[6]);
}
}
A execução desse código resulta na impressão do seguinte
valor:
(A) 0
(B) 1
(C) 2
(D) 3
(E) 4

4 Reúso de Classes

28. Crie as classes Equipamento e Computador, cada uma


com dois atributos privados à
sua escolha. Além disso, a classe Computador deverá herdar
os métodos e atributos
da classe Equipamento. Escreva métodos de acesso, get’s e
set’s, para os atributos
definidos em ambas as classes. Cada classe também deve ter
um método toString.
Lembre-se que o método toString de Computador também
deve representar os atributos
herdados. Por fim, crie uma classe executável,
TestaEquipamento, para instanciar um
objeto de cada classe, inicializar seus atributos e imprimí-los.

public class Equipamento {


private String marca;
private double preco;

public Equipamento() {
}

public Equipamento(String marca, double preco) {


this.marca = marca;
this.preco = preco;
}

public String getMarca() {


return marca;
}

public void setMarca(String marca) {


this.marca = marca;
}

public double getPreco() {


return preco;
}

public void setPreco(double preco) {


this.preco = preco;
}

@Override
public String toString() {
return "Equipamento [marca=" + marca + ", preco=" +
preco + "]";
}
}

public class Computador extends Equipamento {


private String processador;
private int memoriaRAM;

public Computador() {
}

public Computador(String marca, double preco, String


processador, int memoriaRAM) {
super(marca, preco);
this.processador = processador;
this.memoriaRAM = memoriaRAM;
}

public String getProcessador() {


return processador;
}

public void setProcessador(String processador) {


this.processador = processador;
}

public int getMemoriaRAM() {


return memoriaRAM;
}

public void setMemoriaRAM(int memoriaRAM) {


this.memoriaRAM = memoriaRAM;
}

@Override
public String toString() {
return "Computador [" + super.toString() + ",
processador=" + processador + ", memoriaRAM=" +
memoriaRAM + "GB]";
}
}

public class TestaEquipamento {


public static void main(String[] args) {
Equipamento equip = new Equipamento("Samsung",
1500.0);
Computador comp = new Computador("Dell", 5000.0,
"Intel i7", 16);

System.out.println(equip);
System.out.println(comp);
}
}

29. Crie uma classe para representar uma data e um horário


(DataHora).
• Escreva uma classe EventoDelegacao que seja baseada na
classe DataHora e que
contenha um campo para indicar qual o evento que ela
representa (use uma String
para isto). Use o mecanismo de delegação para criar a classe
EventoDelegacao;
• Escreva uma classe EventoHeranca que seja baseada na
classe DataHora e que
contenha um campo para indicar qual o evento que ela
representa (use uma String
para isto). Use o mecanismo de herança para criar a classe
EventoHeranca;
• Escreva um aplicativo de teste que demonstre o uso das
classes criadas.

public class DataHora {


private int dia;
private int mes;
private int ano;
private int hora;
private int minuto;

public DataHora() {
}
public DataHora(int dia, int mes, int ano, int hora, int
minuto) {
this.dia = dia;
this.mes = mes;
this.ano = ano;
this.hora = hora;
this.minuto = minuto;
}

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;
}

public int getHora() {


return hora;
}

public void setHora(int hora) {


this.hora = hora;
}

public int getMinuto() {


return minuto;
}

public void setMinuto(int minuto) {


this.minuto = minuto;
}

@Override
public String toString() {
return dia + "/" + mes + "/" + ano + " " + hora + ":" +
minuto;
}
}

public class EventoDelegacao {


private DataHora dataHora;
private String descricao;

public EventoDelegacao() {
this.dataHora = new DataHora();
}

public EventoDelegacao(int dia, int mes, int ano, int hora,


int minuto, String descricao) {
this.dataHora = new DataHora(dia, mes, ano, hora,
minuto);
this.descricao = descricao;
}

public DataHora getDataHora() {


return dataHora;
}

public void setDataHora(DataHora dataHora) {


this.dataHora = dataHora;
}

public String getDescricao() {


return descricao;
}

public void setDescricao(String descricao) {


this.descricao = descricao;
}
public int getDia() {
return dataHora.getDia();
}

public void setDia(int dia) {


dataHora.setDia(dia);
}

public int getMes() {


return dataHora.getMes();
}

public void setMes(int mes) {


dataHora.setMes(mes);
}

public int getAno() {


return dataHora.getAno();
}

public void setAno(int ano) {


dataHora.setAno(ano);
}

public int getHora() {


return dataHora.getHora();
}

public void setHora(int hora) {


dataHora.setHora(hora);
}

public int getMinuto() {


return dataHora.getMinuto();
}

public void setMinuto(int minuto) {


dataHora.setMinuto(minuto);
}

@Override
public String toString() {
return "Evento: " + descricao + " - Data/Hora: " +
dataHora;
}
}

public class EventoHeranca extends DataHora {


private String descricao;

public EventoHeranca() {
}

public EventoHeranca(int dia, int mes, int ano, int hora, int
minuto, String descricao) {
super(dia, mes, ano, hora, minuto);
this.descricao = descricao;
}
public String getDescricao() {
return descricao;
}

public void setDescricao(String descricao) {


this.descricao = descricao;
}

@Override
public String toString() {
return "Evento: " + descricao + " - Data/Hora: " +
super.toString();
}
}

public class TestaEvento {


public static void main(String[] args) {
DataHora dataHora = new DataHora(15, 3, 2025, 14,
30);
System.out.println("DataHora: " + dataHora);

EventoDelegacao eventoDel = new EventoDelegacao(15,


3, 2025, 15, 0, "Reunião de Projeto");
System.out.println(eventoDel);

EventoHeranca eventoHer = new EventoHeranca(15, 3,


2025, 16, 30, "Apresentação");
System.out.println(eventoHer);
}
}

30. Escreva as classes LivroLivraria e LivroBiblioteca que


herdam da classe Livro. Quais as
diferenças entre as duas classes e que campos elas têm em
comum? Defina os atributos
de cada classe e escreva um aplicativo de teste que demonstre
o uso das classes criadas.

public class Livro {


private String titulo;
private String autor;
private int anoPublicacao;
private String isbn;

public Livro() {
}

public Livro(String titulo, String autor, int anoPublicacao,


String isbn) {
this.titulo = titulo;
this.autor = autor;
this.anoPublicacao = anoPublicacao;
this.isbn = isbn;
}

public String getTitulo() {


return titulo;
}

public void setTitulo(String titulo) {


this.titulo = titulo;
}

public String getAutor() {


return autor;
}

public void setAutor(String autor) {


this.autor = autor;
}

public int getAnoPublicacao() {


return anoPublicacao;
}

public void setAnoPublicacao(int anoPublicacao) {


this.anoPublicacao = anoPublicacao;
}

public String getIsbn() {


return isbn;
}

public void setIsbn(String isbn) {


this.isbn = isbn;
}
@Override
public String toString() {
return "Livro [titulo=" + titulo + ", autor=" + autor + ",
anoPublicacao=" + anoPublicacao + ", isbn=" + isbn + "]";
}
}

public class LivroLivraria extends Livro {


private double preco;
private int quantidadeEstoque;

public LivroLivraria() {
}

public LivroLivraria(String titulo, String autor, int


anoPublicacao, String isbn, double preco, int
quantidadeEstoque) {
super(titulo, autor, anoPublicacao, isbn);
this.preco = preco;
this.quantidadeEstoque = quantidadeEstoque;
}

public double getPreco() {


return preco;
}

public void setPreco(double preco) {


this.preco = preco;
}

public int getQuantidadeEstoque() {


return quantidadeEstoque;
}

public void setQuantidadeEstoque(int quantidadeEstoque) {


this.quantidadeEstoque = quantidadeEstoque;
}

@Override
public String toString() {
return super.toString() + " LivroLivraria [preco=" +
preco + ", quantidadeEstoque=" + quantidadeEstoque + "]";
}
}

public class LivroBiblioteca extends Livro {


private String localizacao;
private boolean disponivel;

public LivroBiblioteca() {
}

public LivroBiblioteca(String titulo, String autor, int


anoPublicacao, String isbn, String localizacao, boolean
disponivel) {
super(titulo, autor, anoPublicacao, isbn);
this.localizacao = localizacao;
this.disponivel = disponivel;
}

public String getLocalizacao() {


return localizacao;
}

public void setLocalizacao(String localizacao) {


this.localizacao = localizacao;
}

public boolean isDisponivel() {


return disponivel;
}

public void setDisponivel(boolean disponivel) {


this.disponivel = disponivel;
}

@Override
public String toString() {
return super.toString() + " LivroBiblioteca [localizacao="
+ localizacao + ", disponivel=" + disponivel + "]";
}
}

public class TestaLivro {


public static void main(String[] args) {
Livro livro = new Livro("Clean Code", "Robert C.
Martin", 2008, "9780132350884");
LivroLivraria livroLivraria = new
LivroLivraria("Domain-Driven Design", "Eric Evans", 2003,
"9780321125217", 89.90, 15);
LivroBiblioteca livroBiblioteca = new
LivroBiblioteca("Effective Java", "Joshua Bloch", 2017,
"9780134685991", "Seção 004, Prateleira B", true);

System.out.println(livro);
System.out.println(livroLivraria);
System.out.println(livroBiblioteca);
}
}

31. Crie uma classe Pessoa com ao menos 2 atributos a sua


escolha. Escreva a classe
Politico que herda da classe Pessoa e tem um campo adicional
para representar o partido
do político. Escreva também as classes Prefeito e Governador
que herdam da classe
Politico e que contém campos para representar a cidade ou
estado governado. Todos
atributos devem ser privados. Cada classe deve ter um
construtor e um método toString.
Lembre-se que cada método toString deve representar todos
os atributos, inclusive os
herdados. Escreva também uma aplicação que demonstre o
uso de instâncias destas
classes.

public class Pessoa {


private String nome;
private int idade;

public Pessoa() {
}

public Pessoa(String nome, int idade) {


this.nome = nome;
this.idade = idade;
}

public String getNome() {


return nome;
}

public void setNome(String nome) {


this.nome = nome;
}

public int getIdade() {


return idade;
}

public void setIdade(int idade) {


this.idade = idade;
}
@Override
public String toString() {
return "nome=" + nome + ", idade=" + idade;
}
}

public class Politico extends Pessoa {


private String partido;

public Politico() {
}

public Politico(String nome, int idade, String partido) {


super(nome, idade);
this.partido = partido;
}

public String getPartido() {


return partido;
}

public void setPartido(String partido) {


this.partido = partido;
}

@Override
public String toString() {
return super.toString() + ", partido=" + partido;
}
}

public class Prefeito extends Politico {


private String cidade;

public Prefeito() {
}

public Prefeito(String nome, int idade, String partido,


String cidade) {
super(nome, idade, partido);
this.cidade = cidade;
}

public String getCidade() {


return cidade;
}

public void setCidade(String cidade) {


this.cidade = cidade;
}

@Override
public String toString() {
return super.toString() + ", cidade=" + cidade;
}
}
public class Governador extends Politico {
private String estado;

public Governador() {
}

public Governador(String nome, int idade, String partido,


String estado) {
super(nome, idade, partido);
this.estado = estado;
}

public String getEstado() {


return estado;
}

public void setEstado(String estado) {


this.estado = estado;
}

@Override
public String toString() {
return super.toString() + ", estado=" + estado;
}
}

public class TestaPoliticos {


public static void main(String[] args) {
Pessoa pessoa = new Pessoa("João Silva", 35);
Politico politico = new Politico("Maria Oliveira", 45,
"PDB");
Prefeito prefeito = new Prefeito("Carlos Santos", 52,
"PSB", "São Paulo");
Governador governador = new Governador("Ana
Pereira", 58, "PDT", "Minas Gerais");

System.out.println("Pessoa: " + pessoa);


System.out.println("Político: " + politico);
System.out.println("Prefeito: " + prefeito);
System.out.println("Governador: " + governador);
}
}

32. Implemente a classe Funcionario com nome, salário e os


métodos:
• aumentarSalario : recebe o valor do aumento e o adiciona ao
salário;
• ganhoAnual : computa o valor recebido em 12 meses e o 13o
;
• e toString : retorna uma representação textual de um objeto
de Funcionario.
(i) Crie também a classe Assistente, que também é um
funcionário e que possui um
número de matrícula (e seus métodos de acesso), além de um
método toString.
(ii) Escreva as classes Tecnico e Administrativo
• Ambas as classes são filhas da classe Assistente
• Ambas as classes devem ter um método ganhoAnual
• Assistentes Técnicos possuem um bônus salarial
• Assistentes Administrativos possuem um turno (dia ou noite)
e um adicional no-
turno
(iii) Lembre-se que o 13o não possui adicional noturno, mas
pode possuir bônus salarial
(se aplicável).

public class Funcionario {


private String nome;
private double salario;

public Funcionario(String nome, double salario) {


this.nome = nome;
this.salario = salario;
}

public String getNome() {


return nome;
}

public void setNome(String nome) {


this.nome = nome;
}

public double getSalario() {


return salario;
}
public void setSalario(double salario) {
this.salario = salario;
}

public void aumentarSalario(double aumento) {


this.salario += aumento;
}

public double ganhoAnual() {


return this.salario * 13;
}

@Override
public String toString() {
return "Funcionario [nome=" + nome + ", salario=" +
salario + "]";
}
}

public class Assistente extends Funcionario {


private String matricula;

public Assistente(String nome, double salario, String


matricula) {
super(nome, salario);
this.matricula = matricula;
}

public String getMatricula() {


return matricula;
}

public void setMatricula(String matricula) {


this.matricula = matricula;
}

@Override
public String toString() {
return "Assistente [nome=" + getNome() + ", salario=" +
getSalario() + ", matricula=" + matricula + "]";
}
}

public class Tecnico extends Assistente {


private double bonus;

public Tecnico(String nome, double salario, String


matricula, double bonus) {
super(nome, salario, matricula);
this.bonus = bonus;
}

public double getBonus() {


return bonus;
}

public void setBonus(double bonus) {


this.bonus = bonus;
}

@Override
public double ganhoAnual() {
return (getSalario() * 12) + (getSalario() + bonus);
}

@Override
public String toString() {
return "Tecnico [nome=" + getNome() + ", salario=" +
getSalario() + ", matricula=" + getMatricula() + ", bonus=" +
bonus + "]";
}
}

public class Administrativo extends Assistente {


private String turno;
private double adicionalNoturno;

public Administrativo(String nome, double salario, String


matricula, String turno, double adicionalNoturno) {
super(nome, salario, matricula);
this.turno = turno;
this.adicionalNoturno = turno.equalsIgnoreCase("noite")
? adicionalNoturno : 0;
}

public String getTurno() {


return turno;
}

public void setTurno(String turno) {


this.turno = turno;
if (!turno.equalsIgnoreCase("noite")) {
this.adicionalNoturno = 0;
}
}

public double getAdicionalNoturno() {


return adicionalNoturno;
}

public void setAdicionalNoturno(double adicionalNoturno)


{
this.adicionalNoturno = turno.equalsIgnoreCase("noite")
? adicionalNoturno : 0;
}

@Override
public double ganhoAnual() {
double salarioComAdicional = getSalario() +
(turno.equalsIgnoreCase("noite") ? adicionalNoturno : 0);
return (salarioComAdicional * 12) + getSalario();
}

@Override
public String toString() {
return "Administrativo [nome=" + getNome() + ",
salario=" + getSalario() + ", matricula=" + getMatricula() +
", turno=" + turno + ", adicionalNoturno=" +
adicionalNoturno + "]";
}
}

public class Main {


public static void main(String[] args) {
Funcionario f = new Funcionario("João", 2000);
System.out.println(f);
System.out.println("Ganho anual: " + f.ganhoAnual());

Assistente a = new Assistente("Maria", 2200, "A001");


System.out.println(a);
System.out.println("Ganho anual: " + a.ganhoAnual());

Tecnico t = new Tecnico("Pedro", 2500, "T001", 500);


System.out.println(t);
System.out.println("Ganho anual: " + t.ganhoAnual());

Administrativo adm = new Administrativo("Ana", 2300,


"ADM001", "noite", 300);
System.out.println(adm);
System.out.println("Ganho anual: " +
adm.ganhoAnual());
}
}
33. [FGV - 2024 - INPE - Tecnologista Júnior I -
Desenvolvimento de Software para Opera-
ção de Satélites] (Adaptada) Uma linguagem de programação
Orientada a Objetos deve
prover suporte aos principais fundamentos do
desenvolvimento Orientação a Objetos.
Entretanto, cada linguagem apresenta as suas especificidades
e formas de implementar
esses fundamentos.
Sobre a Linguagem Java, analise as afirmativas a seguir.
I A palavra-chave this em Java é uma referência ao próprio
objeto da classe e pode
ser usada para acessar atributos e métodos da instância atual.
II Quando uma classe ClasseB estende ClasseA com extends,
significa que ClasseB
pode acessar membros privados e protegidos de ClasseA.
III A linguagem Java permite herança múltipla de classes.
(A) I, apenas.
(B) I e II, apenas.
(C) I e III, apenas.
(D) II e III, apenas.
(E) I, II e III.

34. [FAB - EEAR - 2023 - Sargento da Aeronáutica -


Informática] Herança é um dos conceitos
fundamentais da Programação Orientada a Objetos. Analise as
afirmativas abaixo sobre
esse importante pilar da POO.
I- As classes inferiores da hierarquia não herdam
automaticamente todas as propriedades
e os métodos das classes superiores.
II- A herança permite basear uma nova classe na definição de
uma classe previamente
existente.
III- A classe filha é conhecida como superclasse e a classe
progenitora como subclasse.
IV- A herança permite o agrupamento de classes relacionadas.
Está correto o que se afirma em
(A) I e II
(B) I e IV
(C) II e III
(D) II e IV

35. [CESGRANRIO - 2024 - Banco da Amazônia - Técnico


Científico - Tecnologia da Infor-
mação] No contexto de orientação a objeto, para as classes P,
Q, R, S, T, U, sendo Q
uma classe declarada como abstrata, considere a hierarquia de
classes a seguir:

• U e R herdam diretamente de S
• S e T herdam diretamente de Q
• P herda de T
Nesse contexto, é possível criar uma instância de
(A) P e associar a uma variável da classe S
(B) Q e associar a uma variável da classe Q
(C) Q e associar a uma variável da classe P
(D) S e associar a uma variável da classe U
(E) U e associar a uma variável da classe Q

36. [FGV - 2024 - CGM de Belo Horizonte - MG - Auditor


Interno - Ciência da Computação -
Manhã] Com relação à programação orientada a objetos
usando Java, avalie o código a
seguir.
public class Veiculo {
private String marca;
private String modelo;
public Veiculo(String marca, String modelo) {
this.marca = marca;
this.modelo = modelo;
}
public String getMarca() {
return marca;
}
public String getModelo() {
return modelo;
}
}
public class Mobi extends Veiculo {
private int portas;
public Mobi(String marca, String modelo, int portas) {
super(marca, modelo);
this.portas = portas;
}
public int getPortas() {
return portas;
}
}
Em relação ao código, analise as afirmativas a seguir e
assinale (V) para a verdadeira e
(F) para a falsa.
( ) A classe Mobi é um exemplo de herança, um dos
fundamentos da programação orien-
tada a objetos.
( ) A classe Veiculo não pode ser instanciada porque é uma
classe abstrata.
( ) O método getPortas() é um exemplo de encapsulamento,
outro fundamento da progra-
mação orientada a objetos.
As afirmativas são, respectivamente,
(A) V – V – F.
(B) V – F – V.
(C) F – V – V.
(D) F – F – V.

37. [ IV - UFG - 2024 - Prefeitura de Rio Branco - AC -


Analista de Sistemas - Especialização
em Desenvolvimento Front-End] Desenvolver aplicações
eficientes requer reutilizar e es-
tender o comportamento de classes existentes. No contexto da
programação orientada
a objetos, qual conceito permite que uma classe adquira as
propriedades e métodos de
outra classe?
(A) Encapsulamento.
(B) Abstração.
(C) Composição.
(D) Herança.

Você também pode gostar