Resumen - Gestor de cuentas bancarias
Parte de la sección Programación Orientada a Objetos del Journey de Java de Coddy. Lección 14 de 87.
Desafío
FácilConstruyamos un sistema completo de BankAccount que reúna todo lo que has aprendido sobre encapsulación, modificadores de acceso, getters, setters y la palabra clave final.
Crearás dos archivos para organizar tu código:
BankAccount.java: Diseña una clase de cuenta bancaria segura que proteja los datos financieros confidenciales:- Un número de cuenta inmutable que nunca pueda cambiar una vez creada la cuenta
- Un saldo privado que comience en 0.0 y solo pueda modificarse mediante métodos controlados
- Un nombre de propietario privado que pueda consultarse, pero no cambiarse directamente
- Un constructor que reciba el número de cuenta y el nombre del propietario
- Un getter para el número de cuenta
- Un getter para el nombre del propietario
- Un getter para el saldo
- Un método
deposit(double amount)que sume al saldo solo si el importe es positivo y devuelvatruesi tiene éxito ofalsesi se rechaza - Un método
withdraw(double amount)que reste del saldo solo si el importe es positivo Y hay fondos suficientes, y devuelvatruesi tiene éxito ofalsesi se rechaza - Un método
getAccountSummary()que devuelva:"Account [accountNumber] | Owner: [ownerName] | Balance: $[balance]"(el saldo con 2 decimales)
Main.java: Crea un BankAccount y realiza una serie de transacciones. Recibirás cinco entradas: número de cuenta, nombre del propietario, importe del depósito, primer importe de retiro y segundo importe de retiro. Imprime cuatro líneas:- El resultado del depósito:
Deposit: trueoDeposit: false - El resultado del primer retiro:
Withdraw 1: trueoWithdraw 1: false - El resultado del segundo retiro:
Withdraw 2: trueoWithdraw 2: false - El resumen final de la cuenta
- El resultado del depósito:
Recibirás cinco entradas en este orden: accountNumber (String), ownerName (String), depositAmount (double), withdrawAmount1 (double), withdrawAmount2 (double).
Para dar formato al saldo con 2 decimales, puedes usar String.format("%.2f", balance).
Pruébalo tú mismo
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Leer entradas
String accountNumber = scanner.nextLine();
String ownerName = scanner.nextLine();
double depositAmount = scanner.nextDouble();
double withdrawAmount1 = scanner.nextDouble();
double withdrawAmount2 = scanner.nextDouble();
// TODO: Crear un objeto BankAccount con accountNumber y ownerName
// TODO: Realizar el depósito e imprimir el resultado como "Deposit: true" o "Deposit: false"
// TODO: Realizar el primer retiro e imprimir el resultado como "Withdraw 1: true" o "Withdraw 1: false"
// TODO: Realizar el segundo retiro e imprimir el resultado como "Withdraw 2: true" o "Withdraw 2: false"
// TODO: Imprimir el resumen de la cuenta
}
}
Todas las lecciones de Programación Orientada a Objetos
1Fundamentos de OOP
Archivos externosIntroducción a la OOPClases vs. ObjetosLa palabra clave thisMétodosCampos (Atributos)Método constructorSobrecarga de constructoresResumen - Calculadora simple4Herencia
Herencia básica (extends)La palabra clave superSobrescritura de métodos (@Override)Encadenamiento de constructoresLa clase ObjectHerencia simple y multinivelPor qué no hay herencia múltiple de clasesResumen - Jerarquía de empleados7Métodos especiales y la clase Object
Método toString()equals() y hashCode()Método clone()compareTo() y ComparableInterfaz ComparatorResumen - Ordenamiento personalizado2Modificadores de acceso y encapsulamiento
Visión general de los niveles de accesoMétodos Getter y SetterOcultamiento de informaciónLa palabra clave finalResumen - Gestor de cuentas bancarias5Polimorfismo
Fundamentos de sobrecarga de métodosSobrescritura de métodos (tiempo de ejecución)Upcasting y DowncastingEl operador instanceofClases y métodos abstractosResumen - Calculadora de figuras8Conceptos avanzados de POO
Composición vs. HerenciaAgregación vs. ComposiciónClases internas, anidadas y anónimasEnums y métodos de EnumRecords (Java 16+)Clases selladas (Java 17+)11Patrones de diseño - Parte 1
Introducción a los patrones de diseñoPatrón SingletonPatrón FactoryPatrón BuilderPatrón ObserverPatrón Strategy3Propiedades de clase y miembros estáticos
Variables de instancia vs. estáticasMétodos estáticosBloques estáticosConstantes (static final)Repaso - Contador y utilidad6Interfaces y Clases Abstractas
Introducción a las InterfacesImplementación de InterfacesImplementación de Múltiples InterfacesMétodos Default y Static en InterfacesClases Abstractas vs InterfacesInterfaces FuncionalesResumen - Sistema de Pagos9Genéricos
Introducción a los genéricosClases genéricasMétodos genéricosParámetros de tipo delimitadosComodines (?, extends, super)Resumen - Contenedor genérico12Patrones de diseño Parte 2
Patrón CommandPatrón AdapterPatrón DecoratorPatrón Template MethodPatrón StatePatrón CompositePatrón IteratorPractica por tu cuenta: Compilador de Java online