Bài toán thứ nhất: Thiết kế hệ thống quản lý

Một phần của tài liệu Phân tích, thiết kế và lập trình hướng đối tượng_phụ lục 6 pot (Trang 27 - 29)

Bài toán đặt ra: Hãy xây dựng chương trình chạy trên máy tính để theo dõi kết quả học tập của sinh viên trong một lớp, và tìm kiếm theo kết quả điểm trung bình các môn thi. Giáo viên muốn quản lý sinh viên thông qua: Họ và tên, các điểm thi: học kỳ 1, học kỳ 2, thi cuối năm và điểm trung bình qua các kỳ thi của các môn học.

Phân tích kỹ bài toán ở trên chúng ta xác định được hai đối tượng là: SINH_VIEN và MON_HOC. Tương ứng với các đối tượng này trong thiết kế là các lớp SINH_VIEN và MON_HOC. Vì đối tượng là thể hiện của lớp, nên hai lớp SINH_VIEN và MON_HOC xác định hai loại đối tượng cơ bản trong hệ thống theo dõi kết quả học tập mà giáo viên cần phải phát triển.

Bước tiếp theo trong thiết kế là mô tả chi tiết các lớp đối tượng và mối quan hệ giữa chúng. Theo yêu cầu của giáo viên (người sử dụng) thì mỗi đối tượng trong lớp SINH_VIEN được mô tả bởi các thuộc tính: Ho_ten, Diem_thi_ky1, Diem_thi_ky2, Diem_thi_CN và Diem_TB; còn MON_HOC cho biết danh sách các đối tượng SINH_VIEN theo môn học đó. Mỗi thành phần dữ liệu có một kiểu xác định và giá trị các dữ liệu thành phần mô tả trạng thái của đối tượng. Cuối cùng chúng ta có danh sách các thuộc tính mô tả lớp SINH_VIEN và MON_HOC như sau:

class SINH_VIEN

{// Danh sách các thuộc tính mô tả SINH_VIEN a. Ho_ten : string (kiểu xâu ký tự)

b. Diem_thi_ky1 : float c. Diem_thi_ky2 : float d. Diem_thi_CN : float e. Diem_TB : float } class MON_HOC

a. Mon_hoc : string // tên môn học

b. Danh_sach_SV :SINH_VIEN // Bảng danh sách các // sinh viên theo học

c. Si_so : integer // Số học sinh trong lớp }

Sau khi xác định được các đối tượng, lớp và danh sách các thuộc tính mô tả đối tượng, bước tiếp theo là xác định các hàm thành phần của các lớp. Hàm thành phần mô tả hành vi của đối tượng bao gồm:

+ Truy nhập vào thành phần dữ liệu của đối tượng + Cho phép cập nhật, thay đổi dữ liệu thành phần + Kiểm tra dữ liệu theo nhiều cách khá nhau

+ Hiện các thông tin dữ liệu lên màn hình, thiết bị ngoại vi

Mục tiêu của thiết kế lớp là tạo ra các lớp cho nhiều ứng dụng khác nhau nhưng cùng liên quan đến một loại dữ liệu. Người thiết kế các lớp muốn xây dựng các class đáp ứng được mọi nhu cầu của người lập trình (khách hàng). Quan hệ giữa người phát triển với người lập trình, cũng giống như quan hệ chủ hàng - khách hàng, dẫn đến trường hợp là chủ hàng mong sao có nhiều người sử dụng nhất, nghĩa là lớp sẽ được xây dựng với một số lượng lớn các hàm thành phần. Nhưng khách hàng lại chỉ sử dụng những hàm nào liên quan đến ứng dụng của họ mà thôi. Do vậy chúng ta phải cố gắng xây dựng được những hàm thành phần cơ bản, đặc trưng nhất cho lớp đang xét, sau đó sử dụng quan hệ kế thừa để tạo ra những lớp mới thích hợp cho nhiều ứng dụng khác nhau.

Trong bài toán của chúng ta, các hàm thành phần có thể là: 1. Các hàm thành phần của lớp SINH_VIEN

a. Hàm khởi tạo đối tượng sinh viên: SINH_VIEN() b. Hàm huỷ bỏ đối tượng sinh viên: ~SINH_VIEN() c. Hàm đọc tên sinh viên: DOC_TEN() d. Hàm gán tên của một sinh viên: GAN_TEN() e. Hàm đọc dữ liệu: DOC_DL() f. Hàm tính trung bình: T_BINH()

g. Hàm hiện kết quả: DISPLAY() 2. Các hàm của lớp MON_HOC

a. Hàm khởi tạo môn học: MON_HOC() b. Hàm huỷ bỏ đối tượng môn học: ~MON_HOC() c. Hàm đọc tên môn học: DOC_TEN() d. Hàm đọc dữ liệu: DOC_DL() e. Hàm tính trung bình: T_BINH() f. Hàm bổ sung sinh viên vào lớp: THEM_SV() g. Hàm sắp xếp sinh viên theo tên: SAP_XEP() h. Hàm tìm kiếm một sinh viên: TIM()

Hàm làm nhiệm vụ khởi tạo các đối tượng của một lớp thường có cùng tên của lớp đối tượng đó và được gọi là cấu tử, còn hàm huỷ bỏ một đối tượng cũng cùng tên nhưng có dấu "~" đứng trước được gọi là huỷ tử. Hai hàm này sẽ được gọi thực hiện một cách tự động khi cần thiết. Hàm cấu tử được gọi khi cần định nghĩa, tạo lập một đối tượng, còn hàm huỷ tử được gọi khi chương trình thoát ra khỏi phạm vi mà đối tượng đó được định nghĩa. Một lớp có thể có nhiều hàm cấu tử và chúng được phân biệt bởi danh sách và kiểu của các tham biến. Nhưng chỉ có duy nhất một hàm huỷ tử cho một lớp và là hàm không có tham số.

Một phần của tài liệu Phân tích, thiết kế và lập trình hướng đối tượng_phụ lục 6 pot (Trang 27 - 29)