Sơ đồ logic dữ liệu (hoặc tổ chức tập tin) :

Một phần của tài liệu phần mềm hỗ trợ giảng dạy hình học giải tích (Trang 48)

Các thông tin cần lưu trữ là thông tin về danh sách Lý thuyết, Bài tập, Mẫu câu hỏi trắc nghiệm, Câu hỏi trắc nghiệm, Đề trắc nghiệm được lưu trữ và các kiểu nhập liệu Công Thức được định nghĩa. Mỗi loại có cấu trúc như sau : Hình 2.4.3-15 Sơđồ logic dữ liệu 4.2.2. Danh sách các bng d liu : Bảng Dữ Liệu DB_BAITAP Bảng Dữ Liệu DB_CONGTHUC Bảng Dữ Liệu DB_MAUCAUTN Bảng Dữ Liệu DB_CAUHOITN 48

KHOA CNTT –

ĐH KHTN

4.2.3. Danh sách các thuc tính ca tng bng :

Bảng Dữ Liệu DB_CONGTHUC :

Dùng để lưu trữ các kiểu nhập liệu (được dùng trong các Lời Gợi Ý), các thông tin này được lưu trong file “dbCongThuc.txt” và được lưu tuần tự như sau :

_ dsTPHinhHoc : danh sách các Thành Phần Hình Học được sử dụng trong Công Thức, Định Lý, chỉ mang ý nghĩa tham khảo cho việc nhập liệu, không thay đổi

được.

_ CongThuc : là kiểu công thức nhập liệu cho 1 Cong Thức, Định Nghĩa.

Bảng Dữ Liệu DB_BAITAP :

Dùng để lưu trữ các thông tin về Bài Tập, các thông tin này được lưu trong file “dbBaiGia.txt” và được lưu tuần tự như sau :

_ STT : số thứ tự của Bài Tập này trong danh sách các Bài Tập có trong chương trình.

_ TenBai : tên của Bài Tập, thể hiện bài tập này thuộc dạng đặc trưng nào.

_ Chuong : xác định xem Bài Tập thuộc chương nào (danh sách các loại Chương này căn cứ theo tiêu chuẩn của Sách Giáo Khoa).

_ DoKho : xác định xem mức độ khó của Bài Tập gổm : Dễ, Trunh Bình và Khó. _ DeBai : nội dung đề bài của Bài Tập dưới dạng văn bản.

_ DapAn : các Lời Gợi Ý được cung cấp dưới dạng văn bản. _ HuongDan : các lời hướng dẫn, gợi ý các cách giải Bài Tập.. _ BaiLam : nội dung Bài Làm của Học Sinh.

_ NhanXet : lời nhận xét của Giáo Viên về Bài Làm của Học Sinh..

Bảng Dữ Liệu DB_CAUHOITN

Lưu trữ thông tin về câu hỏi trắc nghiệm, được lưu trong tập tin NganHangCauHoi.txt với cấu trúc như sau :

_STTCau : số thứ tự của câu trong ngân hàng câu hỏi. _Chuong : cho biết câu hỏi này thuộc chương nào.

KHOA CNTT –

ĐH KHTN

50

_De : khi câu hỏi được chọn vào một đề trắc nghiệm thì _De sẽ nhận giá trị của thứ

tựđề.

_NoiDung : lưu trữ phần nội dung của câu hỏi. _GoiY : lưu trữ các gợi ý (A, B, C, D) của câu hỏi. _DapAn : lưu trữđáp án đúng của câu hỏi.

Bảng Dữ Liệu DB_MAUCAUTN

Lưu trữ các dạng mẫu câu hỏi dùng để phát sinh câu hỏi trắc nghiệm, được lưu trong tập tin dbMauCau.txt, và có cấu trúc như sau :

_STT : số thứ tự của mẫu.

_TenBai : mô phỏng ngắn gọn về mẫu. _KieuBai : cho biết dạng của mẫu.

_DoKho : cho biết mức độ phức tạp của bài toán.

_DeBai : lưu trữ toàn bộ câu hỏi bao gồm nội dung và các gợi ý. _DapAn : lưu trữđáp án đúng của câu hỏi.

4.2.4. Danh sách các đối tượng truy xut d liu :

Lớp dbBaiGiai : thể hiện 1 cơ sở Dữ Liệu của Bài Tập. dbBaiGiai Load() Save() LoadChiTiet() SaveChiTiet() (f rom BaiGiai LG)

_Load() : thực hiện việc đọc 1 Bài Tập từ file. _Save() : thực hiện việc ghi 1 Bài Tập ra file.

_ LoadChiTiet() : thực hiện việc đọc các chi tiết của Bài Tập từ file Cơ Sở Dữ Liệu.

_ SaveChiTiet() : thực hiện việc ghi các chi tiết của Bài Tập ra file Cơ Sở Dữ Liệu.

Lớp dbCongThuc : thể hiện 1 cơ sở Dữ Liệu của Công Thức Nhập.

_ Load() : thực hiện việc đọc 1 Công Thức Nhập từ file. dbCongThuc

Load() Save()

PhanTichCau() (f rom Cong Thuc Nhap)

_ Save() : thực hiện việc ghi 1 Công Thức Nhập ra file.

_ PhanTichCau() : phân tích các dữ liệu thô (các Công Thức Nhập dưới dạn Text) thành kiểu đặc biệt áp dụng cho việc Phân Tích Bài Giải.

KHOA CNTT –

ĐH KHTN

Lớp dbCauHoiTN : thể hiện 1 cơ sở dữ liệu của Câu hỏi trắc nghiệm.

_Load() : đọc một câu hỏi trắc nghiệm từ tập tin. dbCauHoiTN

Load() Save() (f rom Logical View)

_Save() : lưu một câu hỏi trắc nghiệm vào tập tin.

4.3. Thiết kế các lớp đối tượng xử lý chính :

4.3.1. Lp BaiGiai :

™ Lớp BaiGiai : thể hiện cho 1 Bài Tập trong chương trình.

4.3.1.1. Danh sách biến thành phần : BaiGiai STT : Integer Ten : String DeBai : String DapAn : String arrTPDeBai : TPHinhHoc* arrTPPhu : TPHinhHoc* Load() Save() TienXuLyCau() TomTatCau() PhanTichDeBai() PhanTichCauDeBai() GiaiBaiTap() PhanTichCauLoiGiai() LayDSThanhPhan()

(from Bai Giai LG)

_ STT : số thứ tự của Bài Tập được đánh số trong Cơ Sở

Dữ Liệu.

_ Ten : tên của Bài Tập. _ DeBai : nội dung của đề bài.

_ DapAn : nội dung của Đáp Án, chỉ ở dưới dạng text. _ arrTPDeBai : danh sách các thành phần Hình Học

được tạo ra khi ta “Phân Tích” nội dung của Đề Bài. _ arrTPPhu : danh sách các thành phần Hình Học được phát sinh trong quá trình thực hiện việc “Giải Bài Tập”.

4.3.1.2. Danh sách các Hàm thành phần :

_ Load() : đọc nội dung của 1 Bài Tập. _ Save() : lưu lại nội dung của 1 Bài Tập.

_ TienXuLyCau : loại bỏ các ký thừa trong 1 đoạn văn bản, đồng thời tách thành từng câu riêng biệt.

_ TomTatCau() : phân tích 1 câu nhập liệu thành 1 dạng xác định để so sánh với danh sách Công Thức nhập liệu xem coi có hợp lệ không.

VD : ta nhập câu : “Cho điểm A(0,0) thuộc đường thẳng D:Ax+By+C=0”, khi được

đưa vào hàm TomTatCau() thì trở thành “<Diem> thuộc <DuongThang>” đồng thời tạo ra 2 đối tượng {A ∈ Diem và D ∈ DuongThang}.

KHOA CNTT –

ĐH KHTN

_PhanTichDeBai() : phân tích toàn bộ Đề Bài xem giả thuyết của Bài Tập cung cấp cho ta những gì, tất cả thành phần tạo ra ởđây được lưu trong mảng arrTPDeBai. _ PhanTichCauDeBai() : phân tích 1 câu xác định, được dùng trong hàm PhanTichDeBai() ở trên.

_ GiaiBaiTap() : phân tích toàn bộ Lời Giải ⇒ thực hiện tuần tự từng bước đễ ra kết quả cuối cùng , tất cả thành phần tạo ra ở đây được lưu trong mảng arrTPPhuDeBai. _ PhanTichCauLoiGiai() : phân tích 1 câu Đáp Án xác định, được dùng trong hàm GiaiBaiTap() ở trên.

_ LayDSThanhPhan() : danh sách các Kết Quả cuối cùng thu được, bao gồm cả Giả

Thuyết và các Thành Phần trung gian.

4.3.1.3. đồ phối hợp hoạt động : _ Ham GiaiBaiTap() : BaiGiai GiaiBaiTap() BaiGiai PhanTichCauDeBai() BaiGiai PhanTichDapAn() BaiGiai PhanTichCauDapAn() BaiGiai PhanTichDeBai() _ Hàm PhanTichCauDapAn() : BaiGiai BaiGiai PhanTichDapAn() BaiGiai TomTatCau() TienXuLyCau() _ Hàm TienXuLyCau() : BaiGiai TienXuLyCau() TPHinhHoc LayKieuNhapLieu() TPQuanHe LayKieuNhapLieu() 4.3.2. Lp dbBaiGiai :

™ Lớp DSBaiGiai : thể hiện toàn bộ các Bài Tập có trong chương trình, thực hiện các yêu cầu quản lý, truy xuất, tìm kiếm.

KHOA CNTT –

ĐH KHTN

4.3.2.1. Danh sách biến thành phần :

_ SoLuong : xác định số lượng các Bài Tập có trong chương trình.

4.3.2.2. Danh sách hàm thành phần :

_ LoadSoLuong() : ghi nhận lại số lượng các Bài Tập có trong chương trình.

_ ThemBaiGiai() : thêm 1 Bài Tập mới vào trong Cơ Sở Dữ

Liệu và đưa vào cuối dữ liệu.

_ LuuBaiGiai() : cập nhật lại thông tin của Bài Tập. _ XoaBaiGiai() : xóa Bài Tập này khỏi danh sách.

_ LayDSBaiGiai() : lấy toàn bộ tất cả các Bài Tập có trong chương trình. _ TimTheoSTT() : tìm kiếm thông tin về Bài Tập theo số thứ tự.

_ TimTheoTen() : tìm kiếm thông tin về Bài Tập theo tên bài.

_ TimTheoChuong() : tìm kiếm thông tin về Bài Tập theo tên bài và chương. _ TimTheoDoKho() : tìm kiếm thông tin về Bài Tập theo tên bài và độ khó.

DSBaiGiai SoLuong : Integer LoadSoLuong() ThemBaiGiai() LuuBaiGiai() XoaBaiGiai() LayDSBaiGiai() TimTheoSTT() TimTheoTen() TimTheoChuong() TimTheoDoKho() (from BaiGiai LG) 4.3.3. Lp PhanTu:

Ngoài ra, khi thực hiện việc “Giải bài Tập”, lớp BaiGiai phải thực hiện việc giao tiếp với các lớp khác, hỗ trợ cho việc tìm kiếm kết quả cuối cùng.

KHOA CNTT – ĐH KHTN 0..n PhanTu (f rom Fundament) BaiGiai (f rom BaiGiai LG) CongThucQuanHe

(from Cong T huc Nhap)

TPPhuongTrinh (from Fundament) TPHinhHoc (f rom Fundament) TPQuanHe (f rom Fundament) 1..* 1..* 1..* 1..* 1..* 1..* 1..* 1..* Hình 2.4.3-16 Lớp PhanTu

™ Lớp PhanTu : đây là lớp ảo và là Phần Tử cơ bản nhất trong mô hình Hỗ Trợ

Giải Toán, cung cấp các khả năng thiết yếu cho các lớp con thao tác. Bản thân mỗi PhanTu này lại chứa nhiều các đối tượng PhanTu khác.

4.3.3.1. Danh sách biến thành phần : PhanTu Name : String dsPhanTu : PhanTu* KhoiTao() IsActived() OnActived() SetTP() GetTP() LayTenDinhNghia() XuatBaiGiai() (from Fundament)

_ Name : tên của Phần Tửđược xét.

_ dsPhanTu : danh sách các đối tượng PhanTu khác mà lớp này kiểm soát.

4.3.3.2. Danh sách hàm thành phần :

_ KhoiTao() : hàm khởi tạo cho các đối tượng có khả năng “nạp chồng” (override), xác định tên và số lượng các thành phần sở hữu và thực hiện các khởi tạo riêng biệt cho từng lớp con.

KHOA CNTT –

ĐH KHTN

_ IsActived() : xác định xem đối tượng đã được “kích hoạt” chưa, “kích hoạt” là khi

đối tượng đã xác định được đầy đủ giá trị.

_ OnActived() : đây là 1 hàm bắt sự kiện, được thực thi khi có 1 đối tượng trong dsPhanTu được “kích hoạt” lên, đây là hàm có khả năng “nạp chồng” (override), tùy theo các lớp con khác nhau mà có các phản ứng khác nhau. Nếu bản thân lớp được “kích hoạt” thì cũng phát sinh ra sự kiện thông báo cho các đối tượng đang sở hữu nó biết được.

_ SetTP() : cập nhật thông tin lại cho 1 đối tượng PhanTu mà lớp đang nắm giữ. _ GetTP() : lấy thông tin lại cho 1 đối tượng PhanTu mà lớp đang nắm giữ.

_ LayTenDinhNghia() : đây là hàm ảo (abstract), dùng để lấy chuỗi ký tựđặc trưng dùng để nhận diện cho việc nhập liệu cho lớp. VD : lớp Diem có chuỗi là “ Điểm“, lớp DuongThang có chuỗi là “Đường Thẳng”.

_ XuatBaiGiai() : đây là hàm ảo (abstract), dùng để xuất nội dung của đối tượng ra thành bài giải.

4.3.4. Lp TPHinhHoc :

™ Lớp TPHinhHoc : đây là lớp ảo kế thừa từ lớp PhanTu, thể hiện cho các đối tượng Hình Học có trong 1 bài toán Hình Học Giải Tích, chẳng hạn như :

Điểm, Đường Thẳng, Đường Tròn, Ellipse,….

4.3.4.1. Danh sàch hàm thành phần : TPHinhHoc OnActived() LayDSThanhPhan() LoadCongThucNhap() XuatSoNghiem() XuatKetQua() LayKieuNhapLieu() (from Fundament) _ OnActived() : kế thừa từ lớp PhanTu, xác định lớp sẽ

“kích hoạt” khi thoả điều kiện tất cả các đối tượng sở hữu

đều “kích hoạt”.

VD : đối tượng Điểm A được kích hoạt khi ta xác định

được 2 giá trị X, Y của A.

_ LayDSThanhPhan() : lấy tất cả các đối tượng mà nó sở

hữu và chính nó.

KHOA CNTT –

ĐH KHTN

_ LoadCongThucNhap() : đây là hàm ảo, dùng để đọc 1 đoạn text xem nó có thực hiện việc “nhập liệu” cho 1 đối tượng Hình Học nào đó không.

VD : ta có “Điểm A(0,0)” khi đưa vào hàm này thì ta sẽ nhận được 1 khai báo là khởi tạo 1 đối tượng tên “A” có kiểu là Diem và có giá trị X = Y = 0.

_ XuatSoNghiem() : xác định số nghiệm (số kết quả thu được) của 1 đối tượng Hình Học, số nghiệm có thể là : 1, 2, …

_XuatKetQua() : đây là hàm ảo, dùng để xuất ra bài giải kết luận cuối cùng của đối tượng Hình Học, thường được dùng cho phần “Kết Luận” của Bài Giải.

VD : phần “Kết Luận” của 1 Bài Tập “xác định phương trình Đường Thẳng” ta xuất ra bằng hàm trên là : “Đường thẳng D có phương trình đường thẳng là …”

_ LayKieuNhapLieu() : lấy tất cả các kiểu nhập liệu được định nghĩa trong chương trình, được dùng trong phần Kiểm Tra Đề Bài, Đáp Án.

4.3.4.2. đồ phối hợp hoạt động : _ HamXuatKetQua() : TPHinhHoc XuatKetQua() GetAt() TPHinhHoc TPHinhHoc XuatKetQua() *

Chương trình đã định nghĩa 1 số lớp kế thừa từ lớp TPHinhHocđể chuyên biệt hoá các xử lý cho từng đối tượng Hình Học mà thường được sử dụng trong các Bài Toán Hình học Giải Tích.

Ngoài các hàm được kế thừa từ lớp cha, các lớp này chỉ định nghĩa thêm các giá trị đặc trưng cho từng lớp.

KHOA CNTT – ĐH KHTN TPHinhHoc (f rom Fundament) GiaTri Value : SoThuc (f rom Fundament) Diem X : GiaTri Y : GiaTri (f rom Geometric) DuongThang A : GiaTri B : GiaTri C : GiaTri (f rom Geometric) TamGiac A : Diem B : Diem C : Diem (f rom Geometric) TuGiac A : Diem B : Diem C : Diem D : Diem (f rom Geometric) Goc alpha : GiaTri (f rom Geometric) DuongTron I : Diem R : GiaTri (f rom Geometric) Ellipse I : Diem a : GiaTri b : GiaTri (f rom Geometric) Hyperbol I : Diem a : GiaTri b : GiaTri (f rom Geometric) Parabol I : Diem p : GiaTri (f rom Geometric) Vector U : GiaTri V : GiaTri (f rom Geometric) Hình 2.4.3-17 Lớp TPHinhHoc 4.3.4.3. Danh sách các lớp con :

ƒ Lớp GiaTri : thể hiện cho 1 Biến số, Tham số hoặc Hằng số trong 1 Bài Tập, số

lượng đối tượng mà lớp GiaTri nắm giữ chính là số nghiệm của 1 Biến số.

Trong đó Value là giá trị thực của lớp (nếu lớp được kích hoạt) và thuộc kiểu SoThuc, kiểu dùng để thực hiện tính toán với kết quả “số đẹp” như “số căn”, “phân số”.

Ngoài ra , lớp GiaTri còn được cung cấp 1 số hàm để thực hiện các phép toán +. -, *, /, được dùng để Giải Phương Trình.

ƒ Lớp Góc : thể hiện cho 1 giá trị Góc, nhưng ở dưới dạng Radian, và chỉ chấp nhận các giá trị góc đặc biệt như : 0°, 30°, 45°, 90°, …

ƒ Lớp Vector : thể hiện cho 1 đối tượng Hình Học là Vector có dạng u(U,V). 57

KHOA CNTT –

ĐH KHTN

ƒ Lớp Diem : thể hiện cho 1 đối tượng Hình Học là Điểm có dạng A(X,Y).

ƒ Lớp DuongThang : thể hiện cho 1 đối tượng Hình Học là Đường Thẳng có dạng D: Ax + By + C = 0.

ƒ Lớp TamGiac : thể hiện cho 1 đối tượng Hình Học là Tam Giác gồm 3 Điểm xác

định A, B, C.

ƒ Lớp TuGiac : thể hiện cho 1 đối tượng Hình Học là Tam Giác gồm 4 Điểm xác

