Bom dia pessoal.
uma nova duvida, não consigo fazer funcionar esse método que calcula o preço final de compra com descontos etc…
tentei de algumas formar e não compilou, alem de ter ficado feio!
vou postar o enunciado completo para ficar fácil a compreensão e depois oque tenho ate o momento.
OBS: Não estou em busca de resposta, quero aprender com quem estiver disposto a explicar.
abç.
Classe Compra
Atributos privados
-
modalidade – atributo do tipo inteiro que indica uma das seguintes modalidades de compra:
1 – à vista
2 – parcelada, com 50% de entrada e o restante em duas parcelas iguais
3 – parcelada em três parcelas iguais, sem nenhuma entrada. -
cliente – objeto do tipo Cliente que indica quem faz a compra
-
data – objeto do tipo Data que indica a data em que a compra é realizada
-
precoOriginal – valor original do preço da compra, sem qualquer abatimento
-
precoFinal – é o preço final, já abatido algum desconto promocional
-
p1, p2, p3 – três atributos do tipo Parcela, que correspondem, respectivamente, à primeira, segunda e
terceira parcela, se houver.
Construtor 1: com três parâmetros: cliente que faz a compra (tipo Cliente), data da
compra (tipo Data) e preço. Atualiza os atributos e chama o método escolherModalidade
para registrar a modalidade.
Construtor 2: faz o mesmo que o construtor 1, com a diferença com respeito à data da
compra. Em lugar de um parâmetro de tipo objeto, receberá três parâmetros inteiros, com
dia, mês e ano em que a compra está sendo feita. Com esses três dados, o construtor
deve instanciar um objeto Data para atribuir ao respectivo atributo.
Métodos:
- escolherModalidade – Exibe na tela do usuário as três modalidades para que o cliente escolha uma delas,
o que é feito por ele digitando um inteiro no teclado. Lembrando que, as modalidades podem ser 1, 2 ou 3.
Se o usuário digitar um valor diferente, assumir o valor 1. Atualizar o atributo modalidade.
- ultimasCrescente – método privado que recebe via parâmetro o valor da última compra e retorna true ou
false indicando se as três últimas compras estão em ordem crescente ou não.
+finalizarCompra - Irá calcular o preço final da compra, conforme as regras da empresa para as várias modalidades, irá instanciar as devidas parcelas, no caso de compra parcelada, e atualizar vários atributos.
Regras para o cálculo de descontos:
Modalidade 1 – à vista - aplica uma das três situações abaixo (apenas uma delas):
-desconto de 20% sobre o preço, se o mês da compra coincide com o mês de aniversário do cliente;
-8% de desconto, se as três últimas compras, incluindo esta que está sendo feita, formam uma
sequência crescente; esta verificação deve ser feita chamando o método ultimasCrescente;
5% de desconto, se for apenas compra à vista.
Modalidade 2 – parcelada, com 50% de entrada e duas parcelas iguais. Recebe desconto de 3,5% sobre o
preço.
Modalidade 3 – parcelada em 3 vezes iguais. Não ganha desconto.
O método deve instanciar as parcelas, se houver, e atualizar os atributos preço final, p1, p2 e p3, desta classe.
Para calcular a data de vencimento de cada parcela, chamar o método calcularVencimentoParcela. Também
deve, conforme a situação, atualizar atributos da classe Cliente, chamando os métodos adequados. Ao final,
o método deve retornar um string contendo um dos seguintes textos, conforme o caso:
Compra à vista, ganhou 20% de desconto, pois cliente nasceu em xx/xx/xxxx.
Compra à vista, ganhou 8% de desconto.
Compra à vista, ganhou só 5% de desconto.
Compra com entrada + 2 parcelas, ganhou desconto de 3,5%.
Compra em 3 parcelas, não ganhou desconto.
-
calcularVencimentoParcela – a regra para determinar a data de vencimento de cada parcela é a seguinte:
o vencimento da primeira parcela é sempre no dia 28 do mês imediatamente seguinte ao mês da compra;
cada parcela subsequente vai vencer no dia 28 do mês seguinte ao da parcela anterior. Por exemplo, se uma
compra parcelada em 3 vezes é feita no dia 12/11/2016, as três parcelas vão vencer, respectivamente, em
28/12/2016, 28/1/2017 e 28/2/2017.
Este método recebe uma data (objeto) e instancia e retorna um objeto Data que corresponde ao dia 28 do
mês imediatamente seguinte. -
exibirDados - imprime os valores dos atributos, com títulos e organização agradáveis à leitura. Chamar
métodos de saída de outras classes, quando for o caso. Exibir detalhes das parcelas, apenas para as que
realmente existem. Por exemplo, se a compra é à vista, não deve aparecer nada sobre parcelas.