Commit 4972be04 by Patryk Czarnik

wyjątki

parent b0133f2e
package p11_enkapsulacja;
public class BrakSrodkow extends Exception {
public BrakSrodkow() {
}
public BrakSrodkow(String message) {
super(message);
}
}
......@@ -6,6 +6,9 @@ public class Konto {
private Osoba wlasciciel;
public Konto(int numer, int saldo, Osoba wlasciciel) {
if(saldo < 0) {
throw new IllegalArgumentException("Ujemne saldo!");
}
this.numer = numer;
this.saldo = saldo;
this.wlasciciel = wlasciciel;
......@@ -31,21 +34,32 @@ public class Konto {
// - numer - ponieważ numer się nie zmienia (takie pole powinno być oznaczone final)
// - saldo - bo nie chce by ktoś ustawił wartość saldo "bez żadnego trybu",
// do zmiany salda bedą służyć dedykowane "metody biznesowe"
public boolean wplata(int kwota) {
if(kwota > 0) {
saldo += kwota;
return true;
} else {
return false;
public void wplata(int kwota) {
if(kwota <= 0) {
throw new IllegalArgumentException("Niedodatnia kwota wpłaty");
}
saldo += kwota;
// prawdę mówiąc, może jeszcze dojść do integer overflow; to ewentualnie można sprawdzać za pomocą Math.addExact
}
public void wyplata(int kwota) {
public void wyplata(int kwota) throws BrakSrodkow {
if(kwota <= 0) {
throw new IllegalArgumentException("Niedodatnia kwota wypłaty");
}
if(kwota > saldo) {
throw new BrakSrodkow("Mało kasy na koncie nr " + numer);
}
saldo -= kwota;
}
public void przelew(int kwota, Konto docelowe) {
saldo -= kwota;
public void przelew(int kwota, Konto docelowe) throws BrakSrodkow {
if(kwota <= 0) {
throw new IllegalArgumentException("Niedodatnia kwota przelewu");
}
if(kwota > this.saldo) {
throw new BrakSrodkow("Mało kasy na koncie nr " + numer);
}
this.saldo -= kwota;
docelowe.saldo += kwota;
// operacja na polu innego obiektu - dopuszczalna
}
......
......@@ -30,11 +30,8 @@ public class ProgramBankowy {
System.out.print("Podaj kwotę wpłaty: ");
kwota = sc.nextInt();
sc.nextLine();
if(konto.wplata(kwota)) {
System.out.println("Pieniądze zostały wpłacone");
} else {
System.out.println("Problem z wpłatą");
}
konto.wplata(kwota);
System.out.println("Pieniądze zostały wpłacone");
break;
case "Y":
System.out.print("Podaj kwotę wypłaty: ");
......@@ -53,8 +50,8 @@ public class ProgramBankowy {
// to w programie możemy te sytuacje rozróżnić i obsłużyć w róznych catchach
} catch(IllegalArgumentException e) {
System.out.println("Niepoprawny argument: " + e);
// } catch(BrakSrodkow e) {
// System.out.println(e.getMessage());
} catch(BrakSrodkow e) {
System.out.println(e.getMessage());
} catch(Exception e) {
System.out.println("Inny błąd: " + e);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment