Você está aqui: Java ::: Projetos Java Completos - Códigos Fonte Completos Java ::: Projetos Java Programação Orientada a Objetos - Exemplos Java

Simulação de Sistema Bancário usando Programação Orientada a Objetos em Java - Projeto completo com código fonte - Versão console

Quantidade de visualizações: 5677 vezes
Sobre este projeto Java

Durante estes anos que tenho trabalhado como freelancer, mais da metade das requisições dos meus clientes foram ajuda para desenvolver idéias de programação orientada a objetos em Java para projeto de faculdades e universidades.

Com isso percebi que boa parte dos alunos e iniciantes em programação orientada a objetos já entendem toda a teoria. O que lhes falta é prática, ou seja, aplicar estes conhecimentos em aplicações do mundo real.

Pensando nisso, apresento a você um projeto muito interessante e que, se bem entendido e praticado, o ajudará a desenvolver qualquer tipo de aplicação, seja comercial ou para solucionar problemas cotidianos.

O projeto Java apresentado nesta dica é uma simulação completa de um Sistema Bancário, tudo com código fonte em Java, comentado, com variáveis em português, em um nível médio de programação, para facilitar o entendimento de todos.

Nesta simulação nós temos a criação de classes Java, construtores, encapsulamento de dados, agregação e composição, métodos com retorno e sem retorno, variáveis estáticas, variáveis públicas e privadas, e relacionamento entre objetos (um para um, um para muitos, muitos para um) usando ArrayList. Sim, o projeto faz uso extensivo de ArrayList, o que o torna muito rico para o aprendizado e fixação dos conhecimentos da linguagem Java e suas classes principais.

O Diagrama de Classes Java

Antes de falarmos mais sobre o projeto, dê uma boa olhada no seu diagrama de classes:



Como a aplicação está estruturada?

Como podemos ver no diagrama de classes, nós temos uma classe Sistema que contém zero ou vários objetos da classe Banco (relacionamento um para muitos). A classe Banco, por sua vez, possui uma ArrayList de objetos da classe Agência, ou seja, mais um relacionamento um para muitos, já que cada agência pertence a um único banco.

Cada agência pode possuir zero ou mais contas, e cada conta possui um ArrayList de objetos da classe Transação, o que nos permite registrar todas as operações nas contas e emitir o extrato bancário, com os débitos, créditos e transferências entre contas.

Tudo isso é feito por meio de vários menus de opções, como podemos ver na imagem a seguir:



Devo usar ArrayList do Java para desenvolver o sistema?

Sim, objetos da classe ArrayList são perfeitos quando precisamos representar relacionamentos um para muitos e muitos para um. É claro que poderíamos usar vetores de objetos (usando array), mas ficaríamos restritos a tamanhos fixos, enquanto o ArrayList nos permite cadastrar quantos bancos, pessoas, agências e contas quisermos.

Dessa forma, veja, por exemplo, o trecho de código que cria um novo banco:

switch(opcao){
  case 1: // vamos cadastrar um novo banco
    System.out.print("\nNúmero do Banco: ");
    String numeroBanco = entrada.nextLine();
    System.out.print("Nome do Banco: ");
    String nomeBanco = entrada.nextLine();
        
    // vamos incrementar o contador de bancos
    Banco.contadorBancos++;
        
    // agora vamos criar um novo objeto da classe Banco
    Banco b = new Banco(Banco.contadorBancos, nomeBanco,
      numeroBanco);
    // e o adicionamos no ArrayList de bancos
    bancos.add(b);
        
    // e finalmente mostramos uma mensagem de sucesso.
    System.out.println("\nO banco criado com sucesso");
        
    break;


Note que este trecho de código é parte do case da opção Novo Banco do menu Gerenciar Bancos. Veja como usamos uma variável estática contadorBancos da classe Banco para criarmos um valor inteiro auto-incremento que nos permite identificadores únicos para cada banco.

Veja agora mais um trecho de código muito interessante. Trata-se

case 3: // vamos pesquisar uma conta
  System.out.print("\nId, número ou nome cliente da conta: ");
  pesquisaConta = entrada.nextLine();
  // chamamos o método que pesquisa a conta
  temp = pesquisarConta(agenciaAtual, pesquisaConta);
  if(temp == null){ // conta não encotrada
    System.out.println("\nConta não encontrada na agência.");  
  }
  else{
    // mostra a conta encontrada
    System.out.println("\nId da conta bancária: " +
      temp.getId());
    System.out.println("Número da conta: " +
      temp.getNumero());
    System.out.println("Cliente: " + 
      temp.getCliente().getNome());
    System.out.println("Agência: " + agenciaAtual.getNumero() +
      " - " + agenciaAtual.getCidade());
    System.out.println("Banco: " + 
      bancoAtual.getNumero() + " - " + bancoAtual.getNome());
    System.out.println("Saldo atual: " + temp.getSaldo());
    System.out.println("Limite atual: " + temp.getLimite());
  }
        
  break;


Viu que código mais lindo? Note como a Programação Orientada a Objetos em Java nos permite desenvolver idéias de forma bem parecida mesmo ao mundo real.

O fechamento com chave de ouro

O produto final da aplicação Java deverá ser um extrato bancário mostrando os dados da conta escolhida, o histórico de transações com data, tipo da transação e valor, e o saldo atual da conta, com ou sem limite. Veja na imagem abaixo a formatação apresentada (mesmo em modo texto):



Como posso obter este código fonte?

Os links para você baixar todas as versões deste projeto estão abaixo:

1) SBJCNB-A - Sistema Bancário em Java com Código Fonte Versão Console - NetBeans IDE - Faça o Download.

2) SBJCNB-B - Sistema Bancário em Java com Código Fonte Versão Console - Lê e salva os dados em arquivo usando serialização (Serializable), ou seja, os métodos readObject() e writeObject() - NetBeans IDE - Faça o Download.

Não se esqueça: Uma boa forma de estudar o código é fazendo pequenas alterações e rodando para ver os resultados. Outra opção é começar um projeto Java do zero e ir adicionando trechos do código fonte para melhor entendimento de suas partes.


Java ::: Estruturas de Dados ::: Lista Ligada Simples / Lista Encadeada Simples / Singly Linked List

Estruturas de dados em Java - Como criar uma lista singularmente ligada, inserindo e exibindo os valores contidos em cada nó

Quantidade de visualizações: 11071 vezes
Em dicas posteriores você aprendeu sobre listas singularmente e duplamente ligadas. Nesta dica você aprenderá a criar uma lista singularmente ligada (com referências apenas para o próximo nó), inserir alguns nós (sempre no final da lista) e usará um laço while para visitar todos os nós e exibir seus valores.

A classe usada para representar cada nó é a seguinte (No.java):

Este trecho de código ou resolução de exercício faz parte do Super Pack +10.000 Dicas e Truques de Programação e +500 Exercícios Resolvidos em Java, Delphi, C#, C, C++, Python, VB.NET, Golang, Pascal, Ruby, PHP, e várias outras linguagens.

Liberar Acesso

Note que cada nó contém apenas um valor inteiro e uma referência para o próximo nó. Ao analisar o código você perceberá que tanto a inserção quanto a exibição dos nós são feitas usando métodos. Isso permitirá o reaproveitamento deste código em suas próprias implementações. Veja o código para a lista ligada (Lista.java):

Este trecho de código ou resolução de exercício faz parte do Super Pack +10.000 Dicas e Truques de Programação e +500 Exercícios Resolvidos em Java, Delphi, C#, C, C++, Python, VB.NET, Golang, Pascal, Ruby, PHP, e várias outras linguagens.

Liberar Acesso

Compile as classes No.java e Lista.java e vamos fazer o teste (TesteJava.java):

Este trecho de código ou resolução de exercício faz parte do Super Pack +10.000 Dicas e Truques de Programação e +500 Exercícios Resolvidos em Java, Delphi, C#, C, C++, Python, VB.NET, Golang, Pascal, Ruby, PHP, e várias outras linguagens.

Liberar Acesso



Java ::: Classes e Componentes ::: JMenuBar, JMenu, JMenuItem e Afins

Java Swing - Como criar e adicionar uma barra de menus à uma janela JFrame

Quantidade de visualizações: 16377 vezes
Nesta dica eu mostro como adicionar uma barra de menus à uma janela JFrame do Java Swing. Observe que a barra de menus contém apenas um menu que, por sua vez, contém apenas um ítem de menu.