định A, B, C, D

ƒ Lớp DuongTron : thể hiện cho 1 đối tượng Hình Học là Đường Tròn tâm là Điểm I có dạng C: (x - Ix)² + (y - Iy)² = R².

ƒ Lớp Ellipse : thể hiện cho 1 đối tượng Hình Học là Ellipse tâm là Điểm I có dạng E: (x - Ix)² / a² + (y - Iy)² / b² = 1.

ƒ Lớp Hyperbol : thể hiện cho 1 đối tượng Hình Học là Hyperbol tâm là Điểm I có dạng H: (x - Ix)² / a² - (y - Iy)² / b² = 1.

ƒ Lớp Parabol : thể hiện cho 1 đối tượng Hình Học là Parabol tâm là Điểm I có dạng H: (y – Iy)² = 2 * P * (x - Ix).

4.3.4.4. Danh sách các hàm được kế thừa để chuyên biệt hoá từ lớp TPHinhHoc :

ƒ KhoiTao() : kế thừ từ lớp PhanTu, dùng để khởi tạo cho trường hợp mặc định cho từng đối tượng Hình Học.

ƒ LayTenDihnhNghia() : lấy chuỗi định nghĩa cách thức nhập liệu cho từng đối tượng Hình Học.

ƒ LoadCongThucNhap() : dùng để đọc 1 đoạn text xem nó có thực hiện việc “nhập liệu” cho 1 đối tượng Hình Học nào đó không.

4.3.5. Lp TPQuanHe :

™ Lớp TPQuanHe : đây là lớp ảo kế thừa từ lớp PhanTu, thể hiện cho các Công Thức, Định Lý, Định Nghĩa có trong 1 bài toán Hình Học Giải Tích, chẳng hạn

KHOA CNTT –

ĐH KHTN

như : các Công Thức tính giá trị Diện Tích, Chu Vi của Tam Giác, các Định Nghĩa “Điểm Thuộc Đường”, …

4.3.5.1. Danh sách biến thành phần :

_ myPT : danh sách các Phương Trình đặc trưng cho từng lớp Quan Hệ.

4.3.5.2. Danh sách hàm thành phần :

_ LayTenDinhNghia() : kế thừa từ lớp PhanTu, định nghĩa cách thức khai báo 1 Công Thức hoặc Định Lý. _ LoadCongThucNhap() : dùng để đọc 1 đoạn text xem

nó có thực hiện việc “khai báo” cho 1 Công Thức hoặc Định Lý. Các cách thức nhập liệu cho đối tượng TPQuanHe này được địng nghĩa trong file “dbCongThuc.txt” và có thể hiệu chỉnh được theo ý người sử dụng.

_ LayKieuNhapLieu() : lấy tất cả các kiểu nhập liệu được khai báo Công Thức, Định Lý trong chương trình, được dùng trong phần Kiểm Tra Đề Bài, Đáp Án.

_ LayPhuongTrinh() : lấy thông tin về dan sách các Phương Trình đặc trưng cho từng lớp TPQuanHe.

_ CapNhatPhuongTrinh() : cập nhật lại thông tin cho các Phương Trình đặc trưng từ

các biến thành phần của đối tượng

VD : ta có Định Nghĩa quan hệ “Điểm thuộcc Parabol” có các biến thàng phần là

Điểm M(Mx, My) và Parabol P tâm là Điểm I(Ix, Iy) thì dạng phương trình đặc trưng là : (My – Iy)² = 2 * P (Mx – Ix).

_ XuatBaiGiai() : kế thừa từ lớp PhanTu, dùng để xuất 1 Công Thức hoặc Định Nghĩa ra thành Lời Giải theo nguyên tắc sau :

+ Xuất lời dẫn thông báo sử dụng Định Lý hoặ Công Thức gì.

Một phần của tài liệu phần mềm hỗ trợ giảng dạy hình học giải tích (Trang 48)