Você está na página 1de 6

Objetos e Classes: Desafios de Programação

1. Classe Funcionário

Escreva uma classe chamada Funcionário que tenha os seguintes campos:


• nome. O campo nome referencia um objeto String que armazena o nome do funcionário.
• idNumber. O idNumber é uma variável int que armazena o número de identificação do funcionário.
• departamento. O campo departamento referencia um objeto String que armazena o nome do
departamento onde o funcionário trabalha.
• cargo. O campo cargo referencia um objeto String que armazena o cargo do funcionário.
A classe deve ter os seguintes construtores:
• Um construtor que aceita os seguintes valores como argumentos e os atribui aos campos apropriados:
nome do funcionário, número de identificação do funcionário, departamento e cargo.
• Um construtor que aceita os seguintes valores como argumentos e os atribui aos campos apropriados:
nome do funcionário e número de identificação. Os campos de departamento e cargo devem ser
atribuídos a uma string vazia ("").
• Um construtor sem argumentos que atribui strings vazias ("") aos campos de nome, departamento e
cargo, e 0 ao campo idNumber.
Escreva métodos mutadores apropriados que armazenem valores nesses campos e métodos acessores
que retornem os valores desses campos. Depois de escrever a classe, escreva um programa separado que
crie três objetos Funcionário para armazenar os seguintes dados:

Nome Número de ID Departamento Cargo


______________________________________________________________________________
Susan Meyers 47899 Contabilidade Vice-Presidente
Mark Jones 39119 TI Programador
Joy Rogers 81774 Manufatura Engenheiro

O programa deve armazenar esses dados nos três objetos e, em seguida, exibir os dados de cada
funcionário na tela.

2. Classe Carro

Escreva uma classe chamada Carro que tenha os seguintes campos:


• yearModel. O campo yearModel é um int que armazena o ano do modelo do carro.
• make. O campo make referencia um objeto String que armazena a marca do carro.
• speed. O campo speed é um int que armazena a velocidade atual do carro.
Além disso, a classe deve ter o seguinte construtor e outros métodos.
• Construtor. O construtor deve aceitar o ano do modelo e a marca do carro como argumentos. Esses
valores devem ser atribuídos aos campos yearModel e make do objeto. O construtor também deve atribuir
0 ao campo speed.
• Acessores. Métodos acessores apropriados devem retornar os valores armazenados nos campos
yearModel, make e speed de um objeto.
• acelerar. O método acelerar deve adicionar 5 ao campo speed cada vez que for chamado.
• frear. O método frear deve subtrair 5 do campo speed cada vez que for chamado.
Demonstre a classe em um programa que cria um objeto Carro e depois chama o método acelerar cinco
vezes. Após cada chamada ao método acelerar, obtenha a velocidade atual do carro e exiba-a. Em seguida,
chame o método frear cinco vezes. Após cada chamada ao método frear, obtenha a velocidade atual do
carro e exiba-a.

3. Classe Informações Pessoais

Projete uma classe que armazene os seguintes dados pessoais: nome, endereço, idade e número de
telefone. Escreva métodos acessores e mutadores apropriados. Demonstre a classe escrevendo um
programa que cria três instâncias dela. Uma instância deve conter suas informações e as outras duas
devem conter informações de seus amigos ou familiares.

4. Classe Item de Varejo

Escreva uma classe chamada ItemVarejo que armazene dados sobre um item em uma loja de varejo. A
classe deve ter os seguintes campos:
• descrição. O campo descrição referencia um objeto String que contém uma breve descrição do item.
• unidadesEmEstoque. O campo unidadesEmEstoque é uma variável int que armazena o número de
unidades atualmente em estoque.
• preço. O campo preço é um double que armazena o preço de varejo do item.
Escreva um construtor que aceite argumentos para cada campo, métodos mutadores apropriados que
armazenem valores nesses campos e métodos acessores que retornem os valores desses campos. Depois
de escrever a classe, escreva um programa separado que crie três objetos ItemVarejo e armazene os
seguintes dados neles:

Descrição Unidades em Estoque Preço


_________________________________________________________________
Item #1 Jaqueta 12 59,95
Item #2 Jeans de Grife 40 34,95
Item #3 Camisa 20 24,95

