Δημιουργήστε μια κλάση SavingsAccount . Εάν χρησιμοποιείτε ένα εξειδικευμένο Java IDE , υπάρχει πιθανότατα μια επιλογή για να δημιουργήσει αυτόματα σκελετός μαθήματα για σας από το μενού Αρχείο . Διαφορετικά , απλά δημιουργήστε ένα αρχείο με όνομα " SavingsAccount.java » και να γράψει τις ακόλουθες πληροφορίες σε αυτό : .
/*** Αυτή η κλάση αντιπροσωπεύει στοιχεία που είναι κοινά σε όλους τους λογαριασμούς ταμιευτηρίου * /δημόσια τάξη SavingsAccount {
//Όλα τα άλλα στο φροντιστήριο θα γραφτεί σε αυτό το χώρο !
} 2
να αναγνωρίσει τα πεδία κατηγορίας . Στο ελάχιστο , μάλλον θα θέλετε να αποθηκεύσετε έναν αριθμό λογαριασμού , το τρέχον υπόλοιπο , τον κατάλογο των δικαιούχων του λογαριασμού , και μια καταγραφή όλων των συναλλαγών στο λογαριασμό. Γράψτε τα εξής μέσα στην τάξη:
/*** Ο αριθμός λογαριασμού * /String accountNumber ?
/*** Το ισοζύγιο τρεχουσών . . Ποτέ μην χρησιμοποιείτε πλωτήρες ή διπλασιάζεται για το νόμισμα ! Υπάρχουν ανακρίβειες σε float και το διπλό αριθμητική * /ιδιωτική ισορροπία BigDecimal ? .
/*** Αυτό αποθηκεύει μια λίστα με ονόματα κάτοχος του λογαριασμού ως ένα string . Μια εναλλακτική λύση θα ήταν να δημιουργηθεί μια κατηγορία του κατόχου λογαριασμού και κατάστημα που εδώ * /ArrayList /*** Μια ιστορία των πράξεων που διενεργούνται από την λογαριασμό . Και πάλι , μια εναλλακτική λύση θα ήταν να δημιουργηθεί μια κατηγορία συναλλαγών για να κρατήσει περισσότερες πληροφορίες από το ποσό της συναλλαγής * /ιδιωτικές συναλλαγές ArrayList Τεκμηριώνοντας την εργασία σας , είναι σημαντικό να αναγνωσιμότητας κώδικα και τη μελλοντική συντήρηση , ώστε να μην παραμελήσει τα σχόλια JavaDoc σας . Ένα πολύ σημαντικό πράγμα που πρέπει να παρατηρήσετε είναι ότι η ισορροπία και οι συναλλαγές δεν εκπροσωπούνται ως πλωτήρες ή διπλασιάζεται , αλλά μάλλον με την κατηγορία BigDecimal . BigDecimal είναι μια πιο αργή και πιο μέθοδος πολλή μνήμη για την αποθήκευση αριθμών κινητής υποδιαστολής . Ωστόσο, δεν διαθέτει τις μικρές ανακρίβειες του float και το διπλό αρχέτυπα . Δεδομένου ότι έχετε να κάνετε με το νόμισμα , θα πρέπει να προτιμούν την ακρίβεια σε επιχειρήσεις των μικρών κερδών που παρέχονται από πλωτήρα και να διπλασιάσει την ταχύτητα και την κατανάλωση μνήμης . Δημιουργήστε ένα κατασκευαστή . Στα περισσότερα μαθήματα , θα θελήσετε να επιβαρύνει κατασκευαστή σας? Δηλαδή , θα θελήσετε να έχουν περισσότερες από μία μέθοδος για την οικοδόμηση μιας νέας περιόδου λειτουργίας του λογαριασμού . Μπορείτε να αποφασίσετε για τον εαυτό σας τι είδους κατασκευαστές θα ταιριάζει στις ανάγκες σας , αλλά τουλάχιστον, θα πρέπει να υπάρχει ένας κατασκευαστής για τη δημιουργία ενός νέου λογαριασμού δίνεται ένα αριθμό λογαριασμού και μια αρχική ισορροπία , έτσι ώστε να προσθέσετε την ακόλουθη μέθοδο στην τάξη σας : /*** δημιουργήσετε ένα νέο λογαριασμό * @ param accountNumber τον αριθμό του νέου λογαριασμού * @ param ισορροπία ισορροπία έναρξη του λογαριασμού * /SavingsAccount ( String accountNumber , την ισορροπία BigDecimal ) { this.accountNumber = accountNumber ? this.balance = ισορροπία? } Δημιουργήστε μια ισορροπία " κτήτορας " και μια μέθοδο performTransaction . Είναι πρότυπο Αντικειμενοστρεφής Προγραμματισμός πρακτική να δημιουργήσετε getters και setters για όλους τους τομείς σε μια τάξη . Ωστόσο , αυτή είναι ακατάλληλη για το πεδίο ισορροπία. Ενώ θα πρέπει σίγουρα να επιτρέψει την ισορροπία που πρέπει να προβληθούν , δεν θέλετε αυθαίρετες μεθοδεύσεις για την ισορροπία . Αντίθετα , θέλετε όλες οι αλλαγές στην ισορροπία που εμφανίζονται με τη μορφή της συναλλαγής . Ως εκ τούτου , προσθέστε τις ακόλουθες δύο μεθόδους για την τάξη σας /*** @ επιστρέψει την τρέχουσα ισορροπία * /BigDecimal getBalance ( ) { ισορροπία επιστροφή? } . /*** Εκτελεί μια συναλλαγή στο λογαριασμό . * @ param ποσό πόσο για ανάληψη /κατάθεση ; Αποσύρει πρέπει να είναι αρνητική . Καταθέσεις πρέπει να είναι θετική . * @ Επιστροφή Αληθές επιτυχής. False αν ηττηθεί . Μια εναλλακτική λύση για τη χρήση boolean εδώ θα ήταν να δημιουργηθεί μια κατηγορία « TransactionFailedException " που θα μπορούσαν να παρέχουν στο χρήστη περισσότερες πληροφορίες σχετικά με τους λόγους για την αποτυχία . * /Boolean performTransaction ( BigDecimal ποσό) {if ( amount.compareTo ( BigDecimal.ZERO ) = = -1 ) { //Αυτό είναι ένα withdrawif ( amount.abs ( ) compareTo (υπόλοιπο ) == 1 ) { //το ποσό ανάληψης είναι μεγαλύτερη από την balance.return ψευδείς? . } else { //υπάρχει αρκετά χρήματα να καλύψει το αποσύρει . Τροποποιήσετε την εξισορρόπηση και καταγράφει το transaction.balance = balance.add ( ποσό) ? Transactions.add ( ποσό) ? Return true ? } } Else { //Αυτό είναι μια κατάθεση . Προσθήκη στην ισορροπία και να καταγράψει το transaction.balance = balance.add ( ποσό) ? Transactions.add ( ποσό) ? Return true ? } } Αυτό παρέχει λογαριασμό ταμιευτηρίου σας τάξη με το ελάχιστο που χρειάζεται για να λειτουργήσει , αν και εξακολουθούν να υπάρχουν βελτιώσεις που μπορούν να γίνουν σε αυτό . Κάτοχο και την κίνηση του λογαριασμού θα πρέπει να είναι δικές τους τάξεις , και όχι απλή έγχορδα και BigDecimals , αφού μπορεί να θέλετε να αποθηκεύσετε περισσότερες πληροφορίες σχετικά με μια συναλλαγή από απλά το ποσό που εμπλέκονται .
Εικόνων 3
Η 4
Η
εικόνων
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα