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.name
,self.account_number
, vàself.balance
là các thuộc tính của lớpAccount
được khởi tạo với các giá trị tương ứng làname
,account_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ụngself.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ớpSavings_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ứcdeposit
(được xác định trong lớp chaAccount
) để 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ớpAccount
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ớpSavings_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.
RELATED Posts