Tecnología

Inicio

Cómo crear una cuenta de ahorros de la clase Con Java

Al crear una clase para modelar la información de una cuenta de ahorros en Java, una serie de consideraciones especiales entran en juego. La más importante de ellas es una debilidad sutil en la implementación de Java del flotador y tipos de datos dobles primitivas que hace que se vuelva de vez en cuando un poco imprecisas respuestas a las operaciones aritméticas. Estas imprecisiones, bajo la mayoría de circunstancias, sería trivial. Sin embargo, cuando se trata de registros de divisas, donde las pequeñas inexactitudes pueden añadir hasta dramáticas consecuencias en el mundo real, con el tiempo, pueden llegar a ser graves.

Instrucciones

1 Crear una clase SavingsAccount. Si está utilizando 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, basta con crear un archivo llamado \ "SavingsAccount.java \" y escribir la siguiente información en ella:

/ **

Esta clase representa información común a todas las cuentas de ahorro.
* /
SavingsAccount public class {

// Todo lo demás en el tutorial será escrito en este espacio!

}

2 Declarar los campos de la 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. Escribe lo siguiente dentro de la clase:

/**
* The account number.
*/
String accountNumber

IR

/**
* The current balance. Never use floats or doubles for currency! There are inaccuracies in float and double arithmetic.
*/
private BigDecimal balance

IR

/**
* This stores a list of account holder names as a string. An alternative might be to create an AccountHolder class, and store that here.
*/
ArrayList<String> accountHolders = new ArrayList<String>()

IR

/**
* A history of transactions performed upon the account. Again, an alternative would be to create a Transaction class to hold more information than the amount of the transaction
*/
private ArrayList<BigDecimal> transactions = new ArrayList<BigDecimal>()

IR

Documentar su trabajo es importante para la legibilidad del código y el mantenimiento en el futuro, por lo que no descuide sus comentarios JavaDoc.

Una cosa muy importante que usted debe notar es que el equilibrio y 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 punto flotante. Sin embargo, carece de las pequeñas imprecisiones del flotador y primitivas dobles. Dado que se trata de la moneda, se debe preferir precisión en las operaciones de las pequeñas ganancias proporcionadas por flotador y dobles en la velocidad y el consumo de memoria.

3 Crear un constructor. En la mayoría de las clases, tendrá que sobrecargar su constructor; es decir, 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 mínimo, debe haber un constructor para crear una nueva cuenta dado un número de cuenta y un balance de partida, por lo que añadir el siguiente método a la clase:

/ **

* Create a new account
* @param accountNumber the new account's number
* @param balance the account's start balance
*/

SavingsAccount (String accountNumber, el equilibrio BigDecimal) {

this.accountNumber = accountNumber

IR

this.balance = balance

IR
}

4 Crear un equilibrio \ performTransaction un método "getter \" y. Es una práctica de programación orientada a objetos estándar para crear captadores y definidores para todos los campos de una clase. Sin embargo, esto no es apropiado para el campo de equilibrio. Aunque sin duda, debe permitir el equilibrio para ser visto, no quiere manipulaciones arbitrarias a la balanza. Más bien, desea que todos los cambios en el equilibrio que se produzca en forma de una transacción. Por lo tanto, añadir los dos métodos siguientes para su clase.

/**
* @return the current balance
*/
BigDecimal getBalance() {
return balance

IR

}

/ **
* Realiza una transacción en la cuenta.
* @param Cantidad la cantidad de retirar / depósito? Retira deben ser negativos. Los depósitos deben ser positivos.
* @return La verdadera de éxito. Falso si no tiene éxito. Una alternativa al uso de un valor lógico aquí sería la creación de un \ & quot; TransactionFailedException \ & quot; clase que podría proporcionar al usuario más información acerca de las razones para el fracaso.
* /
booleano performTransaction (cantidad BigDecimal) {
si (amount.compareTo (BigDecimal.ZERO) == -1) {
// Este es un retiran
si (amount.abs (). compareTo (balance) == 1) {
// La cantidad retirar es mayor que el equilibrio.
falso retorno

IR

} else {
// There is enough money to cover the withdraw. Modify the balance and log the transaction.
balance = balance.add(amount)

IR

transactions.add(amount)

IR

return true

IR

}
} else {
// This is a deposit. Add to the balance and log the transaction.
balance = balance.add(amount)

IR

transactions.add(amount)

IR

return true

IR

}
}

Esto proporciona su cuenta de ahorros de clases 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 transacciones deberían ser sus propias clases, en lugar de cadenas y BigDecimals simples, ya que es posible que desee almacenar más información sobre una transacción que simplemente la cantidad en cuestión.