Syfte: | Övning på sammansatta klasser, referenser och arrayer av objekt. |
Att göra innan labben: | Se föreläsning 7 och 8 och lektion 7 och 8. |
Redovisning: | Skriftlig redovisning av klassen Bankkund med kommenterad kod, programkörningar och svar på frågorna, senast 3 dagar efter laborationstillfället.
Obs! Denna skall lämnas in skriftligt. |
Bankkund
är en klass som förenklat beskriver en bankkund
som en person med namn, adress och telefonnummer. Bankkunden kan ha ett eller
flera bankkonton, maximalt 10 stycken. Varje bankkonto har ett nummer och ett
saldo. Skriv klassen Bankkund
. Du skall använda de färdiga
klasserna Person
, Bankkonto
och Banktest
som du inte behöver lämna in vid
redovisningen. Det är inte säkert att du kommer att använda alla metoder i
klasserna Person
och Bankkonto
när du skriver
klassen Bankkund
. Beskrivning av klassen
Bankkund
:
int
antal
visar hur många konton kunden har.
Bankkund
skall du kunna
Bankkund
motsvarar klassens uppgifter. Det betyder inte
att varje uppgift ska/behöver lösas i en i egen metod. Det betyder
inte heller att ni inte får lägga till ytterligare metoder.
Banktest
:s main
-metod skall
du börja med att skapa ett Bankkund
-objekt, dvs en
bankkund. Därefter skall metoden switcha
i Bankkund
-koden anropas.
En meny visas där du kan välja mellan olika
alternativ. main
-metoden kan t.ex. se ut som i exemplet
nedan. Ni bör inte utöka dess funktionalitet (lägga till nya saker).
public static void main(String [] arg) { Bankkund k = new Bankkund(); //Ett Bankkund-objekt skapas med //default-värden på namn, adress, telnr. k.nyKund(); //läser in namn, adress och telnummer mha //läsIn-metoden i Person-klassen k.switcha(); } //slut på main-metoden
Bankkund
kommer här ett förslag till metoden switcha
(OBS! Det går lika bra att använda if
och else
i stället för en switch
-sats):
public void switcha() { Scanner scan = new Scanner(System.in); int val; skrivMeny(); val = scan.nextInt(); scan.nextLine(); while (val > 0) { switch (val) { case 1: nyttKonto(); break; case 2: sättIn(); break; case 3: ... default: System.out.println("Felaktigt val. Försök igen."); } skrivMeny(); val = scan.nextInt(); scan.nextLine(); } System.out.println("Tack för idag!"); }
skrivMeny
:
public void skrivMeny() { System.out.println("\n\nMeny: \n"); System.out.println("0. Avsluta. \n"); System.out.println("1. Skapa nytt konto."); System.out.println("2. Sätta in pengar."); System.out.println("3. Ta ut pengar."); System.out.println("4. Byta adress på kunden."); System.out.println("5. Ta bort konto."); System.out.println("6. Saldobesked"); System.out.println("7. Skriva ut info om kunden."); //person- och kontoinfo }
public void nyttKonto() { Scanner scan = new Scanner(System.in); int knr, ... System.out.println("Vilken summa skall sättas in? "); summa = scan.nextDouble(); scan.nextLine(); knr = (int) (Math.random() * 100000); //Vi slarvar och slumpar //ett kontonummer utan koll ... } public void sättIn() { Scanner scan = new Scanner(System.in); int knr,... System.out.println("Välj ett av följande konton: "); skrivKonton(); //skriver ut konotnummer och saldo knr = scan.nextInt(); //välj ett konto System.out.println("Vilken summa skall sättas in?"); pengar = scan.nextDouble(); scan.nextLine(); ... }
Bankkund k
med i klassdiagrammet för Banktest?
while
-loopen i metoden switcha
ovan?
Bankkonto
fungerar.
Bankkonto
. Antag att klassen är kompilerad utan fel.
Bankkonto
:s metod jämförSaldo
fungerar. (Hur kan man veta vilka saldon som jämförs?)
födaBarn
i klassen Person
kan se ut.