You are on page 1of 7

1

Exercícios de modelagem

1. Considere o seguinte cenário relativamente a um sistema de partidas de tênis:

“Num torneio de tênis, cada partida é jogada entre 2 jogadores. Pretende-se manter informação sobre o
nome e idade dos jogadores; data da partida e atribuição dos jogadores às partidas. O máximo de partidas
que um jogador poderá realizar é 6 e o mínimo 1”. Encontre as classes para esse sistema, juntamente com
atributos e métodos (não usar os métodos clássicos como: consultar, cadastrar, excluir, alterar e imprimir).

2. Monte o diagrama de classes para o cenário abaixo. Acrescente pelo menos 10 relacionamentos ao
diagrama. Dê nome às associações e mostre a multiplicidade. Mostre pelo menos 3 atributos e três
métodos para cada classe.

Uma academia de ginástica trabalha com as seguintes modalidades: musculação, natação, aeróbica e
hidroginástica. Os usuários da academia podem praticar uma ou mais modalidades. Para cada modalidade
o usuário tem direito a duas seções semanais de 50 minutos cada. As modalidades possuem horários pré-
definidos durante a semana, que podem ser escolhidos pelos usuários. Dentro de cada horário o limite
máximo de usuários é 10. Cada seção é acompanhada por um instrutor.

3. Crie um diagrama de classe para o cenário :

Modele um sistema de informação de apoio às farmácias, para ajudá-las na tarefa de debitar um


medicamento a um cliente. Como é sabido cada cliente da farmácia está utilizando um plano de saúde
diferente (ADSE, caixa de Previdência, sistema dos bancários, sistema dos militares e agentes as forças
de segurança pública, Unimed, etc.) que lhe proporciona diferentes taxas de redução no preço a pagar.
Essas taxas variam também de medicamento para medicamento (entre 0% e 100%). O que se pretende é
debitar ao cliente a parte que lhe cabe pagar e a entidade da qual é beneficiário a respectiva parcela.
Também a farmácia deve estar preparada para sugerir ao cliente medicamentos genéricos que ele poderá
levar em alternativa á prescrição médica.

4. Encontre as classes para o cenário abaixo. Cada classe deverá ter pelo menos um atributo que a
caracterize, não é necessário identificar métodos e nem descrever relacionamentos. Leve em consideração
apenas o que esta descrito no cenário.

Pacotes são enviados de uma localidade a outra. Pacotes têm um peso específico. Localidades são
caracterizadas pelas facilidades de transporte (por exemplo, ferroviárias, aeroportos e auto-estradas).
Algumas localidades são vizinhas, isto é, existe uma rota direta de transporte entre tais localidades. A rota
de transporte entre as localidades tem um certo comprimento (a distância entre as localidades). Trens,
aviões e caminhões são usados para o transporte de pacotes. Cada um destes meios de transporte pode
suportar uma carga máxima de peso. A cada momento, durante o seu transporte, é necessário saber a
posição (localidade) de cada pacote. Também é necessário manter o controle de que meio de transporte
está sendo utilizado em cada parte da rota para um certo pacote.

5. Encontre as classes para o cenário abaixo. Cada classe deverá ter pelo menos um atributo que a
caracterize, não é necessário identificar métodos e nem descrever relacionamentos. Leve em consideração
apenas o que esta descrito no cenário.

