Buscar

ListaExerccios1 (1)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

UNIVERSIDADE FEDERAL DE GOIÁS 
INSTITUTO DE INFORMÁTICA 
 
LISTA DE EXERCÍCIOS 1 
 
Disciplina: Programação Orientada a Objetos 
Prof.: Ricardo Augusto Pereira Franco 
 
 
*Observações: 
- Para todos os exercícios práticos, crie uma classe Main que contenha exemplos e 
que execute seu código (as demais classes). 
- Caso a classe Main não seja implementada/enviada, a resolução do respectivo 
exercício será desconsiderada (nota=0,00). 
- As questões dissertativas deverão ser realizadas de forma manuscrita e enviada 
(no formato de figura ou .pdf). 
- Compacte todos os exercícios e submeta apenas um arquivo compactado. 
 
 
Questões 
 
1. Elaborar um programa que efetue a apresentação do valor da conversão em real 
(R$) de um valor lido em dólar (US$). O algoritmo deverá solicitar o valor da 
cotação do dólar e, também, a quantidade de dólares disponíveis com o usuário. 
 
2. A Loja Mamão com Açúcar está vendendo seus produtos em 5 (cinco) 
prestações sem juros. Faça um programa que receba um valor de uma compra e 
mostre o valor das prestações. 
 
3. O custo ao consumidor de um carro novo é a soma do custo de fábrica com a 
percentagem do distribuidor e dos impostos (aplicados, primeiro os impostos 
sobre o custo de fábrica, e depois a percentagem do distribuidor sobre o 
resultado). Supondo que a percentagem do distribuidor seja de 28% e os 
impostos 45%. Implemente um programa que leia o custo de fábrica de um carro 
e informe o custo dele ao consumidor. 
 
4. Escrever um algoritmo que leia dois valores inteiro distintos e informe qual é o 
maior. Além disso, informe se esses dois valores inteiros estão no intervalo entre 
100 e 200. 
 
5. Criar um programa que retorne dois números aleatórios de 0 a 100 e informe 
qual desses números é o maior e o menor. 
 
6. Escrever um algoritmo para uma empresa que decide dar um reajuste a seus 
funcionários de acordo com os seguintes critérios: a) 50% para aqueles que 
 
 UNIVERSIDADE FEDERAL DE GOIÁS 
INSTITUTO DE INFORMÁTICA 
 
ganham menos do que três salários-mínimos; b) 20% para aqueles que ganham 
entre três até dez salários mínimos; c) 15% para aqueles que ganham acima de 
dez até vinte salários mínimos; d) 10% para os demais funcionários. Receba 
como entrada o nome do funcionário, seu salário e o valor do salário-mínimo. 
Em seguida, calcule o seu novo salário reajustado. Imprima na tela o nome do 
funcionário, o reajuste e seu novo salário. Forneça, também, quanto à empresa 
irá aumentar sua folha de pagamento. 
 
7. Defina, com suas palavras, os seguintes termos da Programação Orientada a 
Objetos: 
a) Abstração; 
b) Objeto; 
c) Mensagem; 
d) Classe; 
e) Parâmetro; 
f) Encapsulamento. 
 
8. Criar um programa que receba 10 valores inteiros e armazene-os em um vetor. 
Posteriormente o programa deve varrer o vetor e mostrar a soma, a média, o 
vetor em ordem inversa e gerar um novo vetor com o quadrado dos valores. 
 
9. Armazenar em um vetor uma quantidade de números informada pelo usuário 
inicialmente. Mostrar o vetor em ordem crescente e em ordem decrescente. 
Solicitar um novo valor do usuário e informar se existe ou não no vetor e em que 
posição. 
 
