Cách xây dựng hệ thống ngân hàng trực tuyến đơn giản với OOP Python

Lập trình hướng đối tượng (OOP) trong Python là một khái niệm cơ bản trong công nghệ phần mềm cho phép thiết kế cấu trúc mã theo cách có tổ chức và mô-đun hơn.

Python, với cú pháp rõ ràng và ngắn gọn, là một ngôn ngữ tuyệt vời để học và triển khai các nguyên tắc OOP. Trong bài viết này, chúng ta sẽ xem xét những điều cơ bản về OOP trong Python bằng cách xây dựng một hệ thống ngân hàng trực tuyến đơn giản.

Tổng quan về các khái niệm OOP Python

Trước khi bắt đầu viết mã, hãy hiểu các khái niệm chính của OOP:

  • Lớp (Classes): Lớp là bản thiết kế để tạo đối tượng. Chúng định nghĩa các thuộc tính (dữ liệu) và các phương thức (hàm) mà các đối tượng của lớp đó sẽ có.
  • Đối tượng (Objects): Đối tượng là thể hiện của các lớp. Chúng đại diện cho các thực thể trong thế giới thực và đóng gói dữ liệu cũng như hành vi.
  • Kế thừa (Inheritance): Kế thừa cho phép một lớp (lớp con) kế thừa các thuộc tính và phương thức từ một lớp khác (siêu lớp). Nó thúc đẩy việc tái sử dụng mã và hỗ trợ các mối quan hệ phân cấp giữa các lớp.
  • Hàm tạo (Constructor): Hàm tạo ( __init__()) là một loại phương thức đặc biệt được gọi tự động khi một đối tượng của lớp được tạo. Mục đích chính của nó là khởi tạo đối tượng mới được tạo, đặt giá trị ban đầu cho các thuộc tính của nó hoặc thực hiện bất kỳ tác vụ thiết lập cần thiết nào.

Cách xây dựng hệ thống ngân hàng trực tuyến cơ bản

Hãy bắt đầu bằng cách tạo cấu trúc cơ bản cho hệ thống ngân hàng trực tuyến bằng cách sử dụng các nguyên tắc OOP.

Cách tạo một lớp và hàm tạo

Hãy tạo một lớp và khởi tạo lớp đó bằng hàm tạo:

class Account:
    def __init__(self, name, account_number, balance):
        self.name = name
        self.account_number = account_number
        self.balance = balance

Trong ví dụ trên:

  • Từ khóa class khai báo một lớp tên là Account.
  • Phương thức __init__() là hàm tạo, được xác định bằng ký hiệu gạch dưới kép đặc biệt ở đầu và cuối.
  • self là một tham chiếu đến thể hiện của lớp. Nó là tham số đầu tiên của tất cả các phương thức phiên bản trong Python.
  • name là tên chủ tài khoản.
  • account_number  là mã định danh duy nhất cho tài khoản tiết kiệm và balance là các tham số được truyền cho hàm tạo.
  • Bên trong hàm tạo self.nameself.account_number, và self.balance là các thuộc tính của lớp Account được khởi tạo với các giá trị tương ứng là nameaccount_number và balance.

Trình tự xây dựng có thể thực hiện nhiều tác vụ khác nhau như khởi tạo thuộc tính, mở kết nối, tải dữ liệu, v.v. Chúng rất cần thiết để đảm bảo rằng các đối tượng được thiết lập đúng cách và sẵn sàng để sử dụng ngay khi chúng được tạo.

Cách tạo phương thức (hàm)

Việc tiếp theo cần làm là viết các phương thức khác nhau cho lớp Account. Người dùng sẽ có thể gửi và rút tiền.

Cách tạo phương thức gửi tiền

    def deposit(self, amount):
        self.balance += amount
        print(f"{self.name} Deposited {amount} $. Current balance is: {self.balance}")

Trong ví dụ trên:

  • Phương thức này deposit cho phép người dùng thêm tiền vào tài khoản của họ.
  • Phương thức này lấy thêm một tham số amount, đó là số tiền cần gửi.
  • Bên trong phương thức, số tiền này amount được thêm vào số dư hiện tại bằng cách sử dụng self.balance += amount.
  • Một thông báo được in hiển thị tên người gửi tiền và số tiền gửi và số dư được cập nhật.