Construí este exemplo "na mão" mesmo, ou seja, não usei nenhum editor visual tal como aquele encontrado na IDE Netbeans. Esta abordagem é muito útil para entender todas as partes que forma uma aplicação Java Swing.

Veja o código completo para o exemplo:

Este trecho de código ou resolução de exercício faz parte do Super Pack +10.000 Dicas e Truques de Programação e +500 Exercícios Resolvidos em Java, Delphi, C#, C, C++, Python, VB.NET, Golang, Pascal, Ruby, PHP, e várias outras linguagens.

Liberar Acesso



Java ::: Coleções (Collections) ::: ArrayList

Como adicionar todos os elementos de uma ArrayList ou coleção à uma outra ArrayList do Java usando o método addAll()

Quantidade de visualizações: 13632 vezes
Em algumas situações pode ser necessário adicionar todos os elementos de uma ArrayList ou outra coleção a uma determinada ArrayList já existente. Isso pode ser feito por meio do uso do método addAll() da classe ArrayList. Na versão 1.5 do Java, este método possui duas assinaturas. Veja a primeira:

Este trecho de código ou resolução de exercício faz parte do Super Pack +10.000 Dicas e Truques de Programação e +500 Exercícios Resolvidos em Java, Delphi, C#, C, C++, Python, VB.NET, Golang, Pascal, Ruby, PHP, e várias outras linguagens.

Liberar Acesso


Aqui nós podemos adicionar à uma ArrayList existente todos os elementos de uma determinada coleção, desde que, é claro, esta coleção implemente ou descenda de alguma classe que implemente a interface Collection. Note também o uso de genéricos na coleção a ser fornecida como argumento. É importante observar que, se passarmos uma coleção de tipos diferentes daquela na qual estamos chamando o método addAll() teremos um erro de compilação.

Veja um exemplo no qual adicionamos todos os elementos de uma ArrayList no final de outra:

Este trecho de código ou resolução de exercício faz parte do Super Pack +10.000 Dicas e Truques de Programação e +500 Exercícios Resolvidos em Java, Delphi, C#, C, C++, Python, VB.NET, Golang, Pascal, Ruby, PHP, e várias outras linguagens.

Liberar Acesso

A segunda assinatura do método addAll() nos permite definir a posição no ArrayList alvo a partir da qual os elementos da coleção fonte serão adicionados. Veja:

Este trecho de código ou resolução de exercício faz parte do Super Pack +10.000 Dicas e Truques de Programação e +500 Exercícios Resolvidos em Java, Delphi, C#, C, C++, Python, VB.NET, Golang, Pascal, Ruby, PHP, e várias outras linguagens.

Liberar Acesso

Eis um exemplo no qual inserimos os elementos de uma ArrayList a partir do segundo elemento da ArrayList alvo. Note que os itens existentes têm suas posições alteradas de forma a acomodar os novos elementos:

Este trecho de código ou resolução de exercício faz parte do Super Pack +10.000 Dicas e Truques de Programação e +500 Exercícios Resolvidos em Java, Delphi, C#, C, C++, Python, VB.NET, Golang, Pascal, Ruby, PHP, e várias outras linguagens.

Liberar Acesso

Como resultado da execução deste código nós teremos:

Este trecho de código ou resolução de exercício faz parte do Super Pack +10.000 Dicas e Truques de Programação e +500 Exercícios Resolvidos em Java, Delphi, C#, C, C++, Python, VB.NET, Golang, Pascal, Ruby, PHP, e várias outras linguagens.

Liberar Acesso



Java ::: Classes e Componentes ::: JTextArea

Java Swing - Como adicionar mais texto a um JTextArea usando o método append()

Quantidade de visualizações: 18432 vezes
Nesta dica mostrarei como é possível usar o método append() da classe JTextArea para adicionar mais conteúdo a esse controle. Esta é uma técnica muito importante no desenvolvimento de aplicações Java Swing.

Segue um exemplo completo (note que fiz toda a aplicação Java Swing na mão mesmo, ou seja, não usei o editor visual do NetBeans ou semelhantes):

Este trecho de código ou resolução de exercício faz parte do Super Pack +10.000 Dicas e Truques de Programação e +500 Exercícios Resolvidos em Java, Delphi, C#, C, C++, Python, VB.NET, Golang, Pascal, Ruby, PHP, e várias outras linguagens.

Liberar Acesso

Veja que neste exemplo, mais conteúdo é adicionado ao controle JTextArea sem provocar uma quebra de linha. Em outras dicas e truques dessa seção você aprenderá como isso pode ser feito.


Java ::: Lista de Exercícios Resolvidos (Algorítmos Resolvidos) ::: Java Básico

Exercícios Resolvidos de Java - Uma locadora de charretes cobra R$ 10,00 de taxa para cada 3 horas de uso destas

Quantidade de visualizações: 4830 vezes
Exercício Resolvido de Java - Uma locadora de charretes cobra R$ 10,00 de taxa para cada 3 horas de uso destas

Pergunta/Tarefa:

Uma locadora de charretes cobra R$ 10,00 de taxa para cada 3 horas de uso destas e R$ 5,00 para cada 1 hora abaixo destas 3 horas.

Faça um programa (algorítmo) Java que leia a quantidade de horas que a charrete foi usada, calcule e escreva o valor a ser pago pelo cliente.

Sua saída deverá ser parecida com:

Este trecho de código ou resolução de exercício faz parte do Super Pack +10.000 Dicas e Truques de Programação e +500 Exercícios Resolvidos em Java, Delphi, C#, C, C++, Python, VB.NET, Golang, Pascal, Ruby, PHP, e várias outras linguagens.

Liberar Acesso
Resposta/Solução:

Veja a resolução comentada deste exercício usando Java console:

Este trecho de código ou resolução de exercício faz parte do Super Pack +10.000 Dicas e Truques de Programação e +500 Exercícios Resolvidos em Java, Delphi, C#, C, C++, Python, VB.NET, Golang, Pascal, Ruby, PHP, e várias outras linguagens.

Liberar Acesso



Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

Linguagens Mais Populares

1º lugar: Java
2º lugar: C#
3º lugar: PHP
4º lugar: Python
5º lugar: Delphi
6º lugar: JavaScript
7º lugar: C
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby

Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site

Últimos Exercícios Resolvidos

Quem Somos

Osmar J. Silva
Programador Freelancer
WhatsApp +55 (062) 98553-6711

Goiânia-GO
Programador Freelancer - Full Stack Developer, Professional Java Developer, PHP, C/C++, Python Programmer, wxWidgets Professional C++ Programmer, Freelance Programmer. Formado em Ciência da Computação pela UNIP (Universidade Paulista Campus Goiânia) e cursando Engenharia Elétrica pela PUC-Goiás. Possuo conhecimentos avançados de Java, Python, JavaScript, C, C++, PHP, C#, VB.NET, Delphi, Android, Perl, e várias tecnologias que envolvem o desenvolvimento web, desktop, front-end e back-end. Atuo há mais de 15 anos como programador freelancer, atendendo clientes no Brasil, Portugal, Argentina e vários outros paises.
Entre em contato comigo para, juntos, vermos em que posso contribuir para resolver ou agilizar o desenvolvimento de seus códigos.
José de Angelis
Programador Freelancer
WhatsApp +55 (062) 98243-1195

Goiânia-GO
Programador Freelancer - Formado em Sistemas de Informação pela Faculdade Delta, Pós graduado em Engenharia de Software (PUC MINAS), Pós graduado Marketing Digital (IGTI) com ênfase em Growth Hacking. Mais de 15 anos de experiência em programação Web. Marketing Digital focado em desempenho, desenvolvimento de estratégia competitiva, analise de concorrência, SEO, webvitals, e Adwords, Métricas de retorno. Especialista Google Certificado desde 2011 Possui domínio nas linguagens PHP, C#, JavaScript, MySQL e frameworks Laravel, jQuery, flutter. Atualmente aluno de mestrado em Ciência da Computação (UFG)
Não basta ter um site. É necessário ter um site que é localizado e converte usuários em clientes. Se sua página não faz isso, Fale comigo e vamos fazer uma analise e conseguir resultados mais satisfatórios..


© 2021 Arquivo de Códigos - Todos os direitos reservados | Versión en Español | Versão em Português