/ElasTech_projeto

Projeto de Back-End em Java de um Banco fictício, desenvolvido no programa ElasTech da PagBank/PagSeguro em parceria com a Gama Academy.

Primary LanguageJava

#Projeto ElasTech

ElasTech Projeto - SoulBank

Grupo CodingDreams - Desafio final - Banco Fictício

Documentação técnica, por meio de um arquivo readme.md, do projeto do Programa ElasTech, com a criação de um sistema de Cadastro de Conta Bancária, Cliente e realização de Transações.

Jaque-Csharp Feature

O banco fictício SoulBank queria construir uma nova plataforma e precisava de um sistema para gerenciar clientes e transações. Esse sistema deveria permitir cadastro de novos clientes, incluindo dados pessoais e dados para contato. O cliente precisava ser atrelado a uma conta bancária, com um valor inicial de saldo. Foi solicitado que fossem feitas transferências de um cliente para outro e esse histórico de transações entre as contas seriam registrados.

Então para atender essa demanda foram aplicados os conceitos de Java com Orientação a Objetos, onde classes foram criadas para representar as entidades a serem gerenciadas e tambén os casos de uso desse sistema. Para armazenar os dados aplicamos os conceitos de bancos de dados.

Criamos o cadastro, alteração e consulta de Pessoa Física e Jurídica, Conta e Transações.


Jaque-Csharp Tecnologias Utilizadas

Foram escolhidas para esse projeto:

  • Linguagem Java. Por ser uma linguagem de alto nível e orientada a objeto.
  • Spring Boot. Pela facilidade e agilidade em processos de aplicações Java. Importamos algumas dependências como Actuator e Web.
  • Spring Boot JPA. Por criar uma camada de acesso aos dados por meio de uma API.
  • H2. Utilizamos inicialmente para gerar uma Base de Dados simples para testes de Caso de Uso das Entidades.
  • MySQL. Escolhido como Banco de Dados final por ser mais estruturado e ser multiplataforma.
  • Postman. Utilizamos para realizar os testes iniciais.
  • Swagger. Posteriormente incluimos a depencência do Swagger para fazer os testes finais e gerar os endpoints, por ser composto de diversas ferramentas que auxiliam no consumo e visualização de serviços de uma API.

Jaque-vscode Organização do Projeto

O projeto tem uma estrutura orientada a objeto com uma relação de Herança entre as Classes, sendo elas:

  • Classe Cliente. Superclasse, ou classe Mãe/Pai, com os atributos 'email', 'telefone' e 'statusCliente'.
  • Classe Pessoa Física. Subclasse, ou classe Filha, além de herdar as propriedades da mãe, também tem os atributos 'CPF', 'RG', 'nome', é associado a um 'Endereço' e a uma 'Conta Bancária'.
  • Classe Pessoa Jurídica. Subclasse, ou classe Filha, além de herdar as propriedades da mãe, também tem os atributos 'CNPJ', 'razão social', é associado a um 'Endereço' e a uma 'Conta Bancária'.

    Pessoa Fisica e Jurídica estão associados as outras duas Classes, que é a Endereço e Conta Bancária. Conta Bancária por sua vez está relacionado com Transação. Essas Classes têm a seguinte estrutura:
  • Classe Endereço. Associado por meio de uma relação OneToMany onde um Endereço pode pertencer a mais de uma Pessoa. Os atributos de Endereço são: 'id do Endereco','logradouro', 'complemento', 'bairro', 'cidade', 'estado', 'CEP'.
  • Classe Conta Bancária. Com uma relação de OneToOne com Pessoa Física e Jurídica. Inicialmente criamos com essa relação mais simples, mas uma ótima implementação seria uma relação @ManyToMany. Os atributos Conta Bancária são: 'id da Conta', 'conta', 'agencia', 'saldo', 'limite', 'cheque especial', 'chave Pix', 'tipo de chave Pix', 'status da Conta', e um atributo tipo List para exibir as Transações.
  • Transação. Está relacionada a Conta com uma relação de @ManyToOne, onde uma Conta pode ter várias Transações. Como uma Transação pode ser realizada entre dois clientes, foram criados dois atributos do tipo Conta Bancária, um é o 'conta origem' e o outro é o 'conta destino'. Os demais atributos da classe são: 'id de transação', 'valor', 'tipo de transação' e 'data'.

As entidades Pesssoa Física e Jurídica do Banco de Dados não tem uma relação de Herança com Cliente no Banco de Dados, cada uma têm sua tabela própria para melhor organização.

Jaque-vscode Casos de Uso do Sistema

  • Cadastro de cliente

    CadastrarCliente

  • Buscar cliente cadastrado

    BuscarClienteCadastrado

  • Transferência de saldo entre contas TransferenciadeSaldoEntreContas

  • Buscar histórico de transações entre contas BuscarHistoricodeTransacaoentreContas

Jaque-vscode Diagrama de Classe

Diagrama UML. DiagramaClasseUML-final



Jaque-vscode DER

Diagrama de Entidade e Relacionamento do Banco de Dados.

DER



Jaque-vscode Pré-requisitos de Instalação

Se você deseja baixar editar e/ou executar esse sistema, é preciso ter:

  • JDK 8
  • Java 8
  • IntelliJ ou IDE da sua preferência
  • MySQL
  • Git
  • Acesso ao GitHub

Jaque-vscode Execução da Aplicação


As Dependências citadas são instaladas automaticamente.

Para executar no primeiro acesso:

  • Antes de executar a aplicação em resources, na aplication properties tem que colocar a senha do MySQL previamente gerada.
  • E no MySQL criar o Banco executando a linha: create database SoulBank.
  • Depois de executada insira os inserts da pasta Scripts.
  • Atualizar o valor do Hibernate de acordo com o arquivo clean_bd da mesma pasta.

Executar em todo acesso:

Jaque-vscode Possíveis implementações futuras

  • Spring Security: autenticação e autorização (OAuth 2.0).
  • Criação de Front-End por meio de console.
  • Código Limpo: Sonar.
  • Melhorar a API do Banco se parecer mais com a realidade.
  • Java Dot.

Jaque-vscode Contribuidores

Projeto elaborado por: