Commit 28a2742b by Patryk Czarnik

Klasa Konto

parent f28c5957
package p02_obiekty;
/* To jest klasa wyjątku.
* Jeśli dziedziczymy z Exception, to wyjątek będzie "sprawdzany" przez kompilator ("checked")
* - gdy wystąpi w kodzie, to TRZEBA go wyłapać lub zadeklarować za pomocą throws.
* Jeśli dziedziczymy z RuntimeException (lub także z Error), to wyjątek nie będzie sprawdzany przez kompilator
* (będzie "unchecked") - nie ma obowiązku wyłapywania go lub deklarowania, ale istnieje taka możliwość.
*/
public class BrakSrodkow extends Exception {
public BrakSrodkow(String message) {
super(message);
}
}
package p02_obiekty;
public class Konto {
private final int numer;
private int saldo;
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;
}
public int getNumer() {
return numer;
}
public int getSaldo() {
return saldo;
}
public Osoba getWlasciciel() {
return wlasciciel;
}
public void setWlasciciel(Osoba wlasciciel) {
this.wlasciciel = wlasciciel;
}
@Override
public String toString() {
return "Konto nr " + numer + ", saldo " + saldo + ", wł. " + wlasciciel;
}
public void wplata(int kwota) {
if(kwota <= 0) {
throw new IllegalArgumentException("kwota wpłaty nie jest dodatnia");
}
saldo += kwota;
// aby zabezpieczyć się przed IntegerOveflow,
// można by użyć saldo = Math.addExact(saldo, kwota);
}
public void wyplata(int kwota) throws BrakSrodkow {
if(kwota <= 0) {
throw new IllegalArgumentException("kwota wypłaty nie jest dodatnia");
}
if(kwota > saldo) {
throw new BrakSrodkow("Za mało kasy");
}
saldo -= kwota;
}
public void przelew(Konto inne, int kwota) throws BrakSrodkow {
if(kwota <= 0) {
throw new IllegalArgumentException("kwota przelewu nie jest dodatnia");
}
if(kwota > saldo) {
throw new BrakSrodkow("Za mało kasy");
}
this.saldo -= kwota;
inne.saldo += kwota;
}
}
package p02_obiekty;
import java.time.LocalDate;
import java.time.Period;
public class Osoba {
private String imie;
private String nazwisko;
private final LocalDate dataUrodzenia;
public Osoba(String imie, String nazwisko, LocalDate dataUrodzenia) {
if(nazwisko == null) {
throw new NullPointerException("nazwisko is null");
}
this.imie = imie;
this.nazwisko = nazwisko;
this.dataUrodzenia = dataUrodzenia;
}
public Osoba(String imie, String nazwisko, String dataUrodzenia) {
this(imie, nazwisko, LocalDate.parse(dataUrodzenia));
}
public String getImie() {
return imie;
}
public String getNazwisko() {
return nazwisko;
}
public int getWiek() {
Period p = Period.between(dataUrodzenia, LocalDate.now());
return p.getYears();
}
public LocalDate getDataUrodzenia() {
return dataUrodzenia;
}
public void setImie(String imie) {
this.imie = imie;
}
public void setNazwisko(String nazwisko) {
if(nazwisko == null) {
throw new NullPointerException("nazwisko is null");
}
this.nazwisko = nazwisko;
}
@Override
public String toString() {
return "Osoba [imie=" + imie + ", nazwisko=" + nazwisko + ", dataUrodzenia=" + dataUrodzenia + ", wiek="
+ getWiek() + "]";
}
}
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