hvordan du opretter en opsparingskonto klasse med java

Indlæg af Ingebeth Mosgaard     opdateret: 2011-07-11

Når du opretter en klasse til at modellere de oplysninger om en opsparingskonto i Java , en række særlige overvejelser spiller ind . Den vigtigste af disse er en subtil svaghed i Java gennemførelsen af float og dobbelt primitive datatyper , der får dem til at lejlighedsvis vende tilbage lidt upræcise svar til aritmetiske operationer. Disse unøjagtigheder , under de fleste omstændigheder , ville være triviel . Men , når det drejer sig optegnelser af valuta , hvor små unøjagtigheder kan tilføje op til dramatiske , virkelige verden følger med tiden , kan de blive alvorlige .

Du skal bruge:
Computer
. Java IDE .
Java Development Kit .
Java Runtime Environment .


1 .
Opret en SavingsAccount klasse . Hvis du bruger en specialiseret Java IDE , er der sandsynligvis en mulighed for at oprette skelet klasser automatisk for dig i menuen Filer . Ellers skal du blot oprette en fil med navnet " SavingsAccount. java "og skriv følgende info i den : .
/**
* Denne klasse repræsenterer oplysninger fælles for alle opsparingskonti
* /
public class SavingsAccount {
//Alt andet i tutorial vil blive skrevet på denne plads !
}
2 .
Erklær klassen felter . For det minimale , vil du sikkert gerne gemme et kontonummer , den nuværende balance , en liste over kontohavere , og en fortegnelse over alle transaktioner på kontoen . Skrive følgende inde i klassen :
/**
* Kontonummeret
* /
String kontonummer ,
/* . *
* Den nuværende balance . Aldrig bruge flåd eller double for valuta ! Der er unøjagtigheder i float og dobbelt aritmetiske
* /
private BigDecimal balance .
/**
* Dette gemmer en liste over kontohaver navne som en streng . Et alternativ kunne være at oprette en kontohaver klasse , og butik, der her
* /
ArrayList kontohavere=new ArrayList ( ) ; .
/**
* En historie om transaktioner, der udføres på kontoen . Igen vil en alternativ være at skabe en Transaktion klassen til at holde flere oplysninger end det beløb for transaktionen
* /
private ArrayList transaktioner=new ArrayList ( ) ;

Dokumentation dit arbejde er vigtigt at koden læsbarhed og fremtidig vedligeholdelse , så du skal ikke forsømme dine javadoc kommentarer .
En meget vigtig ting du skal bemærke er, at balance og transaktioner er ikke repræsenteret som flåd eller double , men snarere med klassen BigDecimal . BigDecimal er en langsommere og mere hukommelse-intensive måde at gemme kommatal . Men det mangler de små unøjagtigheder i float og dobbelt primitiver . Da du har at gøre med valuta , skal du foretrækker nøjagtighed i operationer til små stigninger , som flyder og dobbelt i hastighed og hukommelsesforbrug .
3 .
Opret en constructor . I de fleste klasser , du ønsker at overbelaste din constructor , det er , du ønsker at have mere end én metode til at bygge en ny konto instans . Du kan selv bestemme , hvad slags konstruktører vil passe til dine behov , men som minimum bør der være en constructor til at skabe en ny konto givet et kontonummer og et udgangspunkt balance , så tilføj følgende metode til at din klasse :

/**
* Opret en ny konto
* @ param kontonummer den nye konto nummer
* @ param balance på kontoen start balance
* /
SavingsAccount ( String kontonummer , BigDecimal balance ) {
dette . kontonummer=kontonummer ;
this. balance=balance ;
}
4
Opret en balance " getter " og en performTransaction metode . Det er standard objektorienteret programmering praksis til at skabe getters og settere for alle områder i en klasse . Dette er imidlertid uhensigtsmæssigt for resten feltet . Mens du sikkert skulle gøre det muligt balance , der skal ses , har du ikke lyst vilkårlige manipulationer på balancen . Snarere , du ønsker, at alle ændringer til den balance, der opstår i form af en transaktion . Derfor tilføje følgende to metoder til at din klasse .
/**
* @ return den nuværende balance
* /
BigDecimal getBalance ( ) {
tilbage balance ;
}
/**
* Udfører en transaktion på kontoen .
* @ param beløb hvor meget til at trække /depositum ? Trækker bør være negative . Indskud skal være positiv .
* @ return True vellykkede . Falsk, hvis sagen . Et alternativ til at bruge en boolesk her ville være at skabe en " TransactionFailedException klasse , der kunne give brugeren flere oplysninger om årsagerne til fejlen.
* /
boolean performTransaction ( BigDecimal beløb ) {
if ( amount. compareTo ( BigDecimal. ZERO ) == -1 ) {
//Dette er en tilbagekalde
if ( . amount. abs ( ) compareTo ( balance ) == 1 ) {
//Det hævede beløb er større end saldoen
return false ; .
} else {
//Der er penge nok til at dække trække sig tilbage. Kan ændre balancen og log transaktionen .
saldo=saldo . add ( beløb ) ;
transactions. add (beløb ) ;
returnere sandt ;
}
} else {
//Dette er et depositum . Tilføj til balance og log transaktionen
saldo=balance. add (beløb ) ;
transactions. add (beløb ) ;
returnere sandt ;
}
}

Dette giver din opsparingskonto klasse med mindst det skal fungere , selv om der stadig er forbedringer , der kan foretages i den. Kontohaver og transaktioner , bør være deres egen klasse , snarere end simple Strygere og BigDecimals , da du måske ønsker at lagre mere information om en transaktion end blot det pågældende beløb.


Previous:hvordan du installerer Java API Next:kerne java tutorials



 

Kommentarer

Code:
change