Deseja-se desenvolver um Sistema de Informação para maquinas ATM de uma Agência Bancária, visando
melhorar seu atendimento e automatizar o sistema de crédito e débito nas contas bancarias. Tal sistema
deverá contemplar o seguinte contexto: Cada cliente do banco já possui o seu nome e endereço registrado
no sistema. Os clientes possuem contas e as contas possuem um número de identificação que é único.
Aceitam-se contas conjuntas, sendo que um cliente pode possuir várias contas. Talões de cheque podem
ser emitidos. Contas sofrem movimentos que podem ser de crédito ou débito. Quando o cliente chega no
banco ele informa o numero e a sua senha. Depois de validados as informações, o saldo do cliente é
informado. O cliente pode checar apenas o seu saldo mas se ele quiser continuar a transação, é
requisitado a ele que informe qual a opção que ele deseja: credito, debito ou emissão de cheques. Este
banco não dá a opção do usuário escolher quantas folha de cheques, ele sempre emite 30 talões. Caso o
cliente indique credito ou debito, é requisitado que o cliente informe o valor. Caso seja debito o dinheiro é
entregue ao usuário caso seja crédito o usuário deposita o dinheiro.
2

Exercícios práticos: com uma classes simples

1. Crie uma classe Java que possua como atributos dois valores M e N. Implemente uma função para
multiplicar dois números utilizando somas sucessivas. Por exemplo:
3 x 5 = 5 + 5 + 5 = 15
4 x 10 = 10 + 10 + 10 + 10 = 40
Em um programa teste instancie um objeto e teste a classe.

2. Crie uma classe Java que possua como atributos dois valores S e N. Seja um valor string S e um valor
inteiro positivo N. Escreva um procedimento que exiba o string S por N vezes seguidas na tela. Em um
programa teste instancie um objeto e teste a classe.

3. Crie uma classe Java que possua como atributos dois valores M e N. Seja um valor do tipo real e a
potência. Escreva uma função chamada CUBO que calcula o valore real elevado a potencia informada. Em
um programa teste instancie um objeto e teste a classe.

4. Crie uma classe Java que possua como atributos dois valores X e Y. Escreva um procedimento chamado
TROCA que troque o conteúdo variáveis inteiras (X e Y) entre elas. Em um programa teste instancie um
objeto e teste a classe.

5. Crie uma classe Java que possua como atributo um valor N. Escreva um procedimento chamado SINAL
que recebe um valor N inteiro e escreva a palavra POSITIVO se N for um número maior que zero,
NEGATIVO se N for menor que zero, ou ZERO se N for igual a zero. Em um programa teste instancie um
objeto e teste a classe.

6. Crie uma classe chamada Música. A classe terá como atributos uma letra e uma melodia (i.e. uma
seqüência de notas: dó ré mi mi mi fa sol la si). Possui ainda o método tocar que irá imprimir na saída
padrão sua melodia e sua letra. Escreva um programa de teste para a classe.

7. Implemente um programa em Java composto de duas classes, a classe GERAL deverá ser a classe
principal do sistema conterá apenas o método main. A classe PESSOA deverá ter dois atributos chamados
PRIMEIRNOME e SEGUNDONOME que não poderão ser acessados externamente. Essa classe conterá
ainda um método público CONCATENAR. Esse método quando chamado irá concatenar o dois atributos e
devolverá o nome completo para quem o chamou. A classe GERAL deverá instanciar um objeto do tipo
PESSOA e depois e executar o seguinte algoritmo:

Informar o primeiro nome


Informar o segundo nome
Concatenar os valores
Mostrar o nome completo

8. Crie uma classe chamada Calculadora que conterá apenas um atributo chamado valor do tipo inteiro..
Essa classe conterá ainda dois métodos SUBTRAIR e SOMAR. O método SUBTRAIR quando chamado irá
diminuir 1 (um) do atributo VALOR, o método SOMAR irá somar 1 (um) ao atributo VALOR. Escreva um
programa de teste para a classe que deverá ser a classe principal do sistema conterá apenas o método
main. A classe GERAL deverá instanciar um objeto do tipo OPERACAO, atribuir zero ao atributo VALOR
desse objeto e depois e executar o seguinte algoritmo:

Repetir 5 vezes
Chamar o método somar
Chamar o método somar
Chamar o método subtrair
Fim repetir
Mostrar o valor final

