Chúng ta sẽ cùng nhau tạo một ứng dụng quản lý sinh viên theo tinh thần lớp và đối tượng của lập trình hướng đối tượng.
Trước khi thật sự bắt đầu, chúng ta cùng nhau thử hình dung tổng thể ứng dụng sẽ có "hình hài" ra sao?
Phác thảo
- Thông thường sẽ có một danh sách sinh viên với tên, địa chỉ, điểm môn học...
- Người quản lý sẽ cần có những chức năng như thêm tên sinh viên, sửa thông tin, xóa một sinh viên khỏi danh sách, tìm kiếm sinh viên, sắp xếp sinh viên...
- Để người quản lý có thể thực hiện các chức năng trên, cần có một "cái gì đó" tương tự như bảng điều khiển với các lựa chọn tương ứng như Thêm, Xóa, Sửa, Sắp Xếp, Tìm Kiếm...
Cụ thể
Hãy nghĩ về lớp dựa trên phác thảo trên:
- Chúng ta sẽ cần tạo một lớp Sinh Viên với các thuộc tính tên, điểm...
- Chúng ta cũng cần một lớp Quản Lý Sinh Viên với các hàm Thêm, Xóa, Sửa, Sắp Xếp, Tìm Kiếm... Mỗi khi hàm được gọi nó sẽ thao tác thêm, xóa, tìm kiếm... với dữ liệu từ Đối tượng của Lớp Sinh Viên
- Bảng điều khiển không cần tạo lớp, đơn giản chỉ là một trang .py với các lựa chọn. Ví dụ khi cần thêm tên sinh viên, khi người sử dụng chọn chức năng Thêm thì trang điều khiển sẽ gọi Hàm thêm tên sinh viên từ lớp Quản Lý Sinh Viên
Đễ dễ dàng quản lý, chúng ta sẽ lưu mỗi lớp trong chương trình vào một file .py và đặt tên bảng điều khiển là main.py
Như vậy chúng ta sẽ có 3 file: main.py, SinhVien.py và QuanLySinhVien.py
Chúng ta sẽ bắt đầu từ lớp sinh viên.
Theo đúng phong cách từ đầu, chúng ta sẽ tạo một lớp SinhVien rất đơn giản, một lớp QuanLySinhVien với chỉ một hàm nhapSinhVien(), một trang main.py với chỉ một lựa chọn Nhập Tên Sinh viên và chạy thử. Nếu mọi thứ suôn sẻ, chúng ta sẽ mở rộng các chức năng.
Lớp SinhVien
Chúng ta sử dụng hàm _init_() để làm "bộ khung" cho lớp SinhVien.
Mở PyCharm lên, bấm vào File => New => Python File và đặt tên SinhVien.py
Tạo một class với tên là SinhVien như sau
class SinhVien:
def __init__(self, id, ten):
self.id = id
self.ten = ten
Bấm Run để chạy thử, đương nhiên sẽ không có gì "xuất hiện" chúng ta chỉ muốn thử coi mọi thứ có ổn không mà thôi.
Chúng ta tiếp tục bấm vào File => New => Python File và đặt tên QuanLySinhVien.py
Chúng ta sẽ tạo một class QuanLySinhVien, trước hết cần một danh sách các sinh viên và chúng ta cũng cần import lớp SinhVien
from SinhVien import SinhVien
class QuanLySinhVien:
listSinhVien = []
Bấm Run để chạy thử
Tiếp theo chúng ta bấm vào File => New => Python File và đặt tên Main.py
Main.py của chúng ta được sử dụng để khởi tạo menu và điều khiển chương trình quản lý sinh viên. Tức là khi người sử dụng vào chương trình quản lý sinh viên, màn hình đầu tiên họ thấy sẽ là Main.py với các menu để lựa chọn như: Thêm, Xóa, Tìm Kiếm...
Để quản lý, chúng ta cần import class QuanLySinhVien, sau đó chúng ta cần khởi tạo một đối tượng quản lý sinh viên.
from QuanLySinhVien import QuanLySinhVien
# khởi tạo một đối tượng QuanLySinhVien để quản lý sinh viên
qlsv = QuanLySinhVien()
Bấm Run để thử chương trình
Chúng ta khoan nói về menu lựa chọn trong file Main.py, chúng ta giả sử một cách đơn giản là khi ta Run Main.py thì đối tượng qlsv sẽ thực thi hàm nhapSinhVien()
Chúng ta sẽ cần viết hàm nhapSinhVien() để thêm tên sinh viên trong class QuanLySinhVien(). Trước hết chúng ta viết hàm đơn giản chỉ print một cái gì đó.
Đây là code cho lớp QuanLySinhVien()
from SinhVien import SinhVien
class QuanLySinhVien:
listSinhVien = []
def nhapSinhVien(self):
print("Hello")
Chuyển qua Main.py, chúng ta sẽ có lệnh gọi hàm nhapSinhVien(). Đây là code của Main.py
from QuanLySinhVien import QuanLySinhVien
# khởi tạo một đối tượng QuanLySinhVien để quản lý sinh viên
qlsv = QuanLySinhVien()
qlsv.nhapSinhVien()
Bấm Run để chạy Main.py
Như vậy là chúng ta đã thành công gọi một hàm từ class QuanLySinhVien().
Tiếp theo chúng ta cần hoàn thiện hàm nhapSinhVien()
Mỗi một sinh viên thêm vào chính là một đối tượng (Object) của lớp (Class) SinhVien. Vì vậy trước khi thật sự thêm tên sinh viên từ bàn phím, chúng ta sẽ tạo sẵn một đối tượng SinhVien và cho nó một cái tên. Tương tự thế này
sv = SinhVien("1", "Nguyen Van A")
Sau đó chúng ta sẽ phải "Gắn" cái record sinh viên Nguyễn Van A đó vào listSinhVien[]. Chúng ta có hàm append() để làm việc đó
self.listSinhVien.append(sv)
Đây là code của class QuanLySinhVien() cho đến lúc này
from SinhVien import SinhVien
class QuanLySinhVien:
listSinhVien = []
def nhapSinhVien(self):
print("Hello")
sv = SinhVien("1", "Nguyen Van A")
self.listSinhVien.append(sv)
Nếu chúng ta chạy lại Main.py, mặc dù lúc này hàm nhapSinhVien đã "Gắn" record của sinh viên Nguyen Van A vào listSinhVien, nhưng chúng ta "không thấy gì lạ" cả.
Chúng ta cần có một hàm Hiển thị danh sách sinh viên. Ta sẽ gọi hàm đó là showSinhVien., có tham số là danh sách sinh viên, ta gọi là listSV
Đây là code của lớp QuanLySinhVien với hàm showSinhVien() mới thêm vào
from SinhVien import SinhVien
class QuanLySinhVien:
listSinhVien = []
def nhapSinhVien(self):
print("Hello")
sv = SinhVien("1", "Nguyen Van A")
self.listSinhVien.append(sv)
def showSinhVien(self, listSV):
if (listSV.__len__() > 0):
for sv in listSV:
print(sv.id, sv.ten)
Chạy Main.py
Chúng ta sẽ không thấy gì lạ vì chúng ta chưa gọi hàm showSinhVien(). Trong hàm showSinhVien() có tham số listSV, chúng ta sẽ cần một hàm nhỏ dùng để lấy danh sách sinh viên, hay chính là lấy nội dung của listSinhVien.
def getListSinhVien(self):
return self.listSinhVien
Sau đó, trong Main.py, chúng ta sẽ truyền đối số cho hàm showSinhVien như sau.
qlsv.showSinhVien(qlsv.getListSinhVien())
Khi đó chúng ta sẽ thấy "thành quả" , đây là code của Main.py cho đến lúc này
from QuanLySinhVien import QuanLySinhVien
# khởi tạo một đối tượng QuanLySinhVien để quản lý sinh viên
qlsv = QuanLySinhVien()
qlsv.nhapSinhVien()
qlsv.showSinhVien(qlsv.getListSinhVien())
Bấm Run để chạy Main.py
Chúng ta sẽ tiếp tục trong phần sau.
Không có nhận xét nào:
Đăng nhận xét