5. Classe Folha de Pagamento

Projete uma classe FolhaPagamento que tenha campos para o nome do funcionário, número de
identificação do funcionário, taxa de pagamento por hora e número de horas trabalhadas. Escreva os
métodos acessores e mutadores apropriados e um construtor que aceite o nome do funcionário e o
número de identificação como argumentos. A classe também deve ter um método que retorne o salário
bruto do funcionário, calculado multiplicando o número de horas trabalhadas pela taxa de pagamento por
hora. Escreva um programa que demonstre a classe, criando um objeto FolhaPagamento e, em seguida,
solicitando ao usuário que insira os dados de um funcionário. O programa deve exibir a quantia de salário
bruto recebida.

6. Classe Notas de Teste

Projete uma classe NotasTeste que tenha campos para armazenar três notas de teste. A classe deve ter
um construtor, métodos acessores e mutadores para os campos de notas de teste e um método que
retorne a média das notas de teste. Demonstre a classe escrevendo um programa separado que cria uma
instância da classe. O programa deve solicitar ao usuário que insira três notas de teste, que são
armazenadas no objeto NotasTeste. Em seguida, o programa deve exibir a média das notas, conforme
informado pelo objeto NotasTeste.
7. Classe Círculo

Escreva uma classe Círculo que tenha os seguintes campos:


• raio: um double
• PI: um double final inicializado com o valor 3.14159
A classe deve ter os seguintes métodos:
• Construtor. Aceita o raio do círculo como argumento.
• Construtor sem argumentos. Um construtor sem argumentos que define o campo raio como 0.0.
• setRaio. Um método mutador para o campo raio.
• getRaio. Um método acessor para o campo raio.
• getArea. Retorna a área do círculo, que é calculada como área = PI * raio * raio.
• getDiâmetro. Retorna o diâmetro do círculo, que é calculado como diâmetro = raio * 2.
• getCircunferência. Retorna a circunferência do círculo, que é calculada como circunferência = 2 * PI *
raio.
Escreva um programa que demonstre a classe Círculo, solicitando ao usuário o raio do círculo, criando um
objeto Círculo e, em seguida, exibindo a área, o diâmetro e a circunferência do círculo.

8. Classe Temperatura

Escreva uma classe Temperatura que armazene uma temperatura em Fahrenheit e forneça métodos para
obter a temperatura em Fahrenheit, Celsius e Kelvin. A classe deve ter o seguinte campo:
• ftemp - Um double que armazena uma temperatura em Fahrenheit.
A classe deve ter os seguintes métodos:
• Construtor - O construtor aceita uma temperatura em Fahrenheit (como um double) e a armazena no
campo ftemp.
• setFahrenheit - O método setFahrenheit aceita uma temperatura em Fahrenheit (como um double) e a
armazena no campo ftemp.
• getFahrenheit - Retorna o valor do campo ftemp, como uma temperatura em Fahrenheit (sem conversão
necessária).
• getCelsius - Retorna o valor do campo ftemp convertido para Celsius.
• getKelvin - Retorna o valor do campo ftemp convertido para Kelvin.
Use a seguinte fórmula para converter a temperatura em Fahrenheit para Celsius:
Celsius = (5/9) * (Fahrenheit - 32)
Use a seguinte fórmula para converter a temperatura em Fahrenheit para Kelvin:
Kelvin = ((5/9) * (Fahrenheit - 32)) + 273
Demonstre a classe Temperatura escrevendo um programa separado que solicita ao usuário uma
temperatura em Fahrenheit. O programa deve criar uma instância da classe Temperatura, com o valor
inserido pelo usuário passado para o construtor. Em seguida, o programa deve chamar os métodos do
objeto para exibir a temperatura em Celsius e Kelvin.

9. Dias em um Mês

Escreva uma classe chamada DiasMes. O construtor da classe deve aceitar dois argumentos:
• Um inteiro para o mês (1 para janeiro, 2 para fevereiro, etc.).
• Um inteiro para o ano.
A classe deve ter um método chamado getNumeroDias que retorna o número de dias no mês especificado.
O método deve usar os seguintes critérios para identificar anos bissextos:
Verifique se o ano é divisível por 100. Se for, é um ano bissexto somente se for divisível por 400. Por
exemplo, 2000 é um ano bissexto, mas 2100 não é.

