Repositório para o trabalho final da disciplina Programação Orientada a Objetos
O trabalho final tinha a proposta desenvolver uma aplicação orientada a objetos em Java. A Aplicação escolhida pelo grupo foi realizar um banco digital, dentro dos limites digitais do banco, sem poder uma verificação concreta de depósitos ou usuários com identificação inválidas.
Utilizamos a JDK 18 para a realização desse trabalho. Deve ser utilizada essa versão.
git clone https://github.com/Asunnya/bic-poo
cd exec/jar
java -jar bic-poo.jar
Caso você tenha problema ao rodar o .jar, listamos alguns erros conhecidos
Error: LinkageError occurred while loading main class Main
java.lang.UnsupportedClassVersionError: Main has been compiled by a more recent version of the Java Runtime (class file version 62.0), this version of the Java Runtime only recognizes class file versions up to 61.0
Caso você tenha o problema acima, utilize essas versões para rodar o -jar.
openjdk 18 2022-03-22
OpenJDK Runtime Environment (build 18+36-2087)
OpenJDK 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)
- Tipos de Clientes diferentes, sendo, cliente pessoa e cliente empresa.
- Tipos de Contas diferentes dependendo da renda informada pelo cliente
- Tipos de Cartões com limites diferentes, dependendo com da renda informada pelo cliente
- Cada tipo de conta tem seu rendimento, tanto no saldo, tanto no dinheiro guardado, aumentando dependendo do tipo de conta.
- A possibilidade de criação de outros cartões virtuais, atrelados ao um mesmo limite e uma mesma fatura.
- Agendamento de suas transações para um dia específico e pagamento por debito automático para não esquecer de pagar sua fatura e ter juros!
- Caso for uma empresa, se mais de um gerente deseja acessar nosso banco, você pode simplesmente adicionar a identificação do usuário e o mesmo utiliza a senha da empresa.
- Com a conta no bic, você rende seu saldo e caso tenha dinheiro guardado, rende muito mais!
Recomendamos a utilização da IDE InteliJJ para o projeto. Apenas porque foi essa utilizada pelos autores do projeto.
- Utilizamos regex em algumas verificações, mas não utilizamos nenhuma API para verificar realmente se aquele cpf é válido, lembrando, é uma aplicação focada no entendimento de orientação a objetos em java.
- Utilizamos threads que atualizam o banco todos os dias, para assim, realizar os agendamentos de transações, os debitos automáticos de todas as contas.
- Em relação a transferir e depositar, não usamos tantos sistemas para impedir de burlar diversas transferência, há um limite no depósitos que estipulamos para o usuário não depositar mais do que um valor estipulado com base na renda, enquanto o banco estiver aberto, isto é, o programa ativo localmente, ele não poderá burlar. Porém, abrindo a aplicação esse valor é atualizado e o mesmo pode continuar com seus depósitos.
- A verificação de data consiste no horário e data local do computador que está rodando o programa. Caso haja a troca da data, a thread atualiza.
- Nessa disciplina, é opcional o uso de Java Swing e seu aprendizado é por fora da matéria, optamos utilizar o terminal pela falta de tempo para o aprendizado do Swing.
- Há claro, verificações caso o usuário coloque um valor inválido. São verificações simples com regex e tentando generalizar o que deve ser correto. Por favor, siga os formatos corretos de entrada que não terá problemas.
- Nessa disciplina, não há ligação entre Java e banco de dados, por isso, utilizamos arquivos.
- Estamos cientes que existem coisas que no mundo real seria um absurdo em um banco, por exemplo, só receber o valor depositado, porém não temos como verificar se houve realmente um dinheiro, isso é apenas um trabalho de uma disciplina, foque em como resolvemos um banco digital com suas limitações
- Estamos também cientes de que, no mundo real, a fatura aumenta com a utilização do cartão, porém, não temos como também verificar se foi utilizado algum cartão porque não é esse o objetivo da aplicação, por isso, existe a opção de aumentar fatura, novamente, foque em como resolvemos um banco digital com suas limitações.