forked from Yandex-Practicum/Java-Module-Project-YP
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBankAccount.java
More file actions
145 lines (123 loc) · 7.23 KB
/
BankAccount.java
File metadata and controls
145 lines (123 loc) · 7.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
class BankAccount {
protected int amount;
protected String currency;
public void replenishBalance(int amount) {
this.amount += amount;
System.out.println("Счет пополнен на " + amount + " " + currency);
}
public void withdrawCash(int amount) {
}
public void showBalance() {
}
}
class DebitAccount extends BankAccount {
public DebitAccount(int amount, String currency) {
if (amount < 0) {
System.out.println("Баланс дебетового счета не может быть меньше 0");
} else {
this.amount = amount;
this.currency = currency;
}
}
@Override
public void withdrawCash(int amount) {
if (amount > this.amount) {
System.out.println("У вас недостаточно средств для снятия суммы " + amount + " " + currency);
} else {
this.amount -= amount;
System.out.println("Вы сняли " + amount + " " + currency);
}
}
@Override
public void showBalance() {
System.out.println("На вашем счету осталось " + amount + " " + currency);
}
}
class CreditAccount extends BankAccount {
public int creditLimit;
public CreditAccount(int amount, String currency, int creditLimit) {
this.amount = amount;
this.currency = currency;
this.creditLimit = creditLimit;
}
@Override
public void withdrawCash(int amount) {
if (this.amount - amount < -creditLimit) {
System.out.println("У вас недостаточно средств для снятия суммы " + amount + " " + currency);
} else {
this.amount -= amount;
System.out.println("Вы сняли " + amount + " " + currency);
}
}
@Override
public void showBalance() {
if (amount >= 0) {
System.out.println("На вашем счету " + amount + " " + currency);
} else {
System.out.println("Ваша задолженность по кредитному счету составялет " + Math.abs(amount) + currency);
}
}
}
class Bank {
private int getDefaultLimit(String currency) {
if(currency.equals("RUB"))
return 100000;
if(currency.equals("USD"))
return 1250;
if(currency.equals("EUR"))
return 1000;
return 0;
}
public BankAccount createNewAccount(String type, String currency) {
if(type.equals("debit_account")) {
System.out.println("Ваш дебетовый счет создан");
return new DebitAccount(0, currency);
}
int creditLimit = getDefaultLimit(currency);
if(type.equals("credit_account")) {
System.out.println("Кредитный счет создан. Ваш лимит по счету " + creditLimit + " " + currency);
return new CreditAccount(0, currency, creditLimit);
}
System.out.println("Неверно указан тип создаваемого счета");
return new BankAccount();
}
// создать метод createNewAccount, который принимает на вход строку с типом аккаунта и строку с создаваемой валютой
// если тип "debit_account"
// вывести сообщение "Ваш дебетовый счет создан"
// создать дебетовый аккаунт в выбранной валюте и с нулевым балансом
// если тип "credit_account"
// посчитать кредитный лимит в зависимости от валюты
// вывести сообщение "Кредитный счет создан. Ваш лимит по счету {limit} {currency}"
// создать кредитный аккаунт в выборанной валюты и с посчитанным кредитным лимитом
// иначе
// вывести сообщение "Неверно указан тип создаваемого счета"
// создать пустой объект BankAccount()
public void closeAccount(BankAccount account) {
if(account instanceof DebitAccount) {
if(account.amount == 0)
System.out.println("Ваш дебетовый счет закрыт");
else {
System.out.println("Ваш дебетовый счет закрыт. Вы можете получить остаток по вашему счету в размере " + account.amount + " " + account.currency + " в отделении банка");
}
} else
if(account instanceof CreditAccount) {
if (account.amount == 0)
System.out.println("Ваш кредитный счет закрыт");
else if(account.amount > 0)
System.out.println("Ваш кредитный счет закрыт. Вы можете получить остаток по вашему счету в размере " + account.amount + " " + account.currency + " в отделении банка");
else
System.out.println("Вы не можете закрыть кредитный счет потому как на нем еще есть задолженность. Ваша задолженность по счету составляет " + Math.abs(account.amount) + " " + account.currency);
} else {
System.out.println("Пока что мы не можем закрыть данный вид счета");
}
}
// создать метод closeAccount, который принимает на вход переменную типа BankAccount
// если переданный аккаунт дебетовый
// если на счету нет денег вывести сообщение "Ваш дебетовый счет закрыт"
// иначе вывести сообщение "Ваш дебетовый счет закрыт. Вы можете получить остаток по вашему счету в размере {amount} {currency} в отделении банка"
// если переданный аккаунт кредитный
// если на счету нет денег вывести сообщение "Ваш кредитный счет закрыт"
// если на счету положительный баланс вывести сообщение "Ваш кредитный счет закрыт. Вы можете получить остаток по вашему счету в размере {amount} {currency} в отделении банка"
// если на счету отрицательный баланс вывести сообщение "Вы не можете закрыть кредитный счет потому как на нем еще есть задолженность. Ваша задолженность по счету составляет {amount} {currency}"
// иначе вывести сообщение "Пока что мы не можем закрыть данный вид счета"
}