Se o ano não for divisível por 100, é um ano bissexto somente se for divisível por 4. Por exemplo, 2008 é
um ano bissexto, mas 2009 não é.

Demonstre a classe em um programa que solicita ao usuário que insira o mês (permitindo que o usuário
insira um inteiro no intervalo de 1 a 12) e o ano. O programa deve exibir o número de dias nesse mês. Aqui
está um exemplo de execução do programa:
Digite um mês (1-12): 2 [Enter]
Digite um ano: 2008 [Enter]
29 dias

10. Um Jogo de Vinte e Um

Neste desafio, você escreverá um programa que permite ao usuário jogar contra o computador em uma
variação do popular jogo de cartas blackjack. Nessa variação do jogo, dois dados de seis faces são usados
em vez de cartas. Os dados são rolados, e o jogador tenta vencer o total oculto do computador sem
ultrapassar 21.
Aqui estão algumas sugestões para o design do jogo:
• Cada rodada do jogo é realizada como uma iteração de um loop que se repete enquanto o jogador
concorda em rolar os dados e o total do jogador não excede 21.
• No início de cada rodada, o programa perguntará ao usuário se ele deseja ou não rolar os dados para
acumular pontos.
• Durante cada rodada, o programa simula o lançamento de dois dados de seis faces. Ele rola os dados
primeiro para o computador e, em seguida, pergunta ao usuário se ele deseja rolar.
(Use a classe Die fornecida para simular os dados.)
• O loop mantém um total em andamento dos pontos do computador e do jogador.
• O total do computador deve permanecer oculto até que o loop tenha terminado.
• Depois que o loop terminar, o total do computador é revelado, e o jogador com a maior pontuação, sem
ultrapassar 21, vence.

11. Pontos de Congelamento e Ebulição

A tabela a seguir lista os pontos de congelamento e ebulição de várias substâncias.

Substância Ponto de Congelamento Ponto de Ebulição


__________________________________________________________________________
Álcool Etílico –173 172
Oxigênio –362 –306
Água 32 212

Projete uma classe que armazene uma temperatura em um campo de temperatura e tenha os métodos
acessores e mutadores apropriados para o campo. Além dos construtores apropriados, a classe deve ter
os seguintes métodos:
• isCongelamentoAlcool. Este método deve retornar o valor booleano true se a temperatura armazenada
no campo de temperatura estiver igual ou abaixo do ponto de congelamento do álcool etílico.
Caso contrário, o método deve retornar false.
• isEbulicaoAlcool. Este método deve retornar o valor booleano true se a temperatura armazenada no
campo de temperatura estiver igual ou acima do ponto de ebulição do álcool etílico.
Caso contrário, o método deve retornar false.
• isCongelamentoOxigenio. Este método deve retornar o valor booleano true se a temperatura
armazenada no campo de temperatura estiver igual ou abaixo do ponto de congelamento do oxigênio.
Caso contrário, o método deve retornar false.
• isEbulicaoOxigenio. Este método deve retornar o valor booleano true se a temperatura armazenada no
campo de temperatura estiver igual ou acima do ponto de ebulição do oxigênio.
Caso contrário, o método deve retornar false.
• isCongelamentoAgua. Este método deve retornar o valor booleano true se a temperatura armrmazenada
no campo de temperatura estiver igual ou abaixo do ponto de congelamento da água.
Caso contrário, o método deve retornar false.
• isEbulicaoAgua. Este método deve retornar o valor booleano true se a temperatura armazenada no
campo de temperatura estiver igual ou acima do ponto de ebulição da água.
Caso contrário, o método deve retornar false.

Escreva um programa que demonstre a classe. O programa deve solicitar ao usuário que insira uma
temperatura e, em seguida, exibir uma lista das substâncias que irão congelar a essa temperatura e
aquelas que irão entrar em ebulição a essa temperatura. Por exemplo, se a temperatura for -20, a classe
deve informar que a água irá congelar e o oxigênio entrará em ebulição a essa temperatura.

12. Classe Conta Poupança

