Al crear una clase para modelar la información de una cuenta de ahorros en Java, una serie de consideraciones especiales entran en juego. El más importante de ellos es una debilidad sutil en la implementación de Java de la boya y los tipos de datos primitivos doble que hace que se vuelvan en ocasiones respuestas ligeramente inexactas en las operaciones aritméticas. Estas imprecisiones , bajo la mayoría de circunstancias , sería trivial. Sin embargo , cuando se trata de los registros de la moneda , donde los pequeños errores pueden agregar hasta dramáticas consecuencias en el mundo real con el tiempo , pueden llegar a ser graves . Cosas que necesitará de computadora
Java IDE
Java Development Kit
Java Runtime Environment
Ver Más instrucciones
1
crear una clase SavingsAccount . Si usted está usando un IDE Java especializada , es probable que haya una opción para crear clases esqueleto automáticamente para usted en el menú Archivo. De lo contrario , cree un archivo llamado " SavingsAccount.java " y escriba la siguiente información en el mismo: .
/*** Esta clase representa la información común a todas las cuentas de ahorro * /class SavingsAccount pública {
< p > //Todo lo demás en el tutorial se escribirá en este espacio !
}
2
Declarar los campos de clase . Como mínimo, es probable que desee almacenar un número de cuenta , el saldo actual , una lista de los titulares de las cuentas , y un registro de todas las transacciones en la cuenta. Escriba el siguiente dentro de la clase :
/*** El número de cuenta * numeroCuenta /String;
/*** El saldo actual. . Nunca utilice flotadores o dobles de la moneda ! Hay errores en float y double aritméticas * saldo BigDecimal /privado; .
/*** Esto almacena una lista de nombres de cuenta de soporte en forma de cadena . Una alternativa podría ser la creación de una clase de cuenta, y la tienda que aquí * /ArrayList cuentahabientes = new ArrayList (); .
/*** Una historia de las transacciones realizadas en la cuenta. Una vez más , una alternativa sería la creación de una clase de transacciones para tener más información de la que la cantidad de la transacción ArrayList * /private transacciones = new ArrayList ();
Documentar su trabajo es importante para legibilidad del código y el mantenimiento en el futuro , por lo que no descuiden sus comentarios JavaDoc .
Una cosa muy importante que debe tener en cuenta es que el balance y las transacciones no están representados como flotadores o dobles , sino más bien con la clase BigDecimal . BigDecimal es un método intensivo de la memoria más lenta y de almacenar números de coma flotante . Sin embargo , carece de los pequeños errores de los float y double primitivas . Dado que se trata de divisas, usted debe preferir precisión en las operaciones de las pequeñas ganancias proporcionadas por flotador y el doble de velocidad y el consumo de memoria .
3
Crear un constructor. En la mayoría de las clases , tendrá que sobrecargar el constructor , es que , usted quiere tener más de un método para la construcción de una nueva instancia cuenta. Usted puede decidir por sí mismo qué tipo de constructores se adapte a sus necesidades, pero al menos, no debería ser un constructor para crear una nueva cuenta dado un número de cuenta y el saldo inicial , por lo que añadir el siguiente método a la clase :
/*** Crear una nueva cuenta * @ param AccountNumber el número de la cuenta * @ param saldo de la cuenta de balance de comienzo * /SavingsAccount ( numeroCuenta cadena , balance BigDecimal ) { this.accountNumber = numeroCuenta ; this.balance = resultado ; }
4
Crear un equilibrio " getter " y un método performTransaction . Es una práctica de programación orientada a objetos estándar para crear getters y setters para todos los campos de una clase. Sin embargo , esto no es apropiado para el campo de saldo . Mientras que se debe permitir que el equilibrio que se ve , no quiere manipulaciones arbitrarias en el equilibrio . Más bien, desea que todos los cambios en el equilibrio que se produzca en la forma de una transacción. Por lo tanto , añadir los dos métodos siguientes para la clase
/*** @ return el saldo actual * /BigDecimal getBalance (). { Saldo return;}
/*** Realiza una transacción en la cuenta. * @ param cantidad la cantidad a retirar /depositar? Retira deberán ser negativos . Los depósitos deben ser positivos . * @ Return verdadero del éxito. Falso si no tiene éxito . Una alternativa al uso de un valor lógico en este caso sería crear una clase " TransactionFailedException " que podría proporcionar al usuario más información acerca de las razones del fracaso . * /Booleano performTransaction ( cantidad BigDecimal ) { if ( amount.compareTo ( BigDecimal.ZERO ) = = -1 ) {//Esto es un withdrawif ( amount.abs () compareTo (balance) == 1 ) {//la cantidad retirada es mayor que el balance.return false; . } else {//No es suficiente dinero para cubrir la retirada . Modificar el balance y registrar la transaction.balance = balance.add ( cantidad ) ; transactions.add ( cantidad ) ; return true ;} } else {//Esto es un depósito. Añadir a la balanza y registrar el transaction.balance = balance.add ( cantidad ) ; transactions.add ( cantidad ) ; return true ;} }
Esto proporciona la clase de cuenta de ahorro con el mínimo que necesita para funcionar , aunque todavía hay mejoras que se pueden hacer a la misma. Titular de la cuenta y las transacciones deben ser sus propias clases , en lugar de cadenas simples y BigDecimals , ya que es posible que desee almacenar más información acerca de una transacción que simplemente la cantidad en cuestión .