9. Implemente um programa em Java composto de duas classes. A classe GERAL deverá ser a classe
principal do sistema conterá apenas o método main. A classe CALCULADORA deverá ter dois atributos
inteiros chamados VALOR1 e VALOR2. Essa classe conterá ainda quatro métodos SUBTRAIR, SOMAR,
MULTIPLICAR e DIVIDIR. O método MULTIPLICAR apenas multiplica os dois valores e retorna o
resultado. Já o método DIVIDIR irá dividir VALOR1 por VALOR2 e retornar a resposta, se VALOR2 for
igual de zero não divide e retorna 0. Os métodos SOMAR E SUBTRAIR somam e subtraem os atributos
respectivamente. A classe GERAL deverá conter uma instancia do objeto do tipo CALCULADORA. O
usuário informará os atributos valor 1 e valor2. Depois o programa mostrará os valores das quatro
operações.
3

10. Crie uma classe Java chamada PESSOA que teria como atributos o nome, a altura, idade e o peso
Escrever um método que determina se a pessoa é maior ou menor de idade. Crie um programa principal
de teste onde são criadas duas pessoas e apresente o nome da mais pesada e o nome da mais alta e se
elas são maior ou menor de idade.

11. Crie uma classe Vendedor contendo os seguintes atributos: nome, horasTrabalhadas e valorHora. Essa
classe contem também o método salário que e calcula o novo salário: horasTrabalhadas x valorHora.
Escreva um programa de teste (Principal) onde deverão ser instanciados três objetos da classe e testado
os métodos implementados.

12. Faça um programa em Java que implemente uma classe AUTOMÓVEL com os seguintes atributos: nome,
preço de fábrica e o preço final. Esta classe deverá conter também um método Calcular, este método será
responsável por calcular o preço final do automóvel e armazenar o resultado no atributo preço final. O
preço final é calculado pela soma do preço de fábrica com o preço dos impostos (45% do preço de fábrica)
e a percentagem do revendedor (28% do preço de fábrica). Crie o programa Principal que instanciará três
automóveis, pedirá os seus dados (modelo e preço de fabrica) calculará o preço final mostrando depois em
uma caixa de mensagem.

13. Em um banco para ter direito a cheque especial um cliente dever ter, em sua conta, saldo maior ou igual a
R$ 2500,00 ou ter esta conta a mais de 5 anos. Faça um algoritmo que leia o numero da conta, data de
abertura e o saldo e escreva se essa conta pode ou não ter cheque especial.

14. Crie uma classe FIGURA em Java com os atributos tipo, lado, base, altura. Essa classe deverá ter três
métodos:
1. CalcTriangulo;
2. CalcQuadrado;
3. CalcRetangulo;

Que calcularão respectivamente a área do triangulo, quadrado e retângulo.

Área do Triangulo: ((base*altura)/2)


Área do Quadrado: Lado * Lado
Área do Retangulo: Base * Altura

Implemente um programa principal de teste em Java que instancia três figuras, para cada uma informe um
tipo diferente, informe os dados pertinentes (conforme a fórmula) e calcule a área e escreva á área.
15. Um aluno de física costuma fazer muitos cálculos, cansado de ter que recorrer a calculadora sempre que
necessário, ele decidiu criar um programa para calcular todas as formulas que ele precisa, começando
com a esfera. Sabendo que o volume de uma esfera de raio R é calculado através da fórmula

. Faça um programa que leia um raio R e escreva o volume da esfera correspondente

16. Acrescente no programa anterior a possibilidade de verificar se a figura pode realmente ser um triangulo e
se for o seu tipo do triangulo. Para isso serão informados também três valores x, y, z, representando o
comprimento de seus lados. O programa deve verificar se eles podem ser os comprimentos dos lados de
um triângulo e se forem escrever uma mensagem informando se é um triângulo eqüilátero, isósceles ou
escaleno.

Observações:
O comprimento de um lado do triângulo é sempre menor do que a soma dos outros dois.
Eqüilátero todos lados iguais
Isósceles dois lados iguais
Escaleno todos os lados diferentes

17. O mesmo engenheiro do exercício anterior precisa de um programa que o ajude a calcular o custo da
pintura de um tanque cilíndrico de combustível. Para isso faça um programa onde serão informados a
4

altura (H) e o raio (R) desse tanque e será calculado a quantidade de latas de tintas e o custo necessários
para pintá-lo. Sabendo que:

• Área do cilindro =2Π R2 + 2Π RH

• Π = 3,14

• cada lata custa R$ 5,00

• cada lata contêm 5 litros

• cada litro de tinta pinta 3m2

18. A loja Hastes Ltda. Produz dois tipos de haste (cobre e alumínio). Cada haste de cobre é vendida por 2
reais e cada haste de alumínio por 4 reais. Caso o cliente leve menos de 20 hastes (total dos dois tipos) a
loja dá um desconto de 10% no valor total a ser pago, caso leve um valor superior a 20 hastes o desconto
é de 15% no valor total a ser pago. Faça um algoritmo que leia a quantidade de cada tipo de haste que ele
comprou e informe o total a pagar.

19. Escreva uma classe para Semáforo. Este classe será usada em um simulador do trânsito. A classe possui
um único atributo chamado status que poderá receber as strings “vermelho”, “verde” ou “amarelo”. O
método trocar deverá ser implementado com o seguinte código:
int valor;
valor = 1 + (int) (Math.random() * 3);

Esse código em Java faz gerar um número aleatório (randômico) entre 1 e 3.


Esse valor atualizará o atributo status para “vermelho”, “verde” ou “amarelo” conforme o que estiver dentro
da variável valor. Considerar “1”, “2” ou ”3” como “vermelho”, “verde” e “amarelo”, respectivamente.
Escreva um programa de teste para a classe que deverá instancia objeto do tipo SEMAFORO e chamar
cinco vezes o método trocar deste objeto sempre mostrando qual o status do semaforo.

20. Concerte o semáforo acima para que ele funcione não aleatoriamente, mas conforme os padrões de
trânsito normais, ou seja, verde, amarelo e vermelho. Isso quer dizer quando o método trocar for chamado
ele deve saber qual o status do semáforo e mudar para o status correto.
5

Exercícios práticos: encapsulamento

21. Crie uma classe Pessoa contendo os seguintes atributos: nome, número de contribuinte e idade. Respeite
a regra do encapsulamento. Escreva um programa de teste (Principal) onde deverão ser instanciados dois
objetos da classe e testado os métodos implementados.
22. Crie uma classe Aluno contendo os seguintes atributos: nome, n1 e n2. Respeite a regra do
encapsulamento. Essa classe contem também o método média que calcula a média aritmética das notas
desse aluno. Escreva um programa de teste (Principal) onde deverão ser instanciados dois objetos da
classe e testado os métodos implementados.

23. Implemente uma classe CALCULO que deverá ter apenas um atributo inteiro chamado SALDO que não
poderá ser acessado externamente e deverá ser inicializado com o valor 0. Essa classe conterá ainda três
métodos públicos CREDITO, DEBITO e GESALDO. O método CREDITO quando chamado irá somar o
valor recebido como parâmetro ao atributo SALDO, o método DEBITO irá subtrair o valor recebido como
parâmetro do atributo SALDO. Já o método GETSALDO irá apenas retornar o conteúdo do atributo SALDO
para a classe chamadora. A classe GERAL deverá conter duas instancias objeto do tipo CALCULO. O
usuário informará o valor que deverá ser creditado inicialmente em cada um dos objetos e depois informará
o valor que deverá ser debitado em cada uma dos dois objetos. Depois o programa mostrará o saldo final
de cada uma das contas.

