MỞ ĐẦU Những năm gần đây, cùng với sự phát triển mạnh mẽ của kinh tế - xã hội, nhu cầu bổ sung một lực lƣợng lao động đông đảo cho xã hội ngày một lớn. Để đáp ứng nhu cầu này, các cơ sở đào tạo cũng vì thế tăng lên một cách nhanh chóng cả về số lƣợng lẫn quy mô đào tạo với đủ loại hình đào tạo, ngành nghề đa dạng. Để đạt hiệu quả cao trong quá trình quản lý, rất nhiều các cơ sở đào tạo đã ứng dụng thế mạnh của Công nghệ thông tin vào các công việc nghiệp vụ. Các phần mềm về lĩnh vực quản lý đào tạo hiện có mặt rất nhiều trên thị trƣờng.
Nhƣng vì mỗi cơ sở đào tạo có mô hình quản lý khác nhau, đặc thù đào tạo rất đa dạng nên việc phát triển, sử dụng các phần mềm cho mỗi cơ sở tốn rất nhiều thời gian, công sức để tạo ra và chỉnh sửa cho phù hợp. Mặt khác, do các cơ sở sử dụng nhiều phần mềm quản lý khác nhau nên rất khó khăn cho các đơn vị chủ quản trong việc thống kê, báo cáo, nắm bắt đƣợc tình hình chung. Mặt khác trƣờng Cao đẳng Cộng đồng Hải phòng đang có nhu cầu về một chƣơng trình quản lý đào tạo tốt để phục vụ và nâng cao chất lƣợng đào tạo của trƣờng. Vì lý do trên mà tôi chọn đề tài “Phân tích thiết kế hướng mẫu và ứng dụng cho bài toán quản lý kết quả học tập tại trường Cao đẳng Cộng đồng” làm đề tài luận văn của tôi.
Ngày nay, phát triển phần mềm hƣớng mẫu đang là một hƣớng đƣợc sử dụng rộng rãi. Trƣớc hết nó cho phép dễ sửa đổi, mở rộng chƣơng trình sau này. Mặt khác, việc sử dụng mẫu sẽ cho chƣơng trình có cấu trúc tốt, có thể sử dụng lại các kiến trúc đƣợc đúc rút qua kinh nghiệm của các chuyên gia, nhờ vậy giảm thời gian và công sức phát triển và bảo trì. Chính những ƣu thế này mà tôi chọn công nghệ phân tích thiết kế hƣớng mẫu để giải quyết bài toán đặt ra.
Luận văn đƣợc chia làm 4 chƣơng: Chƣơng 1: Tổng quan về phân tích thiết kế hƣớng mẫu Chƣơng 2: Bài toán quản lý kết quả học tập và giải pháp Chƣơng 3: Phân tích thiết kế bài toán hƣớng mẫu Chƣơng 4: Xây dựng chƣơng trình và cài đặt thử nghiệm hệ thống Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.vn 2 Chƣơng 1. TỔNG QUAN VỀ PHÂN TÍCH THIẾT KẾ HƢỚNG MẪU 1. Khái niệm mẫu thiết kế, các đặc trƣng, phân loại mẫu thiết kế 1. Khái niệm Theo định nghĩa của Christopher Alexander: “Một mẫu mô tả một vấn đề xảy ra lặp đi lặp lại và mô tả phần cốt lõi của giải pháp cho vấn đề đó, chúng ta có thể sử dụng lại giải pháp đã có hàng triệu lần” [7].
Nói chung, một mẫu mô tả một vấn đề thƣờng xảy ra trong phát triển phần mềm và mô tả giải pháp cho vấn đề đó theo cách có thể dùng lại đƣợc. Các mẫu là phƣơng tiện truyền bá tri thức và kinh nghiệm, truyền từ những ngƣời giàu kinh nghiệm đến những ngƣời thiếu kinh nghiệm. Hầu hết các mẫu được xây dựng để hỗ trợ chỉ cho tiếp cận hướng đối tượng Thông thƣờng một mẫu đƣợc thể hiện với 4 yếu tố chính: Tên mẫu: cụm từ ngắn, cho phép tham chiếu đến mẫu Vấn đề: mô tả khi nào áp dụng mẫu, giải thích vấn đề và khung cảnh. Giải pháp cho vấn đề: mô tả các yếu tố tạo nên thiết kế, các mối quan hệ giữa chúng, các trách nhiệm và sự cộng tác giữa chúng.
Giải pháp không mô tả thiết kế hoặc triển khai cụ thể, vì một mẫu có thể đƣợc áp dụng trong nhiều tình huống khác nhau. Mẫu chỉ cung cấp bản mô tả trừu tƣợng về một vấn đề thiết kế và việc sắp xếp các yếu tố ở mức chung nhất để giải quyết nó. Kết quả: là các kết quả của việc áp dụng mẫu. Vì chúng ta luôn phải trả giá cho việc áp dụng mẫu nên trƣớc đó chúng ta cần xác định chi phí bỏ ra cũng nhƣ kết quả thu về để có thể quyết định lựa chọn mẫu phù hợp và áp dụng nó.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.vn 3 Ví dụ: Tên mẫu: Creator Vấn đề: Ai có trách nhiệm tạo ra một thể hiện mới của một lớp? Giải pháp Lớp B có trách nhiệm tạo ra một thể hiện mới của lớp A nếu một trong các điều kiện dƣới đây thỏa mãn: - B là một tập hợp các đối tƣợng A (B và A có mối quan hệ aggregate) - B chứa các đối tƣợng A (B và A có mối quan hệ contain) - B lƣu lại các thể hiện của các đối tƣợng A - B sử dụng các đối tƣợng A - B có dữ liệu khởi tạo mà đƣợc truyền tới A khi nó đƣợc tạo. Các đặc trƣng Mẫu thiết kế giải quyết nhiều vấn đề mà các nhà thiết kế hƣớng đối tƣợng phải đối mặt và bằng nhiều cách khác nhau. Dƣới đây là một số vấn đề mà mẫu có thể giải quyết và cách thức mẫu giải quyết các vấn đề đó. - Tìm các đối tượng (object) phù hợp Trong thiết kế hƣớng đối tƣợng, chúng ta cần phân chia một hệ thống thành các đối tƣợng.
Việc này là không dễ dàng vì thiết kế của chúng ta phải đảm bảo các tiêu chí nhƣ bao gói, mịn, độc lập, mềm dẻo, hiệu năng, tái sử dụng,… Các tiêu chí này thƣờng mâu thuẫn nhau. Đã có nhiều cách tiếp cận khác nhau để thực hiện công việc này, hoặc là viết ra một câu mô tả ngắn về vấn đề với các danh từ và các động từ, chúng ta tạo ra các lớp (class) và phƣơng thức (method) của các lớp tƣơng ứng với các danh từ và các động từ tìm đƣợc trong câu mô tả, hoặc là chúng ta mô hình hóa các đối tƣợng của thế giới thực và chuyển các đối tƣợng đƣợc tìm thấy trong giai đoạn phân tích sang giai đoạn thiết kế. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.vn 4 Các mẫu thiết kế giúp chúng ta xác định các đối tƣợng phù hợp. Ví dụ, các đối tƣợng thể hiện các vi xử lý hay các thuật toán mà không xuất hiện trong thế giới thực nhƣng chúng lại là phần cốt lõi của các thiết kế mềm dẻo.
Mẫu Strategy mô tả cách triển khai họ các thuật toán. Mẫu State thể hiện mỗi trạng thái của một thực thể nhƣ là một đối tƣợng. Các đối tƣợng này ít khi đƣợc tìm thấy trong giai đoạn phân tích hoặc giai đoạn đầu của thiết kế, chúng chỉ đƣợc nhận ra khi hoàn thiện thiết kế để tăng tính mềm dẻo và tăng khả năng tái sử dụng của thiết kế. - Quyết định kĩch cỡ của các đối tượng Các mẫu hỗ trợ việc xác định đối tƣợng, phân chia đối tƣợng để thu đƣợc các đối tƣợng với kích thƣớc nhỏ hơn.
Ví dụ, Mẫu Abstract Factory và mẫu Builder sinh ra các đối tƣợng mà trách nhiệm duy nhất của chúng là tạo ra các đối tƣợng khác, mẫu Visitor và mẫu Command sinh ra các đối tƣợng mà trách nhiệm duy nhất của chúng là triển khai một yêu cầu trên một đối tƣợng khác hoặc trên một nhóm đối tƣợng khác. - Đặc tả các giao diện đối tượng (object interface) Các tác vụ (operator) của đối tƣợng đƣợc mô tả bằng tên tác vụ, tham số, giá trị trả về. Mô tả tác vụ còn đƣợc gọi là khai báo tác vụ. Tập hợp tất cả các khai báo tác vụ của một đối tƣợng tạo thành giao diện của đối tƣợng đó.
Giao diện của một đối tƣợng thể hiện các yêu cầu có thể đƣợc gửi đến đối tƣợng đó, bất kỳ yêu cầu nào mà khớp với một khai báo trong giao diện đều có thể đƣợc gửi tới đối tƣợng. Một kiểu (type) là một tên gọi đƣợc sử dụng để nói đến một giao diện cụ thể. Chúng ta nói rằng, một đối tƣợng có kiểu Window nếu nó chấp nhận tất cả các yêu cầu cho các tác vụ đƣợc định nghĩa trong giao diện có tên là Window. Một đối tƣợng có nhiều kiểu và các đối tƣợng khác nhau có thể chia xẻ cùng một kiểu.
Một phần của giao diện đối tƣợng có thể đặc trƣng bởi một kiểu và các phần khác thì bởi các kiểu khác. Hai đối tƣợng của cùng một kiểu chỉ cần chia xẻ các phần giao diện của chúng. Các giao diện có thể chứa các giao diện khác nhƣ là các tập con của chúng. Chúng ta Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.vn 5 nói rằng một kiểu là kiểu con của kiểu khác nếu giao diện của nó chứa giao diện của siêu kiểu của nó (kiểu cha của nó).
Thông thƣờng chúng ta nói, một kiểu con thừa kế giao diện của kiểu cha của nó. Các giao diện là các đối tƣợng cơ bản của các hệ thống hƣớng đối tƣợng. Các đối tƣợng đựợc biết chỉ qua giao diện của chúng. Không có cách nào để biết bất cứ điều gì về một đối tƣợng mà không thông qua giao diện của nó.
Hai đối tƣợng có triển khai khác nhau hoàn toàn có thể có giao diện giống nhau. Khi một yêu cầu đƣợc gửi đến một đối tƣợng, tác vụ nào đƣợc thực hiện là phụ thuộc vào cả đối tƣợng gửi và đối tƣợng nhận yêu cầu. Các đối tƣợng khác nhau hỗ trợ các yêu cầu giống nhau có thể có các triển khai khác nhau của tác vụ mà đáp ứng các yêu cầu đó. Liên kết của một yêu cầu tới một đối tƣợng và một trong các tác vụ của nó tại thời gian chạy đƣợc gọi là liên kết động (dynamic binding).
Liên kết động có nghĩa là một yêu cầu không đƣợc hồi đáp cho tới thời gian chạy. Kết quả là chúng ta có thể viết ra các chƣơng trình mà mong đợi một đối tƣợng với một giao diện cụ thể. Biết rằng bất kỳ đối tƣợng nào có giao diện đúng sẽ chấp nhận yêu cầu. Tuy nhiên liên kết động cho phép chúng ta nhận ra các đối tƣợng mà có các giao diện giống nhau ở mỗi thời gian chạy khác nhau.
Tính chất này đƣợc gọi là đa hình (polymorphism), nó là khái niệm chính trong hệ thống hƣớng đối tƣợng. Đa hình tách biệt các đối tƣợng và giúp chúng có những mối quan hệ khác nhau ở mỗi thời gian chạy. Các mẫu thiết kế giúp định nghĩa các giao diện bằng cách nhận ra các yếu tố chính và các loại dữ liệu chính mà có thể gửi và nhận qua giao diện. Mẫu thiết kế cũng có thể cho ta biết những gì không nên đặt ở trên giao diện, chẳng hạn mẫu Memento.