Implemente um projeto JAVA de uma Loja virtual ACME que vende downloads de músicas, videos e imagens.
Classes de modelo Produto [String nome, Path file, BigDecimal Preco] Cliente [String Nome] Assinatura [BigDecimal mensalidade, begin, end (Optional) Cliente] Obs: Crie 2 construtores, um com o "end" e outro sem.
Quando um usuário realiza uma nova compra um "Pagamento" é utilizado para representá-la.
Pagamento [List, dataCompra, Cliente]
1 - Crie uma Classe com um método main para criar alguns produtos, clientes e pagamentos. Crie Pagamentos com: a data de hoje, ontem e um do mês passado.
2 - Ordene e imprima os pagamentos pela data de compra.
3 - Calcule e Imprima a soma dos valores de um pagamento com optional e recebendo um Double diretamente.
4 - Calcule o Valor de todos os pagamentos da Lista de pagamentos.
5 - Imprima a quantidade de cada Produto vendido.
6 - Crie um Mapa de <Cliente, List , onde Cliente pode ser o nome do cliente.
7 - Qual cliente gastou mais?
8 - Quanto foi faturado em um determinado mês?
9 - Crie 3 assinaturas com assinaturas de 99.98 reais, sendo 2 deles com assinaturas encerradas.
10 - Imprima o tempo em meses de alguma assinatura ainda ativa.
11 - Imprima o tempo de meses entre o start e end de todas assinaturas. Não utilize IFs para assinaturas sem end Time.
12 - Calcule o valor pago em cada assinatura até o momento.
13 - Após finalizar faça o Pull do seu projeto para o GITHub colocando o nome do Grupo no Arquivo README
Seguindo os padrões de Cleancode e solid:
- Refatore o seu código para deixá-lo orientado a objetos.
- Crie 3 tipos de assinatura, anual, semestral e trimestral.
- Crie um método para calcular uma taxa para cada assinatura. Obs. Imagine que esse método rodará todo último dia do mes.
- Anual -> Isento da taxa.
- Semestral -> 3% do valor total da assinatura até o presente momento.
- Trimestral -> 5% do valor total da assinatura até o presente momento.
- Crie um atributo para controlar assinaturas com atraso de pagamento.
- Crie um mecanismo para validar clientes que tentarem fazer compras com assinatura em atraso e não deixá-los comprar.
- Rode o seu código no SonarQube.
- Se possuir problemas corrija-os... Se não, parabéns.
- Coloque os prints do SonarQube dentro de uma pasta chamada sonar na raiz do seu projeto.
Versione seu novo código em outro repositório ou
uma branch diferente da tarefa anterior.
- Identificar os Bad Smells e aplicar os princípios de Clean Code enquanto refatorar o código existente.
- (Fazer junto com a Lista 2 da primeira entrega)
- Implementar de forma simples 2 Patterns criacionais, 1 Pattern estrutural e 1 Pattern comportamental.
- Assim que terminar, salve o seu arquivo PDF e poste no Moodle.
- Utilize o seu nome para nomear o arquivo, identificando também a disciplina no seguinte formato:
nomedoaluno_nomedadisciplina_pd.PDF
.
- Bruno Apostólico Silva
- Ivana Batista Marinho
- Luiz Fernando de Oliveira Braz Silva
- Matheus William dos Santos Loose
- Niky Palleta Moura Lima
- Patrick Neri de Oliveira