Projete uma classe ContaPoupanca que armazene a taxa de juros anual e o saldo de uma conta poupança.
O construtor da classe deve aceitar o valor do saldo inicial da conta. A classe também deve ter métodos
para subtrair o valor de um saque, adicionar o valor de um depósito e adicionar o valor do juros mensal
ao saldo. A taxa de juros mensal é a taxa de juros anual dividida por doze. Para adicionar os juros mensais
ao saldo, multiplique a taxa de juros mensal pelo saldo e adicione o resultado ao saldo.
Teste a classe em um programa que calcula o saldo de uma conta poupança ao final de um período de
tempo. Ele deve solicitar ao usuário a taxa de juros anual, o saldo inicial e o número de meses que se
passaram desde a abertura da conta. Um loop deve então iterar uma vez para cada mês, realizando o
seguinte:
a. Pergunte ao usuário o valor depositado na conta durante o mês. Use o método da classe para adicionar
esse valor ao saldo da conta.
b. Pergunte ao usuário o valor sacado da conta durante o mês. Use o método da classe para subtrair esse
valor do saldo da conta.
c. Use o método da classe para calcular os juros mensais. Após a última iteração, o programa deve exibir
o saldo final, o total de depósitos, o total de saques e o total de juros ganhos.

13. Arquivos de Depósitos e Saques

Use o Bloco de Notas ou outro editor de texto para criar um arquivo de texto chamado Depositos.txt. O
arquivo deve conter os seguintes números, um por linha:
100,00
124,00
78,92
37,55
Em seguida, crie um arquivo de texto chamado Saques.txt. O arquivo deve conter os seguintes números,
um por linha:
29,88
110,00
27,52
50,00
12,90

Os números no arquivo Depositos.txt são os valores dos depósitos feitos em uma conta poupança durante
o mês, e os números no arquivo Saques.txt são os valores dos saques feitos durante o mês. Escreva um
programa que crie uma instância da classe ContaPoupanca que você escreveu no Desafio de Programação
12. O saldo inicial para o objeto é de 500,00. O programa deve ler os valores do arquivo Depositos.txt e
usar o método do objeto para adicioná-los ao saldo da conta. O programa deve ler os valores do arquivo
Saques.txt e usar o método do objeto para subtraí-los do saldo da conta. O programa deve chamar o
método da classe para calcular os juros mensais e, em seguida, exibir o saldo final e o total de juros ganhos.

14. Jogo de Dados

Escreva um programa que use a classe Dado que foi apresentada neste capítulo para jogar um jogo de
dados simples entre o computador e o usuário. O programa deve criar duas instâncias da classe Dado
(cada uma com um dado de 6 faces). Um objeto Dado é o dado do computador e o outro objeto Dado é o
dado do usuário.
O programa deve ter um loop que itera 10 vezes. Cada vez que o loop itera, ele deve rolar ambos os dados.
O dado com o maior valor vence. (Em caso de empate, não há vencedor para aquela jogada específica dos
dados.)
À medida que o loop itera, o programa deve contar o número de vezes que o computador vence e o
número de vezes que o usuário vence. Depois que o loop terminar, o programa deve exibir quem foi o
grande vencedor, o computador ou o usuário.

15. Cores da Roleta

Em uma roleta, os bolsos são numerados de 0 a 36. As cores dos bolsos são as seguintes:
• Bolso 0 é verde.
• Para os bolsos de 1 a 10, os bolsos com número ímpar são vermelhos e os bolsos com número par são
pretos.
• Para os bolsos de 11 a 18, os bolsos com número ímpar são pretos e os bolsos com número par são
vermelhos.
• Para os bolsos de 19 a 28, os bolsos com número ímpar são vermelhos e os bolsos com número par são
pretos.
• Para os bolsos de 29 a 36, os bolsos com número ímpar são pretos e os bolsos com número par são
vermelhos.

Escreva uma classe chamada BolsoRoleta. O construtor da classe deve aceitar um número de bolso. A
classe deve ter um método chamado getCorBolso que retorna a cor do bolso, como uma string.

Demonstre a classe em um programa que peça ao usuário para inserir um número de bolso e exiba se o
bolso é verde, vermelho ou preto. O programa deve exibir uma mensagem de erro se o usuário inserir um
número fora do intervalo de 0 a 36.

Você também pode gostar