Բանկային հաշիվներ
Ենթադրենք՝ դուք առաջնակարգ բանկում ծրագրային ապահովման մաստագետ եք: Բանկը նպատակ է դրել՝ բարելավելու իր backend (սերվերներ, տվյալների շտեմարաններ, ծրագրի արտաքին տեսքի հետ կապ չունեցող) համակարգը, և ձեր խնդիրն է՝ նախագծել և ստեղծել նոր class-ներ՝ տարբեր տեսակի բանկային հաշիվներ ներկայացնելու համար:
Բանկն իր հաճախորդներին առաջարկում է երկու տեսակի հաշիվներ՝ ընթացիկ և խնայողական: Երկու տեսակի հաշիվներն էլ հաճախորդներին հնարավորություն են տալիս գումար մուտքագրել և գումար դուրս բերել: Բայց հաշիվներից յուրաքանչյուրն ունի իր առանձնահատկությունները: Չեկային հաշիվներն ունեն օվերդրաֆտի սահմանաչափ, որը թույլ է տալիս հաճախորդներին գումար հանել իրենց ընթացիկ մնացորդից՝ չհատելով օվերդրաֆտի սահմանաչափը: Խնայողական հաշիվները տոկոսներ են ստանում՝ ըստ տարեկան տոկոսադրույքի:
Ձեզ խնդրում են ստեղծել Python-ի երեք class՝
BankAccount
, CheckingAccount
և SavingsAccount
: Դրանցից բոլորը պետք է ստեղծվելուց ունենան սկզբնական balance
արժեք, որը կլինի այդ հաշվին եղած սկզբնական գումարը։BankAccount
class-ը պետք է ունենա երկու մեթոդ՝deposit
ևwithdraw
:deposite
մեթոդը պետք է ավելացնի մնացորդը դեպոզիտ արվող գումարի չափով:withdraw
մեթոդը պետք է նվազեցնի մնացորդը՝ դուրսբերման ենթակա գումարի չափով: Գործողությունը կատարելուց հետո երկուսն էլ պետք է տպեն վերջնական հաշվեկշիռը՝ հետևյալ ձևաչափով՝Balance: <X>
։ Եթե հաշվի վրա բավարար միջոցներ չկան, ծրագիրը պետք է տպի՝Insufficient funds.
(անբավարար միջոցներ)։
CheckingAccount
class-ը պետք է ժառանգիBankAccount
-ից և ավելացնի լրացուցիչ ատրիբուտ՝overdraft_limit
:CheckingAccount
-ումwithdraw
մեթոդը պետք է փոփոխվի, որպեսզի հաճախորդները կարողանան գումար հանել իրենց ընթացիկ մնացորդից՝ չհատելով օվերդրաֆտի սահմանաչափը: Եթե դուրս բերվող գումարը գերազանցում է օվերդրաֆտի սահմանաչափը, ծրագիրը պետք է տպի՝Withdrawal exceeds overdraft limit.
։
SavingsAccount
class-ը նույնպես պետք է ժառանգիBankAccount
-ից: Այն պետք է ավելացնի հավելյալ ատրիբուտ՝annual_percentage_yield
և մեթոդ՝calculate_returns
, որը հաշվարկում է խնայված գումարի եկամտաբերությունը՝ հիմնվելովannual_percentage_yield
-ի վրա:calculate_returns
մեթոդը պետք է ելքում տպի շահույթը՝ հետևյալ ձևաչափով՝Returns: X
։
Հաշիվների մնացորդը երբեք չպետք է բացասական լինի (բացառությամբ
CheckingAccount
-ի, որտեղ մնացորդը կարող է լինել բացասական՝ չգերազանցելով օվերդրաֆտի սահմանաչափը):Մուտք | Ելք |
check = CheckingAccount(500, 100); check.deposit(200); check.withdraw(800); saving = SavingsAccount(500, 0.05); saving.calculate_returns() | Balance: 700
Balance: -100
Returns: 25 |
Constraints
Time limit: 1 seconds
Memory limit: 512 MB
Output limit: 1 MB