Lors de la création d'une classe de modéliser les informations pour un compte d'épargne en Java, un certain nombre de considérations spéciales entrent en jeu. Le plus important d'entre eux est une faiblesse subtile dans l'implémentation Java du flotteur et les types de données primitifs doubles qui les pousse à revenir de temps en temps des réponses légèrement inexactes opérations arithmétiques. Ces inexactitudes, dans la plupart des circonstances, serait trivial. Toutefois, lorsque le traitement des documents de la monnaie, où les petites inexactitudes peuvent ajouter jusqu'à dramatiques conséquences, du monde réel au fil du temps, ils peuvent devenir sérieux.
Créer une classe SavingsAccount. Si vous utilisez un IDE Java spécialisée, il ya probablement une option pour créer des classes squelette automatiquement pour vous dans le menu Fichier. Sinon, il suffit de créer un fichier nommé "SavingsAccount.java" et écrire l'information suivante en elle:
/ **
- Cette classe représente des informations communes à tous les comptes d'épargne.
* /
public class SavingsAccount {
9-
// Tout le reste dans le tutoriel sera écrit dans cet espace!
9-
} Déclarer les champs de classe. Au minimum, vous voudrez probablement pour stocker un numéro de compte, la balance courante, une liste de titulaires de compte, et un enregistrement de toutes les transactions sur le compte. Écrivez le suivant à l'intérieur de la classe:
/ **
* Le numéro de compte.
* /
Chaîne accountNumber
GO
/ **
* L'équilibre actuel. Ne jamais utiliser des flotteurs ou des doubles de la monnaie! Il ya des inexactitudes dans float et double arithmétique.
* /
équilibre BigDecimal privée
GO
/ **
* Cette stocke une liste de noms de titulaire du compte en tant que chaîne. Une alternative pourrait être de créer une classe de titulaire de compte, et de stocker ici.
* /
ArrayList accountholders = new ArrayList()
GO
/ **
* Un historique des transactions effectuées sur le compte. Encore une fois, une alternative serait de créer une classe de transaction de tenir plus d'informations que le montant de la transaction
* /
ArrayList privée transactions = new ArrayList()
GO
9-
Documenter votre travail est important pour la lisibilité du code et de l'entretien futur, il ne faut pas négliger vos commentaires JavaDoc.
Une chose très importante que vous devriez remarquer est que solde et les transactions ne sont pas représentés comme des flotteurs ou des doubles, mais plutôt avec le BigDecimal de classe. BigDecimal est une méthode plus lente et plus gourmande en mémoire de stockage de nombres à virgule flottante. Cependant, il manque les petites inexactitudes du flotteur et primitives doubles. Puisque vous faites affaire avec la monnaie, vous devriez préférer la précision dans les opérations des petits gains fournis par flotteur et doubles de la vitesse et de la consommation de mémoire.
Créer un constructeur. Dans la plupart des classes, vous aurez envie de surcharger votre constructor- qui est, vous aurez envie d'avoir plus d'une méthode pour la construction d'une nouvelle instance de compte. Vous pouvez décider pour vous-même quelles sortes de constructeurs sera fonction de vos besoins, mais au minimum, il devrait y avoir un constructeur pour créer un nouveau compte donné un numéro de compte et un solde de départ, il faut donc ajouter la méthode suivante à votre classe:
/ **
* Créer un nouveau compte
*param AccountNumber le numéro du nouveau compte
*param Équilibrer la balance de démarrage du compte
* /
SavingsAccount (String accountNumber, l'équilibre BigDecimal) {
this.accountNumber = accountNumber
GO
this.balance = solde
GO
}
Créer un équilibre "getter" et un procédé de performTransaction. Il est orienté objet la pratique de programmation standard pour créer des accesseurs pour tous les champs dans une classe. Toutefois, cela est inapproprié pour le domaine de l'équilibre. Alors que vous devriez certainement permettre au solde à être consulté, vous ne voulez pas les manipulations arbitraires à l'équilibre. Au contraire, vous souhaitez que tous les changements à l'équilibre de se produire sous la forme d'une transaction. Par conséquent, ajouter les deux méthodes suivantes pour votre classe.
/ **
*return La balance courante
* /
BigDecimal getBalance () {
l'équilibre de retour
GO
}/ **
* Effectue une transaction sur le compte.
* Montant duparam combien de retirer / dépôt? Retire doivent être négatifs. Dépôts devraient être positifs.
*return Vrai succès. Faux en cas d'échec. Une alternative à l'aide d'un booléen ici serait de créer un "-TransactionFailedException &classe quot- qui pourraient fournir à l'utilisateur plus d'informations sur les raisons de l'échec.
* /
booléen performTransaction (montant BigDecimal) {
if (amount.compareTo (BigDecimal.ZERO) == -1) {
// Ceci est un retrait
if (amount.abs (). compareTo (balance) == 1) {
// Le montant retirer est supérieure à l'équilibre.
return false
GO
} Else {
// Il ya assez d'argent pour couvrir le retrait. Modifier l'équilibre et connectez la transaction.
équilibre = balance.add (montant)
GO
transactions.add (montant)
GO
return true
GO
}
} Else {
// Ceci est un dépôt. Ajouter à l'équilibre et connecter la transaction.
équilibre = balance.add (montant)
GO
transactions.add (montant)
GO
return true
GO
}
}
Cette offre votre compte d'épargne classe avec le minimum, il a besoin pour fonctionner, même si il ya encore des améliorations qui peuvent être apportées. Titulaire du compte et les transactions devraient être leurs propres classes, plutôt que de simples chaînes et BigDecimals, puisque vous pourriez vouloir stocker plus d'informations sur une transaction que de simplement le montant en cause.