Bankkonto - övning Övningar att göra efter lärardemostration. Filen bankkonto.zip innehåller ett projekt med klassen Bankkonto. Zippa upp denna fil och öppna projektet i BlueJ och skriv vidare på klassen Bankkonto. Källkoden återfinns även på följande sidor. Efter övning 4 finns en genom gång av klassens innehåll samt av klass- och objektdiagram. Övning 1 Skriv en metod, ändraräntan som tar en parameter nyränta. Parametern är av typen double. När metoden används ska räntan få det värde som bifogas metoden. Bankkonto double saldo double ränta String kontoinnehavare void insättning(double belopp) double getsaldo() boolean uttag(double belopp) void geavkastning() void ändraränta(double nyränta) double getränta() getkontoinnehavare() Ovan visas ett klassdiagram för klassen Bankkonto. Nya fält och metoder som du skall skriva är markerade med kursiv stil. Övning 2 Skriv en metod, geträntan, som returnerar räntan. Övning 3 Namnet på kontoinnehavaren ska höra ihop med kontot. Gör detta på följande sätt. Lägg till ett fält kontoinnehavare. Fältet ska vara av typen String. På samma sätt som fältet ränta får sitt värde via konstruktorn ska det nya fältet kontoinnehavare få sitt värde via konsruktorn. Syntax för flera parametrar i konsruktorn: Bankkonto(datatyp parameterett, datatyp parametertvå) Övning 4 Skriv en metod, getkontoinnehavare som returnerar kontoinnehavarens namn. Teori En klass består av: fält konstruktor metoder Nedan följer en genomgång av klassens olika delar. Nedanför genomgången visas koden för klassen Bankkonto i sin helhet. Fält I koden återfinns fälten saldo och ränta. Fältet saldo deklareras genom att man skriver private double saldo; Ett fält är en plats där man kan spara information. I exemplet ovan kan ett decimaltal (double) sparas i fältet med namnet saldo. En mer detaljerad förklaring följer nedan. 1
Nyckelordet private skall alltid användas förs i fältdeklarationen. Det gör att koden vacker och funktionell. Mer om detta vid ett senare tillfälle. Efter nyckelordet private följer datatypen. I detta fallet är datatypen double (ett decimaltal). Sist i fältdeklarationen följer namnet på fältet. I vårt fall saldo. Konstruktor Konstruktorn visas i sin helhet nedan. Konstruktorn anroppas varje gång som ett objekt av klassen skapas. Ett konstruktoranrop ser ut som följer: new Bankkonto(2.3); Ovanstående anrop skapar ett bankkonto med räntan 2,3%. Man skickar alltså med räntan (2,3) när man skapar kontot. (Jämför med matematikens funktioner, f(x), f(2,3).) Nedan visas konstruktorhuvudet. I konstruktorhuvudet är det inuti parentesen som det anges att man ska skicka med räntan. Nyckelordet double anger att det är ett decimaltal som ska skickas med och i parametern (variabeln) nyränta sparas räntan som skickas med i anropet. Resten som händer i konstruktorn visas på raderna nedan. På den översta raden ges fältet saldo värdet 0. På den andra raden får fältet ränta värdet av parametern (variabeln) nyränta. När konstrukoranropet är klart har nedanstående objekt skapats. :Bankkonto saldo ränta 0 2,3 Metoder I koden finns metoderna insättning, getsaldo, uttag och geavkastning. 2
Låt oss gå igenom en metod i taget. Vi börjar med metoden getsaldo. getsaldo Metoden följer i sin helhet nedan. public double getsaldo() Nyckelordet public anger att metoden ska kunna användas utanför klassen. Mer om det vid ett senare tillfälle. Nyckelordet double anger att metoden returnerar ett decimaltal. Raden anger att det är värdet på fältet saldo som returneras. insättning Metoden insättning visas i sin helhet nedan. public void insättning(double belopp) När man sätter in ett belopp ökas kontots saldo med angivet belopp. Nyckelordet void betyder att metoden inte ska returnera något. Den utför något utan att lämna ifrån sig ett resultat. Nyckelordet void kan jämföras med nyckelordet double i metoden getsaldo. Koden är likvärdig med koden saldo = saldo + belopp; geavkastning Metoden geavkastning följer i sin helhet nedan. public void geavkastning() double avkastning; avkastning = saldo ränta / 100; avkastning är en lokal variabel. Variabeln kan spara ett decimaltal (double). På raden avkastning = saldo ränta / 100; får den lokala variabeln avkastning värdet av saldo gånger ränta genom etthundra, d.v.s. avkastningen för ett år. På raden ökas fältet saldo med värdet hos variabeln avkastning. 3
uttag Slutligen följer metoden uttag i sin helhet. public boolean uttag(double belopp) if (saldo >= belopp) //tillräckligt med pengar finns på kontot saldo -= belopp; return true; else //tillräckligt med pengar finns ej på kontot return false; Nyckelordet boolean anger att metoden kommer returnera antingen värdet sant eller falskt. Det som är nytt i denna metod är if-satsen. Ett flödesschema för if-satsen visas nedan. Följ pilarna. Är saldo >= belopp? nej ja saldo minskas med belopp det finns ej tillräcklig med pengar returnerar sant returnerar falskt Nedan följer koden för klassen Bankkonto. Ett bankkonto @author Rikard Karlsson @version 2006-08-24 public class Bankkonto //fält private double saldo; //saldo på kontot private double ränta; //ränta i procent 4
//konstruktor Skapa ett objekt av klassen Bankkonto @param nyränta räntan som kontot ska ge //metoder Sätt in pengar på kontot @param belopp antal kronor som sätts in public void insättning(double belopp) @return saldot på kontot public double getsaldo() Gör ett uttag från kontot @param belopp antal kronor som ska tas ut @return Sant (true) om tillräckligt med pengar för kontot. Falskt (false) om det inte finns tillräckligt med pengar på kontot. public boolean uttag(double belopp) if (saldo >= belopp) //tillräckligt med pengar finns på kontot saldo -= belopp; return true; else //tillräckligt med pengar finns ej på kontot return false; Beräkna den årliga avkastningen i kronor och sätt in den på kontot. public void geavkastning() double avkastning; avkastning = saldo ränta / 100; 5