10. Criar uma classe Filme da seguinte forma: 
a) Um Filme tem código, nome, gênero, ano e autor principal, sendo todos 
privados; 
b) Cada atributo deve ter seus métodos de acesso públicos; 
c) O construtor deve inicializar apenas o código e o nome do filme; 
d) Os demais atributos devem ser atualizados usando os métodos sets 
necessários. 
e) Criar uma classe Principal que receba dados de filmes, através da classe 
Scanner, e crie vários filmes até que seja digitado o código 0, mostrando após a 
criação os dados do filme. 
 
11. Escreva em Java uma classe Ponto2D que represente um ponto no plano 
cartesiano. Além dos atributos por você identificados, a classe deve oferecer os 
seguintes membros: 
a) Construtores sobrecarregados que permitam a inicialização do ponto: 
i) Por default (sem parâmetros) na origem do espaço 2D; 
ii) Num local indicado por dois parâmetros do tipo double (indicando o 
valor de abcissa e ordenada do ponto que está sendo criado); 
iii) Em um local indicado por outro ponto. 
 
 UNIVERSIDADE FEDERAL DE GOIÁS 
INSTITUTO DE INFORMÁTICA 
 
b) Métodos de acesso (getter/setter) dos atributos do ponto; 
c) Métodos sobrecarregados de movimentação do ponto com os mesmos 
parâmetros indicados para os construtores; 
d) Método de comparação semântica do ponto (equals); 
e) Método de representação do objeto como String; 
f) Método que permita calcular a distância euclidiana do ponto que recebe a 
mensagem, para outro ponto; 
g) Método que permita a criação de um novo ponto no mesmo local do ponto 
que recebeu a mensagem (clone); 
 
12. Escreva uma classe que represente um país. Um país tem como atributos o seu 
nome, o nome da capital, sua dimensão em Km² e uma lista de países com os 
quais ele faz fronteira. Represente a classe e forneça os seguintes construtores e 
método: 
a) Construtor que inicialize o nome, capital e a dimensão do país; 
b) Métodos de acesso (obter/get) para as propriedades indicadas no item (a); 
c) Um método que permita verificar se dois países são iguais. Dois países são 
iguais se tiverem o mesmo nome e a mesma capital; 
d) Um método que define quais outros países fazem fronteira (note que um país 
não pode fazer fronteira com ele mesmo); 
e) Um método que retorne a lista de países que fazem fronteira; 
f) Um método que receba um outro país como parâmetro e retorne uma lista de 
vizinhos comuns aos dois países. 
 
13. Escreva uma classe cujos objetos representam alunos matriculados em uma 
disciplina. Cada objeto dessa classe deve guardar os seguintes dados do aluno: 
matrícula, nome, 2 notas de prova e 1 nota de trabalho. Escreva os seguintes 
métodos para esta classe: 
a) media: calcula a média final do aluno (cada prova tem peso 2,5 e o trabalho 
tem peso 2); 
b) final: calcula quanto o aluno precisa para a prova final (retorna zero se ele não 
for para a final). 
 
14. Escreva em Java uma classe que represente um círculo no plano cartesiano. 
Forneça os seguintes membros de classe: 
a) Um construtor que receba o raio e um ponto (o centro do círculo); 
b) Um construtor que receba o raio e posicione o círculo na origem do espaço 
cartesiano; 
c) Métodos de acesso ao atributo raio do círculo; 
d) Métodos inflar e desinflar, que, respectivamente, aumentam e diminuem o 
raio do círculo de um dado valor; 
e) Métodos sobrecarregados, inflar e desinflar, que, respectivamente, aumentam 
e diminuem o raio do círculo em uma unidade; 
h) Métodos sobrecarregados mover, que: 
 
 UNIVERSIDADE FEDERAL DE GOIÁS 
INSTITUTO DE INFORMÁTICA 
 
i) por default (sem parâmetros) levam o círculo para a origem do espaço 
2D; 
ii) movem o círculo para um local indicado por dois parâmetros do tipo 
double (indicando o valor da abcissa e da ordenada do ponto para onde o 
círculo se move); 
iii) movem o círculo para o local indicado por outro ponto. 
f) Método que retorna a área do círculo. 
 