24. Implementar uma classe ContaCorrente que possua os seguintes atributos: nomeCliente, numero, senha
e saldo. Possui ainda os métodos cadastrarSenha que recebe uma senha como parâmetro e altera o
atributo senha e o método alterarSenha que recebe como parâmetro a senha antiga e a nova senha. Ele
alterará o atributo senha apenas se a senha antiga for a correta. Os métodos debitar e creditar também
deverão ser implementados, eles receberão como parâmetro o valor a ser debitado ou creditado, o numero
da conta e a senha. Eles só deverão efetuar a operação caso a senha e conta forem corretas. Observar o
encapsulamento e escreva um programa de teste para a classe.

25. Faca uma classe Conta em Java que contenha o nome do cliente, o numero da conta, o saldo e o limite
como atributos. O método set do limite deve controlar o seu valor, sendo que o limite não poderá ser maior
que o valor do salário mensal do cliente. Esse salário será informado por parâmetro no método set,
juntamente com o limite. Faca um método deposito e um método retira. O método retira ira devolver 1 ou 0,
dependendo se o cliente pode retirar (existe saldo ou limite).
26. Considerando o programa acima o que voce faria para deixa-lo completamente orientado a objeto. Escreva
o código de uma solução.

27. Desenvolva uma classe de nome Retângulo cujas instâncias tem como atributos a base e a altura.
Suponha que esses valores são do tipo inteiro. Implemente esta classe em Java tendo em conta o
encapsulamento. Deverá ser criado um método para cada um dos problemas abaixo:
• Qual a área do retângulo? (Formula: base x altura)
• Qual o perímetro do retângulo? (Formula: 2 x base + 2 x altura)
• Este retângulo é quadrado? Responde SIM ou NÃO

Escolha o tipo de método apropriado: procedimento ou função. Escreva um programa de teste para a
classe Retângulo. Crie dois retângulos de dimensões 1x1 e 2x5, por exemplo, e teste nestes os vários
métodos de instância da classe.

28. As lojas Rio Verdece Utilidades precisa dar um aumento salarial a seus funcionário. Par isso precisa de um
programa que permita cadastrar o nome, sexo e o salário de seus funcionários e calcule o novo salário
com base na tabela abaixo:

Homens: receberão 10% de aumento


Mulheres: receberão 11% de aumento
O programa dever imprimir a relação do funcionário com os respectivos novos salários.

29. João Papo de Pescador comprou um computador para controlar os rendimentos de sua pescaria. Todo
pescador tem permissão de trazer no máximo 50 kilos de peixe por pescaria. Toda vez que ele traz um
peso de peixes maior que o estabelecido deve pagar uma multa de R$ 4,00 por quilo excedente. João
precisa que você faça um programa que leia a data da pescaria, o peso dos peixes pescados e verifique se
há excesso, se houver informar o valor da multa que João deverá pagar.
6

30. Uma rede de supermercados deseja automatizar o processo de calculo do preço de vendas de suas
mercadorias. Para isso ela precisa construir um programa onde irá cadastrar o código, descrição e preço
de compra das mercadorias. Quando for necessário eles irão informar a margem de lucro e o sistema
deverá informar o novo preço de venda.

31. Uma empresa decidiu dar um abono para seus funcionários baseado em dois critérios: número de horas
extras trabalhadas e número de horas de faltas. A entrada de dados é feita na seguinte ordem: nome do
funcionário, número de horas extras e número de horas de faltas. O abono é calculado sobre o número de
horas extras menos 2/3 do nº do número de horas de faltas. O programa deve fornecer como resultado o
nome do funcionário e o respectivo abono.

Caso:
Base de Calculo = Horas extras – 2/3 de horas faltas > 40 abono = 50
Base de Calculo = Horas extras – 2/3 de horas faltas > 30 abono = 40
Base de Calculo = Horas extras – 2/3 de horas faltas <= 30 abono = 30

32. João é um engenheiro que se preocupa muito com a preservação do meio ambiente. Em seus projetos
procura sempre aliar segurança, design e economia. Ele precisa de um programa que o auxilie a
determinar qual a quantidade mínima de lâmpadas necessárias em um determinado cômodo de uma
residência. Para se determinar o número de lâmpadas necessárias para cada cômodo, existem normas
que dão o mínimo de potência de iluminação exigida por metro quadrado, conforme a utilização deste
cômodo. Seja a seguinte tabela tomada como base:

