Mam do zrobienia następujące zadanie. Zrobiłem wszystko po za metodą aktualizuj()
oraz metodą rekord. Poniżej przesyłam treść zadania i swój kod. Bardzo proszę o prześledzenie kodu i poprawienie ewentualnych błędów
public class Bank {
public static void main(String[] args)
{
Osoba klient1 = new Osoba("jan"), klient2 = new Osoba("anna");
Osoba[] klienci = new Osoba[] {klient1, klient2, new Osoba("maria")};
for (Osoba o : klienci)
System.out.print(o + " ");
System.out.println("\n");
Rachunek konto1 = new Rachunek(klient1);
Rachunek konto2 = new Konto(klient2, 2); // oprocentowanie: 2%
Rachunek[] konta = {konto1,
konto2,
new KontoVIP(klienci[2], 5, -100)}; // oprocentowanie: 5%, limit debetu: -100
konto1.wplata(500);
konto2.wplata(900);
konto2.wyplata(300);
konto1.przelew(konto2, 200);
for (Rachunek k : konta)
System.out.println(k);
System.out.println();
konta[2].wyplata(101);
konto2.przelew(konta[2], 801);
System.out.println();
konto2.przelew(konta[2], 700);
konta[2].przelew(konto1, 801);
System.out.println();
konta[2].przelew(konto1, 800);
for (Rachunek k : konta)
System.out.println(k);
System.out.println();
for (Rachunek k : konta)
k.aktualizuj();
System.out.println();
// własna metoda rekord(...) z klasy Bank do napisania!
System.out.println("Konto z największym stanem - " + rekord(konta));
}
}
wyprowadził na konsolę poniższe wyniki:
jan anna maria
Konto nr 1: jan, stan 300.0
Konto nr 2: anna, stan 800.0, oprocentowanie 2.0
Konto nr 3: maria, stan 0.0, oprocentowanie 5.0, limit debetu -100.0
Konto nr 3: maria, stan 0.0, oprocentowanie 5.0, limit debetu -100.0 - nie dozwolona operacja: wypłata!
Konto nr 2: anna, stan 800.0, oprocentowanie 2.0 - nie dozwolona operacja: przelew!
Konto nr 3: maria, stan 700.0, oprocentowanie 5.0, limit debetu -100.0 - nie dozwolona operacja: przelew!
Konto nr 1: jan, stan 1100.0
Konto nr 2: anna, stan 100.0, oprocentowanie 2.0
Konto nr 3: maria, stan -100.0, oprocentowanie 5.0, limit debetu -100.0
Konto nr 1: jan, stan 1100.0
Konto nr 2: anna, stan 102.0
Konto nr 3: maria, stan -100.0 - ilość prób przekroczenia debetu 2!
Konto z największym stanem - Konto nr 1: jan, stan 1100.0
Test
public class Zadanie3 {
public static void main(String[] args)
{
Osoba klient1 = new Osoba("jan"), klient2 = new Osoba("anna");
Osoba[] klienci = new Osoba[] {klient1, klient2, new Osoba("maria")};
for (Osoba o : klienci)
System.out.print(o + " ");
System.out.println("\n");
Rachunek konto1 = new Rachunek(klient1);
Rachunek konto2 = new Konto(klient2, 2); // oprocentowanie: 2%
Rachunek[] konta = {konto1,
konto2,
new KontoVIP(klienci[2], 5, -100)}; // oprocentowanie: 5%, limit debetu: -100
konto1.wplata(500);
konto2.wplata(900);
konto2.wyplata(300);
konto1.przelew(konto2, 200);
for (Rachunek k : konta)
System.out.println(k);
System.out.println();
konta[2].wyplata(101);
konto2.przelew(konta[2], 801);
System.out.println();
konto2.przelew(konta[2], 700);
konta[2].przelew(konto1, 801);
System.out.println();
konta[2].przelew(konto1, 800);
for (Rachunek k : konta)
System.out.println(k);
System.out.println();
for (Rachunek k : konta)
k.aktualizuj();
System.out.println();
// własna metoda rekord(...) z klasy Bank do napisania!
// System.out.println("Konto z największym stanem - " + rekord(konta));
}
}
Klasa osoba
public class Osoba {
protected String imie;
public Osoba(String imie) {
this.imie = imie;
}
public Osoba(){
}
@Override
public String toString() {
return imie;
}
}
Klasa rachunek
public class Rachunek {
protected Osoba wlasciciel;
protected int stan;
static int numerek;
public int num;
public Rachunek(Osoba klient) {
wlasciciel = klient;
stan=0;
num=++numerek;
}
public void wplata(int i) {
this.stan +=i;
}
public void wyplata(int i) {
if(stan<i)
System.out.println(toString()+ " - nie dozwolona operacja: wypłata!");
else
stan -=i;
}
@Override
public String toString() {
return "Konto numer: " + num+ " " + wlasciciel + " stan = " +stan;
}
public void przelew(Rachunek konto2, int ile) {
if(stan<ile)
System.out.println(toString()+ " - nie dozwolona operacja: przelew!");
else
{
konto2.stan += ile;
stan -= ile;
}
}
}
Klasa konto
public class Konto extends Rachunek {
protected double procent;
static int numer;
public int nr;
public Konto(Osoba klient) {
super(klient);
nr = ++numer;
}
public Konto(Osoba klient2, int i) {
super(klient2);
procent = i;
nr = ++numer;
}
public void getNumber(){
System.out.print(nr);
}
@Override
public String toString() {
return "Konto numer: "+ super.num + " " + super.wlasciciel + " stan = " +stan + " Oprocentowanie " + procent;
}
@Override
public void aktualizuj()
{
super.stan *= procent;
}
}
Klasa konto VIP
public class KontoVIP extends Konto {
private int debet;
public KontoVIP(Osoba osoba, int i, int j) {
super(osoba);
super.procent = i;
debet = j;
super.nr = ++super.numer;
}
@Override
public String toString() {
return "Konto numer: "+ super.num + " " + super.wlasciciel
+ " stan = " +stan + " Oprocentowanie " + procent + " limit debetu "
+ debet;
}
@Override
public void wyplata(int i) {
if((stan-debet)<i)
System.out.println(toString()+ " - nie dozwolona operacja: wypłata!");
else
stan -=i;
}
@Override
public void przelew(Rachunek konto2, int ile) {
if((stan-debet)<ile)
System.out.println(toString()+ " - nie dozwolona operacja: przelew!");
else
{
konto2.stan += ile;
stan -= ile;
}
}
@Override
public void aktualizuj()
{
super.stan *= super.procent;
}
}