Commit aabb4a29 by Patryk Czarnik

Konto - początek

parent 445ba9bf
package p11_enkapsulacja;
public class Konto {
private final int numer;
private int saldo;
private Osoba wlasciciel;
public Konto(int numer, int saldo, Osoba wlasciciel) {
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;
}
// Z dwóch różnych powodów nie tworzymy setterów dla pól
// - 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 void wplata(int kwota) {
saldo += kwota;
}
public void wyplata(int kwota) {
saldo -= kwota;
}
public void przelew(int kwota, Konto docelowe) {
saldo -= kwota;
docelowe.saldo += kwota;
// operacja na polu innego obiektu - dopuszczalna
}
}
...@@ -14,6 +14,12 @@ public class Osoba { ...@@ -14,6 +14,12 @@ public class Osoba {
this.dataUrodzenia = dataUrodzenia; this.dataUrodzenia = dataUrodzenia;
} }
public Osoba(String imie, String nazwisko, String dataUrodzenia) {
this.imie = imie;
this.nazwisko = nazwisko;
this.dataUrodzenia = LocalDate.parse(dataUrodzenia);
}
public Osoba(String imie, String nazwisko, int wiek) { public Osoba(String imie, String nazwisko, int wiek) {
this.imie = imie; this.imie = imie;
this.nazwisko = nazwisko; this.nazwisko = nazwisko;
......
package p11_enkapsulacja;
import java.util.Scanner;
public class ProgramBankowy {
public static void main(String[] args) {
@SuppressWarnings("resource")
Scanner sc = new Scanner(System.in);
Osoba ala = new Osoba("Ala", "Kowalska", "1985-05-05");
System.out.print("Podaj początkową kwotę: ");
int kwota = sc.nextInt();
sc.nextLine(); // wymuszenie przejścia do nowej linii
Konto konto = new Konto(1, kwota, ala);
System.out.println(konto);
petla:
while(true) {
try {
System.out.println("Co chcesz zrobić? W - wpłata, Y - wypłata, K - koniec");
String wybor = sc.nextLine().toUpperCase();
switch(wybor) {
case "K", "Q":
break petla; // przejście do Koniec programu
case "W":
System.out.print("Podaj kwotę wpłaty: ");
kwota = sc.nextInt();
sc.nextLine();
konto.wplata(kwota);
System.out.println("Pieniądze zostały wpłacone");
break;
case "Y":
System.out.print("Podaj kwotę wypłaty: ");
kwota = sc.nextInt();
sc.nextLine();
konto.wyplata(kwota);
// ta linia wykona się tylko jeśli nie było wyjątku:
System.out.println("Pieniądze zostały wypłacone");
break;
default:
System.out.println("Nieznane polecenie");
continue petla; // Przejście do Co chcesz zrobić
}
// Jeśli o różnych sytuacjach błędnych będą informować wyjątki różnych klas,
// 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(Exception e) {
System.out.println("Inny błąd: " + e);
}
System.out.println();
System.out.println(konto);
System.out.println();
}
System.out.println("Koniec programu");
}
}
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