UTILIZAÇÃO MINIMO DE PONTÊNCIA


Quarto 15W
Sala de TV 15W
Sala 18W
Cozinha 18W
Varanda 18W
Escritório 20W
Banheiro 20W

Supondo que só serão utilizadas lâmpadas de 60W, fazer um algoritmo que:

a) Leia qual o tipo de cômodo de uma residência e as duas dimensões deste cômodo

b) Calcule e escreva:

• O tipo do cômodo

• Área do cômodo

• Potência mínima de iluminação do cômodo (tabela)

• Número de lâmpadas de 60W necessárias para iluminar este cômodo

• se o número calculado de lâmpadas for fracionário, considerar as regras de arredondamento para calcular.
Ex : 8.3 = 8; 8.7 = 9

33. Desenvolva uma classe de nome CodigoPostal, cujas instâncias sejam capazes de guardar o código de
uma dada zona, para isso serão criados os atributos "indicativo", "extensão" e o nome da zona, para que
possam ser armazenados códigos como por exemplo: 9000-390 Funchal. Para além dos usuais métodos
get e set implemente também o método mostrar, cuja evocação, permita visualizar a informação relativa a
um determinado código postal no formato: CEP: 9000 - 390 Funchal.
7

Escreva um programa de teste para a classe CodigoPostal. Crie várias instâncias da classe e teste os
vários métodos implementados.

34. Crie uma classe de nome Contador que implemente um contador do tipo inteiro. Deverá ser possível criar
contadores com o valor inicial igual a zero ou a qualquer outro valor dado como parâmetro. Implemente
esta classe em Java tendo em conta o encapsulamento.As instâncias desta classe deverão satisfazer o
seguinte conjunto de requisitos:
• Dizer o valor atual de um dado contador
• Incrementar o contador em uma unidade
• Incrementar o contador de um valor dado como parâmetro
• Decrementar o contador em uma unidade
• Decrementar o contador de um valor dado como parâmetro

Escreva um programa de teste para a classe Contador.

35. Crie uma classe Data contendo os seguintes atributos: dia, mês e ano. A classe conterá também o método
mostraData que quando chamado irá retornar uma string com a data no seguinte formato:

DIA / MÊS / ANO

A classe conterá também o método calculaAno que irá apenas subtrair o valor do atributo ANO do ano
atual 2010 e retornar um inteiro para a classe chamadora. Escreva um programa de teste para a classe
Data.

36. Crie uma classe Circulo contendo o raio como atributo. A classe conterá também o método
calcularArea que quando chamado irá retornar a área do círculo. A classe conterá também o método
calculaCircunferencia que irá retornar a área do círculo para a classe chamadora. Escreva um programa de
teste para a classe Círculo. As fórmulas são:

Área = 3.1415 * ( raio * raio)


Circunferência = 3.1415 * (2 * raio)

37. Faça um programa para calcular a média de um aluno a partir de 3 notas. O Programa deverá ler a opção
escolhida pelo usuário e calcular a média.

1-aritmética
2-ponderada

Para as duas opções deverão ser lidas as notas e no caso de média ponderada os pesos de cada uma.

38. O cardápio de uma lanchonete é o seguinte:

Especificação Código Preço


Cachorro quente 100 1,20
Bauru simples 101 1,30
Bauru com ovo 102 1,50
Hambúrger 103 1,20
Cheeseburguer 104 1,30
Refrigerante 105 1,00

Escrever um programa que leia o código do item pedido, a quantidade e calcule o valor a ser pago por
aquele lanche. Considere que a cada execução somente será calculado um item. Contudo, clientes da
casa possuem um desconto de 10% sobre o preço final do lanche.

You might also like