March 14
Пример объектно-ориентированной программы на Python
# Создайте класс BankAccount, представляющий банковский счет. # Класс должен иметь атрибуты для хранения баланса и статуса аккаунта # (открыт или закрыт). Затем создайте класс Customer, представляющий клиента банка. # Класс Customer должен содержать экземпляры класса BankAccount from enum import Enum class Currency(Enum): RUBLE = 0 USA_DOLLAR = 1 EURO = 2 SHEKEL = 3 class Status(Enum): INACTIVE = 0 ACTIVE = 1 FROZEN = 2 class BankAccount: id = 0 def __init__(self, currency: Currency) -> None: self.__balance = 0 self.__status = Status.ACTIVE self.__account_number = BankAccount.id self.__currency = currency BankAccount.id += 1 def get_balance(self) -> float: return self.__balance def get_account_number(self) -> int: return self.__account_number def get_status(self) -> Status: return self.__status def deposit(self, money: float) -> 'BankAccount': if self.__status == Status.ACTIVE: self.__balance += money return self def withdraw(self, money: float) -> 'BankAccount': if self.__status == Status.ACTIVE and self.__balance >= money: self.__balance -= money return self def change_status(self, status: Status) -> 'BankAccount': if self.__status != Status.INACTIVE: self.__status = status return self def activate(self) -> 'BankAccount': if self.__status != Status.INACTIVE: self.__status = Status.ACTIVE return self def deactivate(self) -> 'BankAccount': self.__status = Status.INACTIVE return self def freeze(self) -> 'BankAccount': if self.__status != Status.INACTIVE: self.__status = Status.FROZEN return self class Customer: def __init__(self, name: str, surname: str) -> None: self.__name = name self.__surname = surname self.__bank_accounts: list[BankAccount] = [] def add_bank_account(self, bank_account: BankAccount) -> 'Customer': self.__bank_accounts.append(bank_account) return self def remove_bank_account(self, bank_account: BankAccount) -> 'Customer': self.__bank_accounts.remove(bank_account) return self def get_bank_accounts(self) -> list[BankAccount]: return self.__bank_accounts def main(): customer = Customer('Игорь', 'Плотников') customer.add_bank_account(BankAccount(Currency.RUBLE)) customer.add_bank_account(BankAccount(Currency.EURO)) customer.get_bank_accounts()[0].deposit(250) customer.get_bank_accounts()[1].deposit(1000) customer.get_bank_accounts()[0].freeze() customer.get_bank_accounts()[0].withdraw(200) for bank_account in customer.get_bank_accounts(): print(bank_account.__dict__) if __name__ == '__main__': main()