15. Crie uma classe denominada Elevador para armazenar as informações de um 
elevador dentro de um prédio. A classe deve armazenar o andar atual (térreo = 
0), total de andares no prédio (desconsiderando o térreo), capacidade do 
elevador e quantas pessoas estão presentes nele. A classe deve também 
disponibilizar os seguintes métodos: 
• Inicializa: que deve receber como parâmetros a capacidade do elevador e 
o total de andares no prédio (os elevadores sempre começam no térreo e 
vazio); 
• Entra: para acrescentar uma pessoa no elevador (só deve acrescentar se 
ainda houverespaço); 
• Sai: para remover uma pessoa do elevador (só deve remover se houver 
alguém dentro dele); 
• Sobe: para subir um andar (não deve subir se já estiver no último andar); 
• Desce: para descer um andar (não deve descer se já estiver no térreo); 
Encapsular todos os atributos da classe (criar os métodos set e get). 
 
16. Crie uma classe Agenda que pode armazenar 10 pessoas e que seja capaz de 
realizar as seguintes operações: 
• void armazenaPessoa(String nome, int idade, float altura); 
• void removePessoa(String nome); 
• int buscaPessoa(String nome); //informa em que posição da agenda está a 
pessoa 
• void imprimeAgenda(); //imprime os dados de todas as pessoas da 
agenda 
• void imprimePessoa(int index); //imprime os dados da pessoa que está na 
posição “i” da agenda. 
 
17. Criar um programa que leia um cpf (9 primeiros dígitos) e o valide. Pesquise a 
fórmula para validação de CPF. 
- Cálculo do primeiro dígito: 
Separar os 9 dígitos e multiplicar cada um pelos números de 2 a 10 da direita 
para a esquerda (ex: 111444777 → 
1*10+1*9+1*8+4*7+4*6+4*5+7*4+7*3+7*2). A soma é dividida por 11. Se o 
resto da divisão for < 2, o dígito é 0, senão, o dígito será a subtração de 11 com o 
resto da divisão. 
 
 UNIVERSIDADE FEDERAL DE GOIÁS 
INSTITUTO DE INFORMÁTICA 
 
Ex: 111444777 → soma = 162/11 = 14 resto 8, logo o dígito será 11-8 = 3 → 
111444777.3X 
- Cálculo do segundo dígito: 
Acrescenta o primeiro dígito calculado e executa a mesma regra multiplicando 
de 2 a 11 da direita para a esquerda (ex: 1114447773 → 
1*11+1*10+1*9+4*8+4*7+4*6+7*5+7*4+7*3+3*2). A soma é dividida por 11. 
Se o resto da divisão for < 2, o dígito é 0, senão, o dígito será a subtração de 11 
com o resto da divisão. 
Ex: 111444777.3 → soma = 204/11 = 18 resto 6, logo o dígito será 11-6 = 5 → 
111444777.35 
 
18. Escreva uma classe Pessoa em Java que representa uma pessoa numa árvore 
genealógica. A pessoa possui um nome, um pai e uma mãe (que também são 
pessoas). Forneça os seguintes membros para a classe: 
a) Construtores sobrecarregados que: 
i) inicialize o nome da pessoa, bem como seus antecessores (pai e mãe); 
ii) inicialize o nome da pessoa, e coloque seus antecessores para null; 
b) Um método que verifique a igualdade semântica entre duas pessoas (as 
pessoas são iguais se possuem o mesmo nome e a mesma mãe); 
c) Um método que verifique se duas pessoas são irmãs; 
d) Um método que verifique se uma pessoa é antecessora da pessoa que recebeu 
a mensagem (é seu pai ou sua mãe, ou antecessor do pai ou antecessor da mãe). 
 
