Wenn Sie eine Klasse erstellen , um die Informationen für ein Sparkonto in Java modellieren , kommen eine Reihe von speziellen Überlegungen ins Spiel. Die wichtigste davon ist eine subtile Schwäche in der Java-Implementierung der float und double primitiven Datentypen , die sie gelegentlich etwas ungenau zurück Antworten auf arithmetische Operationen verursacht. Diese Ungenauigkeiten , unter den meisten Umständen wäre trivial. Doch beim Umgang mit Aufzeichnungen Währung , wo kleine Ungenauigkeiten können bis zu dramatischen Konsequenzen realen Welt im Laufe der Zeit können sie sich ernst. Things You
Computer Java IDE
Java Development Kit
Java Runtime Environment
brauchen anzeigen Weitere Anweisungen
1
erstellen SavingsAccount Klasse. Wenn Sie mit Hilfe eines speziellen Java IDE sind , gibt es wahrscheinlich eine Option zum Skeleton-Klassen automatisch für Sie in dem Menü Datei. Andernfalls erstellen Sie einfach eine Datei mit dem Namen " SavingsAccount.java " und schreiben Sie den folgenden Informationen in es : .
/*** Diese Klasse stellt Informationen für alle Sparkonten * /public class SavingsAccount {
< p> //Alles andere in dem Tutorial wird in diesem Raum geschrieben werden !
}
2
Deklarieren Sie die Klasse Felder . Im Minimum , werden Sie wahrscheinlich wollen eine Kontonummer , die aktuelle Bilanz , eine Liste von Kontoinhabern , und eine Aufzeichnung aller Transaktionen auf dem Konto zu speichern. Schreiben Sie die folgenden in der Klasse :
/*** Die Kontonummer * /String kontonummer ;
/*** Die aktuelle Bilanz . . Verwenden Sie niemals Schwimmern oder Doppelzimmer für Währung! Es gibt Ungenauigkeiten in float und double Arithmetik * /private BigDecimal Bilanz.
/*** Diese speichert eine Liste der Kontoinhaber Namen als String. Eine Alternative könnte sein, eine AccountHolder Klasse zu erstellen, und speichern Sie das hier * /ArrayList Kontoinhaber = new ArrayList (); .
/*** Eine Geschichte von Transaktionen auf dem Konto durchgeführt . Auch hier wäre eine Alternative sein , um eine Transaktion Klasse mehr Informationen als der Betrag der Transaktion halten erstellen * /private ArrayList Transaktionen = new ArrayList ();
Dokumentieren Sie Ihre Arbeit ist wichtig, Lesbarkeit des Codes und die künftige Wartung , also nicht vernachlässigen Ihre JavaDoc Kommentare .
Eine sehr wichtige Sache, die Sie sollten feststellen, dass Gleichgewicht und Transaktionen werden nicht als Schwimmer oder Doppel vertreten , sondern mit der Klasse BigDecimal . BigDecimal ist ein langsamer und mehr Speicher -intensive Verfahren zum Speichern von Gleitkommazahlen . Allerdings fehlt es den kleinen Ungenauigkeiten der float und double Primitiven . Da Sie mit Währung zu tun haben, sollten Sie die Genauigkeit in Operationen lieber die kleinen Gewinne durch Schwimmer versehen und doppelt in der Geschwindigkeit und Speicherverbrauch.
3
Erstellen Sie einen Konstruktor . In den meisten Klassen , werden Sie wollen , um eine Überlastung Ihrer Konstruktor , das heißt, Sie wollen mehr als eine Methode für den Aufbau einer neuen Instanz angemeldet haben . Sie können selbst entscheiden, welche Arten von Konstruktoren Ihre Bedürfnisse anzupassen , aber am Minimum, es sollte ein Konstruktor sein für die Erstellung eines neuen Kontos gegeben eine Kontonummer und ein Startguthaben , so fügen Sie die folgende Methode, um Ihre Klasse :
/*** ein neues Konto erstellen * @ param AccountNumber das neue Konto Nummer * @ param Saldo des Kontos Startguthaben * /SavingsAccount (String kontonummer , BigDecimal Balance) { this.accountNumber = kontonummer ; this.balance = Gleichgewicht ; }
4
erstellen balance " Getter " und ein performTransaction Verfahren . Es ist Standard Object Oriented Programming Praxis, Getter und Setter für alle Felder in einer Klasse zu erstellen. Dies ist jedoch nicht geeignet für die Waage ein. Obwohl Sie sicherlich sollte damit kann die Waage betrachtet werden , will man nicht beliebige Manipulationen an der Waage. Vielmehr wollen Sie alle Änderungen an der Balance , die in Form einer Transaktion auftreten . Daher fügen Sie die folgenden zwei Methoden, um Ihre Klasse
/*** @ return den aktuellen Saldo * /BigDecimal getBalance (). {Return Gleichgewicht ;}
/*** Führt eine Transaktion auf dem Konto. * @ param Betrag , wie viel /Kaution zurücktreten ? Auszahlungen negativ sein sollte . Einlagen sollte positiv sein . * @ Return true erfolgreicher . False, wenn nicht erfolgreich. Eine Alternative zur Verwendung eines boolean hier wäre eine " TransactionFailedException " -Klasse, die dem Anwender mehr Informationen über die Gründe für das Scheitern . * /Boolean performTransaction ( BigDecimal betrag) { if ( amount.compareTo ( BigDecimal.ZERO ) = liefern könnten erstellen = -1 ) {//Dies ist ein withdrawif ( amount.abs () compareTo (Saldo) == 1 ) {//die auszuzahlenden Betrag größer ist als der balance.return falsch; . } else {//Es ist genug Geld zur Deckung der zurücktreten. Ändern Sie die Balance und protokollieren die transaction.balance = balance.add (Betrag) ; transactions.add (Betrag) ; return true ;}} else {//Dies ist eine Anzahlung . In der Bilanz und melden die transaction.balance = balance.add (Betrag) ; transactions.add (Betrag) ; return true ;}}
Dies bietet Ihrem Sparkonto -Klasse mit dem Minimum es braucht um zu funktionieren , wenn noch Verbesserungen, die daran vorgenommen werden können. Kontoinhaber und Transaktionen sollten ihre eigenen Klassen , anstatt einfach Streicher und BigDecimals sein, da Sie vielleicht weitere Informationen über eine Transaktion als nur die Höhe des Streitwerts zu speichern.