Cách tạo phương thức rút tiền

    def withdraw(self, amount):
        if self.balance >= amount:
            self.balance -= amount
            print(f"{self.name} Withdrew {amount} $. Current balance is: {self.balance}")
        else:
            print("You don't have enough funds to withdraw.")

Trong ví dụ trên:

  • Phương thức này withdraw cho phép người dùng rút tiền từ tài khoản của họ.
  • Phương thức này cũng lấy một amount tham số là số tiền mà người dùng của chúng tôi muốn rút.
  • Phương thức này kiểm tra xem số dư tài khoản (self.balance) có lớn hơn hoặc bằng số tiền mà người dùng của chúng tôi muốn rút hay không.
  • Nếu số dư đủ, số tiền rút sẽ được xóa khỏi số dư bằng cách sử dụng self.balance -= amount.
  • Nếu số dư không đủ, sẽ xuất hiện thông báo “Bạn không có đủ tiền để rút” được in ra cho người dùng.

Cách thức hoạt động của tính kế thừa

Đã giải thích tính kế thừa ở trên, hãy xem cách nó hoạt động trong mã. Chúng ta sẽ tạo một lớp kế thừa lớp Account.

Lưu ý rằng lớp Account là lớp chính, còn Savings_Account lớp là lớp con.

class Savings_Account(Account):
    def __init__(self, name, account_number, balance, interest_rate):
        super().__init__(name, account_number, balance)
        self.interest_rate = interest_rate

Trong đoạn mã trên:

  • Phương thức __init__ là hàm tạo của lớp Savings_Account.
  • Nó có bốn tham số: name là tên của chủ tài khoản,  account_number là số nhận dạng duy nhất cho tài khoản tiết kiệm, balance là số dư ban đầu của tài khoản và interest_rate là lãi suất hàng năm (được biểu thị bằng số thập phân).
  • Đoạn mã super().__init__(name, account_number, balance) gọi hàm tạo của lớp cha (Account) để khởi tạo số tài khoản và số dư.
  • Đoạn mã self.interest_rate = interest_rate đặt lãi suất cụ thể cho tài khoản tiết kiệm. nó không được kế thừa

Cách tạo phương thức add_interest

def add_interest(self):
    interest = self.balance * self.interest_rate
    self.deposit(interest)

Trong ví dụ trên:

  • Phương thức add_interest tính toán và cộng lãi vào số dư tài khoản.
  • Phương pháp tính lãi bằng cách nhân số dư hiện tại (self.balance) với lãi suất (self.interest_rate).
  • Kết quả được lưu trữ trong interest biến.
  • Cuối cùng, self.deposit(interest) phương thức deposit (được xác định trong lớp cha Account) để thêm số tiền lãi vào số dư tài khoản.

Cách tạo và sử dụng đối tượng

Bây giờ, hãy tạo các đối tượng từ các lớp của chúng ta và tương tác với chúng.

account1 = Account("John Doe", "123456", 1000)
account1.deposit(500)
account1.withdraw(200)
print()

savings_account = Savings_Account("John Doe", "789012", 2000, 0.05)
savings_account.deposit(1000)
savings_account.add_interest()
savings_account.withdraw(500)
savings_account.withdraw(1000)

Ví dụ của lớp Tài khoản

Trong đoạn mã trên:

  • Chúng ta đã tạo một đối tượng account1 của lớp Account và thực hiện các hoạt động gửi và rút tiền.
  • Tương tự, tạo một thể hiện savings_account của lớp Savings_Account và thể hiện các hoạt động gửi tiền, cộng lãi và rút tiền.

Phần kết luận

Lập trình hướng đối tượng là một mô hình mạnh mẽ cho phép các kỹ sư phần mềm viết mã có thể tái sử dụng, bảo trì và có thể mở rộng quy mô. Tính đơn giản của Python khiến nó trở thành một lựa chọn tuyệt vời để học và triển khai các khái niệm OOP.

Bằng cách xây dựng một hệ thống ngân hàng trực tuyến đơn giản, đã chỉ cho bạn các khái niệm cơ bản về lớp, đối tượng và tính kế thừa trong Python.