19. Precisa-se criar um cadastro dos moradores de um edifício para que possam ter 
acesso através de um código ou digital. Para isso, é preciso criar uma classe para 
representar os moradores do condomínio com informações importantes para o 
cadastro. Essas informações são: nome, cpf, celular, data de nascimento, sexo, 
bloco, apartamento e código de acesso. 
a. Criar também uma classe que será responsável pelo cadastro dos 
moradores. Essa classe deve permitir que o usuário entre com os dados 
de cada morador e, para cada morador, criar o objeto (instância) e 
mostrar os dados do objeto criado, ou seja, do morador cadastrado. 
b. Criar uma outra classe que também será uma classe de cadastro porém 
utilizando um meio de armazenamento em vetores. O usuário deve entrar 
com os dados do morador, o sistema cria a instância e armazena em um 
vetor de moradores até o término a entrada de dados. Após o término, o 
sistema varre o vetor e mostra os dados de todos os moradores 
cadastrados. 
c. Testar as classes criadas na classe main. 
Obs.: a entrada de dados do usuário deve ser através de um laço a cada 
cadastro deve ter uma pergunta se deseja ou não cadastrar mais um morador. 
 
20. Considere a seguinte situação: Um banco deseja controlar os dados de todos os 
tipos de pessoas que se relacionam com os seus sistemas, tanto funcionários 
 
 UNIVERSIDADE FEDERAL DE GOIÁS 
INSTITUTO DE INFORMÁTICA 
 
quanto clientes. Para isso, foram levantadas algumas informações sobre 
características de cada tipo de pessoa. 
a. Um caixa de banco é um funcionário e tem como características: nome, 
telefone, matricula, salário, horário; 
b. Um gerente é um funcionário e tem como características: nome, telefone, 
matrícula, salário, bonificação (fixa mensal) e um tipo (PF para gerente 
de pessoa física ou PJ para jurídica); 
c. Um cliente tem como características: nome, telefone, idade, cpf, status 
(“A” – ativo, “I” - inativo) 
d. Escreva as classes, com seus atributos, necessárias para representar o 
enunciado usando as boas práticas (atributos protegidos e métodos 
públicos). Obs.: não usar o conceito de herança. 
- Escreva os métodos das classes de acordo com os seguintes requisitos: 
Todos os funcionários do banco podem ter aumento de salário sendo que 
este é aplicado através da chamada de um método que recebe como 
parâmetro um percentual e atualiza o salário somando o salário atual com 
esse percentual; 
Todos os funcionários devem ter um método que retorna o total de 
recebimento anual do funcionário sendo que os gerentes recebem, além 
do salário, a bonificação mensal; 
Todo funcionário, ao ser criado, deve ter obrigatoriamente a matrícula e 
o nome; 
Para a criação de um cliente devem ser informados todos os dados e o 
status inicial de criação é sempre ativo (criação de construtor); 
Também é possível desativar um cliente invocando um método chamado 
desativar que verifica se o cliente está ativo e trocar o seu estado para 
inativo; 
O cliente deve ter um método para mostrar seus dados concatenados com 
a informação se ativo ou inativo; 
Ex: “Maria – Tel:2345-6697 – idade: 20 anos – cpf: 8889989898 - ativo” 
Todas as classes devem ter os métodos gets e sets necessários. 
- Escrever uma classe de Cadastro para instanciar tipos de pessoas 
diferentes: 
• criar um funcionário caixa; 
• configurar seu horário, telefone e salário; 
• aumentar o salário com um percentual de 20% do funcionário; 
• mostrar os dados do funcionário e o recebimento anual; 
• criar um funcionário gerente; 
• configurar telefone, salário, bonificação e tipo; 
• aumentar o salário em 10% do gerente; 
• mostrar os dados do funcionário e o recebimento anual; 
• criar 3 instâncias de cliente: cliente1, cliente2, cliente3; 
• desativar um dos clientes usando o método criado anteriormente; 
 
 UNIVERSIDADE FEDERAL DE GOIÁS 
INSTITUTO DE INFORMÁTICA 
 
• mostrar seus dados através do método criado para mostrar os dados do 
cliente.

Continue navegando