Code Monkey home page Code Monkey logo

elastech_projeto's Introduction

#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:

elastech_projeto's People

Contributors

bruna-quinto-marsiaj avatar jaqueline-ghizini avatar samantabarrosc avatar priscilagf avatar gizele233 avatar srhgeorgia avatar

Stargazers

Sidnei Matos avatar  avatar Vitor Araujo avatar João Paulo Barbosa Anastácio avatar Ozzy Scuba avatar  avatar Wesley Junio avatar Lucas Alves avatar Willian Pinheiro avatar Tiago Lazarini avatar Sérgio Roberto Sanchez Filho avatar Diego Rodrigues avatar Fabio Quinto Marsiaj avatar Fernando Trombeta avatar Lucas Felipe avatar Thais C L de Carvalho avatar Rodrigo Mendes avatar Renan Loureiro avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.