Recapitulação - Gerenciador de Conta Bancária
Parte da seção Programação Orientada a Objetos do Journey de Java da Coddy — lição 14 de 87.
Desafio
FácilVamos construir um sistema de BankAccount completo que reúne tudo o que você aprendeu sobre encapsulamento, modificadores de acesso, getters, setters e a palavra-chave final.
Você criará dois arquivos para organizar seu código:
BankAccount.java: Projete uma classe de conta bancária segura que proteja dados financeiros sensíveis:- Um número de conta imutável que nunca pode mudar uma vez que a conta é criada
- Um saldo privado que começa em 0.0 e só pode ser modificado através de métodos controlados
- Um nome de proprietário privado que pode ser recuperado, mas não alterado diretamente
- Um construtor que recebe o número da conta e o nome do proprietário
- Um getter para o número da conta
- Um getter para o nome do proprietário
- Um getter para o saldo
- Um método
deposit(double amount)que adiciona ao saldo apenas se o valor for positivo, retornandotruepara sucesso oufalsese rejeitado - Um método
withdraw(double amount)que subtrai do saldo apenas se o valor for positivo E existirem fundos suficientes, retornandotruepara sucesso oufalsese rejeitado - Um método
getAccountSummary()que retorna:"Account [accountNumber] | Owner: [ownerName] | Balance: $[balance]"(saldo formatado para 2 casas decimais)
Main.java: Crie um BankAccount e realize uma série de transações. Você receberá cinco entradas: número da conta, nome do proprietário, valor do depósito, primeiro valor de saque e segundo valor de saque. Imprima quatro linhas:- O resultado do depósito:
Deposit: trueouDeposit: false - O resultado do primeiro saque:
Withdraw 1: trueouWithdraw 1: false - O resultado do segundo saque:
Withdraw 2: trueouWithdraw 2: false - O resumo final da conta
- O resultado do depósito:
Você receberá cinco entradas em ordem: accountNumber (String), ownerName (String), depositAmount (double), withdrawAmount1 (double), withdrawAmount2 (double).
Para formatar o saldo para 2 casas decimais, você pode usar String.format("%.2f", balance).
Experimente você mesmo
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Ler as entradas
String accountNumber = scanner.nextLine();
String ownerName = scanner.nextLine();
double depositAmount = scanner.nextDouble();
double withdrawAmount1 = scanner.nextDouble();
double withdrawAmount2 = scanner.nextDouble();
// TODO: Criar um objeto BankAccount com accountNumber e ownerName
// TODO: Realizar o depósito e imprimir o resultado como "Deposit: true" ou "Deposit: false"
// TODO: Realizar o primeiro saque e imprimir o resultado como "Withdraw 1: true" ou "Withdraw 1: false"
// TODO: Realizar o segundo saque e imprimir o resultado como "Withdraw 2: true" ou "Withdraw 2: false"
// TODO: Imprimir o resumo da conta
}
}
Todas as lições de Programação Orientada a Objetos
1Fundamentos de POO
Arquivos ExternosIntrodução à POOClasses vs ObjetosA Palavra-chave thisMétodosCampos (Atributos)Método ConstrutorSobrecarga de ConstrutorRecapitulação - Calculadora Simples4Herança
Herança Básica (extends)A Palavra-chave superSobrescrita de Método (@Override)Encadeamento de ConstrutoresA Classe ObjectHerança Simples e MultinívelPor que não há Herança Múltipla de ClassesRecapitulação - Hierarquia de Funcionários7Métodos Especiais e a Classe Object
Método toString()equals() e hashCode()Método clone()compareTo() e ComparableInterface ComparatorRecapitulação - Ordenação Personalizada2Modificadores de Acesso e Encapsulamento
Visão Geral dos Níveis de AcessoMétodos Getter e SetterOcultação de InformaçõesA Palavra-chave finalRecapitulação - Gerenciador de Conta Bancária5Polimorfismo
Fundamentos de Sobrecarga de MétodosSobrescrita de Métodos (Tempo de Execução)Upcasting e DowncastingO Operador instanceofClasses e Métodos AbstratosRecapitulação - Calculadora de Formas8Conceitos Avançados de OOP
Composição vs HerançaAgregação vs ComposiçãoClasses Internas, Aninhadas e AnônimasEnums e Métodos de EnumRecords (Java 16+)Classes Seladas (Java 17+)11Padrões de Projeto Parte 1
Introdução aos Padrões de ProjetoPadrão SingletonPadrão FactoryPadrão BuilderPadrão ObserverPadrão Strategy3Propriedades de Classe e Membros Estáticos
Variáveis de Instância vs EstáticasMétodos EstáticosBlocos EstáticosConstantes (static final)Recapitulação - Contador e Utilitário6Interfaces e Classes Abstratas
Introdução às InterfacesImplementando InterfacesImplementação de Múltiplas InterfacesDefault e Static em InterfacesClasses Abstratas vs InterfacesInterfaces FuncionaisRecapitulação - Sistema de Pagamento9Generics
Introdução a GenericsClasses GenéricasMétodos GenéricosParâmetros de Tipos DelimitadosWildcards (?, extends, super)Recapitulação - Container Genérico12Padrões de Projeto Parte 2
Padrão CommandPadrão AdapterPadrão DecoratorPadrão Template MethodPadrão StatePadrão CompositePadrão Iterator