Tải bản đầy đủ (.pdf) (82 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.04 MB, 82 trang )


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

ĐẠI HỌC THÁI NGUYÊN
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG





NGUYỄN ÁNH NGỌC





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


LUẬN VĂN THẠC SỸ KHOA HỌC MÁY TÍNH








Thái Nguyên - 2012



Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

























ĐẠI HỌC THÁI NGUYÊN
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG



NGUYỄN ÁNH NGỌC



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

Chuyên ngành: Khoa học máy tính
Mã số: 60.48.01



LUẬN VĂN THẠC SỸ KHOA HỌC MÁY TÍNH


NGƢỜI HƢỚNG DẪN KHOA HỌC
PGS.TS Nguyễn Văn Vỵ



Thái Nguyên - 2012

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

LỜI CAM ĐOAN
Tôi xin cam đoan về toàn bộ nội dung của luận văn, những điều đƣợc trình
bày hoặc là của cá nhân hoặc là đƣợc tổng hợp từ nhiều nguồn tài liệu. Tất cả các tài
liệu tham khảo đều có xuất xứ rõ ràng và đƣợc trích dẫn hợp pháp.

Tôi xin hoàn toàn chịu trách nhiệm và chịu mọi hình thức kỷ luật theo quy
định cho lời cam đoan của mình.

Học viên


Nguyễn Ánh Ngọc

i

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

MỤC LỤC
MỤC LỤC i
LỜI CẢM ƠN iv
BẢNG DANH MỤC CÁC CHỮ VIẾT TẮT v
CÁC THUẬT NGỮ vi
DANH MỤC CÁC HÌNH VẼ vii
MỞ ĐẦU 1
Chƣơng 1. TỔNG QUAN VỀ PHÂN TÍCH THIẾT KẾ HƢỚNG MẪU 2
1.1. Khái niệm mẫu thiết kế, các đặc trƣng, phân loại mẫu thiết kế 2
1.1.1. Khái niệm 2
1.1.2. Các đặc trƣng 3
1.1.3. Phân loại 7
1.2. Quy trình phân tích thiết kế hƣớng mẫu 9
1.2.1 Giai đoạn 1 9
1.2.2. Giai đoạn 2 10
1.2.3. Giai đoạn 3 10
1.3. Đặc tả một số các mẫu thiết kế cần dùng cho bài toán 12
1.3.1. Mẫu chế tạo (Factory Pattern) 12

1.3.2. Mẫu Ủy nhiệm (Proxy Pattern) 14
1.3.3. Sơ đồ mối liên kết các mẫu thiết kế 17
Chƣơng 2. BÀI TOÁN QUẢN LÝ KẾT QUẢ HỌC TẬP VÀ GIẢI PHÁP 19
2.1. Khảo sát thu thập dữ liệu về bài toán quản lý kết quả học tập hiện nay ở
trƣờng Cao đẳng Cộng đồng Hải phòng và một số cơ sở Đào tạo khác 19
2.1.1. Nộp hồ sơ 19
2.1.2. Nhập học 19
2.1.3. Hồ sơ Học viên 19
2.1.4. Kế hoạch đào tạo 20
2.2. Mô tả và đặc tả yêu cầu của bài toán đặt ra 23
2.3. Thực trạng của việc quản lý kết quả học tập hiện nay ở trƣờng Cao đẳng
Cộng đồng Hải phòng và những vấn đề đặt ra 23
2.4. Giải pháp tổng thể về công nghệ thông tin để giải quyết bài toán đặt ra 24
ii


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Chƣơng 3. PHÂN TÍCH THIẾT KẾ BÀI TOÁN HƢỚNG MẪU 25
3.1. Đặc tả bài toán theo hƣớng đối tƣợng 25
3.1.1. Các chức năng của hệ thống 25
3.1.2. Mô hình khái niệm mức nghiệp vụ 26
3.1.3. Xác định các tác nhân, các ca sử dụng và mô tả các ca sử dụng 26
3.1.4. Mô hình ca sử dụng 27
3.1.5. Mô hình chi tiết ca sử dụng 31
3.2. Lựa chọn các mẫu thích hợp cho các đặc tả yêu cầu tƣơng ứng 41
3.2.1. Mẫu Ủy nhiệm (Proxy) 41
3.2.2. Mẫu tạo (Factory) 41
3.2.3. Áp dụng mẫu Ủy nhiệm (Proxy) 41
3.2.4. Áp dụng mẫu tạo (Factory) 42

3.3. Tích hợp để đƣợc thiết kế tổng thể 42
3.3.1. Ca sử dụng Cập nhật môn học 42
3.3.2. Ca sử dụng Chƣơng trình đào tạo 43
3.3.3. Ca sử dụng Nhập điểm 44
3.4. Bổ sung và hoàn thiện thiết kế của hệ thống 48
Chƣơng 4. XÂY DỰNG CHƢƠNG TRÌNH VÀ CÀI ĐẶT THỬ NGHIỆM HỆ
THỐNG 57
4.1. Lựa chọn môi trƣờng và công cụ phát triển hệ thống 57
4.2. Lập chƣơng trình và kiểm thử hệ thống 57
4.3. Cài đặt hệ thống và thử nghiệm 57
4.3.1 Các nghiệp vụ cơ bản 57
4.3.2 Tìm kiếm: 58
4.3.3. Các nghiệp vụ ngƣời quản trị hệ thống (Phòng đào tạo) 59
4.3.4. Quản lý học viên 62
4.3.5 Quản lý điểm 67
4.3.6 Tốt nghiệp 69
4.4. Các kết quả và đánh giá hệ thống 70
KẾT LUẬN 71
TÀI LIỆU THAM KHẢO 72

iii


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

LỜI CẢM ƠN
Trƣớc tiên, em xin đƣợc trân trọng cảm ơn và bày tỏ lòng biết ơn đối với thầy
giáo PGS.TS Nguyễn Văn Vỵ, giảng viên bộ môn Công Nghệ Phần Mềm – Khoa
Công Nghệ Thông Tin – Trƣờng Đại học Công Nghệ - ĐHQGHN. Trong toàn bộ
quá trình học tập và làm luận văn tốt nghiệp, thầy đã rất tận tình chỉ bảo, hƣớng

dẫn, định hƣớng, giảng giải cho em trong việc nghiên cứu và thực hiện hoàn thành
luận văn.
Em xin đƣợc cảm ơn các Giáo Sƣ, Tiến Sĩ, các thầy cô trong trƣờng đại học
Công Nghệ Thông tin và Truyền thông - Đại học Thái Nguyên đã tận tình giảng
dạy, giúp đỡ em trong quá trình học tập, thực hành, làm bài tập, đọc và nhận xét
luận văn của em, giúp em hiểu thấu đáo hơn lĩnh vực mà em đang nghiên cứu và
những hạn chế cần khắc phục trong việc học tập, nghiên cứu và thực hiện bản luận
văn này.
Xin cảm ơn bạn bè, đồng nghiệp và nhất là các thành viên trong gia đình đã
tạo mọi điều kiện tốt nhất, động viên, cổ vũ tôi trong suốt quá trình học tập và làm
luận văn tốt nghiệp.
Học viên


Nguyễn Ánh Ngọc
iv


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

BẢNG DANH MỤC CÁC CHỮ VIẾT TẮT
Thuật ngữ
Chi tiết
Ý nghĩa
HeDT
Hệ đào tạo
Các loại hình đào tạo
NganhDT
Ngành đào tạo
Chuyên môn đào tạo

ChuongTrinhDT
Chƣơng trình đào tạo
Dựa theo chƣơng trình khung
của Bộ Giáo dục & Đào tạo
mà cơ sở đào tạo xây dựng lên
ChuongTrinhTK
Chƣơng trình triển khai
Chƣơng trình đào tạo đƣợc
triển khai cho một lớp cụ thể

v


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

CÁC THUẬT NGỮ
Tiếng Anh
Tiếng Việt
Abstract factory pattern
Mẫu chế tạo trừu tƣợng
Adapter pattern
Mẫu thích nghi
Base- class
Lớp cơ sở
Base- object
Đối tƣợng cơ sở
Behavioral pattern
Đẫu hành vi
Cache proxy
Không gian lƣu trữ tạm thời

Copy-On-Write proxy
Cho phép ghi vaò đĩa mọi lúc
Creational patterns
Các mẫu tạo sinh
Design pettern
Mẫu thiết kế
Factory pattern
Mẫu chế tạo
Firewall proxy
Ủy nhiệm bức tƣờng lửa
Framework
Khung làm việc
GOF(gang of five)
Nhóm 5 thành viên
Idoms
Thành ngữ
Monitor Proxy
Ủy nhiệm màn hình
Protection proxy
Ủy nhiệm bảo vệ
Proxy class
Lớp Ủy nhiệm
Proxy pattern
Mẫu Ủy nhiệm
Remote Proxy
Ủy nhiệm từ xa
Singleton pattern
Mẫu đơn chiếc
Smart reference proxy
Kiểm soát các đối tƣợng bổ sung

Structual patterns
Các mẫu cấu trúc
Synchoronization Proxy
Ủy nhiệm đồng bộ
Virtual Proxy
Ủy nhiệm ảo

vi


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


DANH MỤC CÁC HÌNH VẼ

Số
Tên bảng và hình
Hình 1.1
Khai phá mẫu
Hình 1.2
Vòng đời của Mẫu Pattern
Hình 1.3
Biểu đồ lớp của mẫu chế tạo
Hình 1.4
Biểu đồ lớp mẫu Ủy nhiệm
Hình 1.5
Sơ đồ mối liên kết các mẫu thiết kế
Hình 3.1
Mô hình nghiệp vụ
Hình 3.2

Biểu đồ ca sử dụng mức gộp hệ thống
Hình 3.3
Biểu đồ ca sử dụng quản lý truy cập
Hình 3.4
Biểu đồ ca sử dụng quản lý tiến trình đào tạo
Hình 3.5
Biểu đồ ca sử dụng quản lý lớp và danh sách
Hình 3.6
Biểu đồ ca sử dụng quản lý nhập điểm
Hình 3.7
Áp dụng mẫu Proxy vào quá trình thao tác với cơ sở dữ liệu
Hình 3.8
Sơ đồ liên kết ca sử dụng cập nhật môn học
Hình 3.9
Sơ đồ cộng tác ca sử dụng cập nhật môn học
Hình 3.10
Sơ đồ liên kết ca sử dụng cập nhật chƣơng trình đào tạo
Hình 3.11
Sơ đồ cộng tác ca sử dụng cập nhật chƣơng trình đào tạo
Hình 3.12
Sơ đồ liên kết ca sử dụng nhập điểm
Hình 3.13
Sơ đồ cộng tác ca sử dụng nhập điểm
Hình 3.14
Biểu đồ phân tích thực thi các ca sử dụng
Hình 3.15
Biểu đồ lớp ca sử dụng cập nhật môn học
Hình 3.16
Biểu đồ lớp ca sử dụng cập nhật giáo viên giảng dạy
Hình 3.17

Biểu đồ lớp ca sử dụng cập nhật chƣơng trình đào tạo
Hình 3.18
Biểu đồ lớp ca sử dụng triển khai chƣơng trình học cho lớp
vii


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Hình 3.19
Biểu đồ lớp ca sử dụng cập nhật lớp
Hình 3.20
Biểu đồ lớp ca sử dụng cập nhật thông tin học viên
Hình 3.21
Biểu đồ lớp ca sử dụng nhập điểm
Hình 3.22
Biểu đồ lớp sau khi áp dụng mẫu
Hình 4.1
Form đăng nhập
Hình 4.2
Form tìm kiếm học viên
Hình 4.3
Form tìm kiếm giáo viên
Hình 4.4
Form tìm kiếm môn học
Hình 4.5
Form quản trị ngƣời dùng
Hình 4.6
Các thông tin hệ thống
Hình 4.7
Giao diện một trong các form của menu quản trị thông tin hệ thống

Hình 4.8
Form giao diện quản lý chƣơng trình đào tạo
Hình 4.9
Form giao diện thành lập lớp
Hình 4.10
Form giao diện tải từ xls file
Hình 4.11
Form giao diện nhập danh sách từ file Excel
Hình 4.12
Form giao diện thôi học
Hình 4.13
Form giao diện chuyển lớp
Hình 4.14
Form giao diện chuyển điểm từ lớp cũ sang lớp mới
Hình 4.15
Form giao diện trở lại học
Hình 4.16
Form giao diện chức năng nhập điểm
Hình 4.17
Giao diện nhập điểm từ file Excel
Hình 4.18
Form giao diện chức năng nhập điểm tốt nghiệp

1

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

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
2


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Chƣơng 1. TỔNG QUAN VỀ PHÂN TÍCH THIẾT KẾ HƢỚNG MẪU

1.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.1.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ó.
3


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

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.
1.1.2. 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ế.
4


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

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
5


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


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.
Mẫu này mô tả cách bao gói và lƣu trữ trạng thái bên trong của đối tƣợng để đối tƣợng
có thể quay về trạng thái đó trong tƣơng lai.
6


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


Các mẫu thiết kế cũng đặc tả mối quan hệ giữa các giao diện. Cụ thể, chúng
thƣờng yêu cầu một vài lớp có các giao diện tƣơng tự nhau hoặc chúng đặt các ràng
buộc trên giao diện của một vài lớp, ví dụ mẫu Decorator và mẫu Proxy.
- Đặc tả việc triển khai đối tượng
Lớp khác với kiểu: lớp định nghĩa việc triển khai đối tƣợng, kiểu chỉ tham chiếu
tới giao diện của đối tƣợng, nó thể hiện một tập yêu cầu có thể gửi đến đối tƣợng.
Nhiều mẫu thiết kế chú trọng đến sự phân biệt giữa lớp và kiểu. Ví dụ, các đối
tƣợng trong mẫu Chain of Responsibility phải có cùng kiểu nhƣng thƣờng có các sự cài
đặt khác nhau.
- Tăng hiệu quả tái sử dụng
Trong phát triển hƣớng đối tƣợng, có hai cách để tái sử dụng là sử dụng thừa kế
và kết hợp các đối tƣợng. Mỗi cách này có những thuận lợi và rào cản riêng. Sử dụng
thành phần đại diện (delegation) là một cách để kết hợp những thuận lợi của hai cách
trên. Nhiều mẫu hỗ trợ sử dụng khái niệm này trong thiết kế, nhƣ State, Strategy,
Visitor, Mediator, Chain of Responsibility và Bridge.
- Liên hệ các cấu trúc thời gian chạy và các cấu trúc thời gian biên dịch
Các cấu trúc ở thời gian biên dịch gồm các lớp và mối quan hệ cố định giữa các
lớp, còn các cấu trúc ở thời gian chạy gồm các đối tƣợng và sự giao tiếp giữa các đối
tƣợng. Có nhiều mẫu hỗ trợ hiểu và xây dựng các cấu trúc thời gian chạy phức tạp,
chẳng hạn Compostise, Decorator, Observer, Chain of Responsibility.
- Thiết kế cho sự thay đổi
Tính chất của thiết kế mà đảm bảo khả năng tái sử dụng là cho phép bổ sung yêu
cầu mới và thay đổi yêu cầu hiện tại. Mẫu giúp cho hệ thống có thể thay đổi bằng cách
để cho một số phần của hệ thống độc lập với những phần khác, chẳng hạn, các mẫu
Bridge, Chain of Responsibility, Composite, Decorator, Observer và Strategy hỗ trợ
mợ rộng các chức năng của hệ thống bằng cách tạo các lớp con.
7



Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

1.1.3. Phân loại
- Erich gama và các đồng sự đã đƣa ra 23 mẫu thiết kế, đƣợc chia thành 3 loại dựa trên
hai tiêu chí sau
+ Phân loại theo phạm vi áp dụng của mẫu: Đƣợc sử dụng khi ta cần xác
định khi ta cần áp dụng Design Patterns vào các lớp hay các đối tƣợng. Áp dụng vào
lớp nhằm mô tả và giải quyết các mối quan hệ đƣợc thiết lập qua cơ chế thừa và chỉ
xảy ra ở thời điểm biên dịch, giữa các lớp đối tƣợng và lớp con của chúng. Áp dụng
vào các đối tƣợng nhằm mô tả và giải quyết các mối quan hệ, cái mà có thể thay đổi tại
thời điểm chạy chƣơng trình – run time, giữa các đối tƣợng.
Class
Factory Method
Adapter
Interpreter
Template Method
Object
Abstract Factory
Builder
Prototype
Singleton
Adapter
Bridge
Composite
Decorator
Façade
Flyweight
Proxy
Chain of Responsibility
Command

Interator
Mediator
Memento
Observer
State
Strategy
Visitor

Class:
- Các mẫu áp dụng chủ yếu lên các lớp
- Giải quyết mối quan hệ giữa các lớp và các lớp con. Các mối quan hệ này đƣợc
thiết lập qua thừa kế, là mối quan hệ tĩnh, tại thời gian biên dịch.
8


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Object:
- Các mẫu áp dụng chủ yếu lên các đối tƣợng.
- Giải quyết mối quan hệ giữa các đối tƣợng, là mối quan hệ động và thay đổi tại
thời gian chạy.
- Các mẫu cấu trúc áp dụng trên lớp dùng thừa kế để cấu thành lớp.
- Các mẫu cấu trúc áp dụng trên đối tƣợng mô tả các cách để kết hợp các đối
tƣợng.
- Các mẫu hành vi áp dụng trên lớp dùng thừa kế để mô tả các thuật toán và các
luồng điều khiển.
- Các mẫu hành vi áp dụng trên đối tƣợng mô tả cách thức mà một nhóm đối
tƣợng cộng tác với nhau để thực hiện một nhiệm vụ mà không có một đối tƣợng riêng
lẻ nào có thể thực hiện độc lập.
+ Phân loại theo ngôn ngữ triển khai mẫu: Ngôn ngữ Java: interfaces,

responsibility, construction, operations, and extensions.
+ Phân loại theo mục đích sử dụng: Với tiêu chí này, các mẫu thiết kế đƣợc
chia thành 3 loại gồm các mẫu dùng để kiến tạo đối tƣợng, các mẫu tƣơng tác và các
mẫu kiến trúc.
Creational
Giải quyết các việc tạo
các lớp và các đối tượng
Structural
Giải quyết mối quan hệ
cấu trúc giữa các lớp và
các đối tượng
Behavioral
Mô tả các cách thức mà
các lớp và các đối tượng
tương tác với nhau và sự
phân bổ trách nhiệm
giữa chúng
9


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Factory Method
Abstract Factory
Builder
Prototype
Singleton
Adapter
Adapter
Bridge

Composite
Decorator
Façade
Flyweight
Proxy
Interpreter
Template Method
Chain of Responsibility
Command
Interator
Mediator
Memento
Observer
State
Strategy
Visitor

1.2. Quy trình phân tích thiết kế hƣớng mẫu
1.2.1. Giai đoạn 1
Khai phá: Trong việc tạo ra bất kì mẫu nào, giai đoạn đầu tiên đều liên quan tới
việc làm tài liệu Mẫu. Hoạt động chính trong giai đoạn này là việc khai phá các Mẫu.
Các tác giả có kinh nghiệm, làm việc trong các dự án thực tế, khám phá và làm tài liệu
các Mẫu. Các tác giả cũng có thể khai thác các Mẫu trong các dự án của họ [7]. Tác giả
của một Mẫu phải quyết định điều gì tạo thành một Mẫu, điều gì làm cho nó có thể
đƣợc sử dụng lại, nó phục vụ cho miền nào và vì thế chỉ rõ đó có phải là một Mẫu hay
không.
10


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


Hình 1.1: Khai phá mẫu
1.2.2. Giai đoạn 2
Hoàn thiện: Giai đoạn thứ 2 đƣợc các nhà nghiên cứu và các nhà thực hành có
kinh nghiệm đề cập đến việc đánh giá và cải tiến các Mẫu. Trong giai đoạn này tác giả
của Mẫu đƣa Mẫu ra để xem xét ở một cuộc hội thảo đƣợc tổ chức hàng năm. Việc đệ
trình này sẽ đƣợc giao cho cho một nhà phê bình. Trong cộng đồng Pattern một nhà
phê bình trên thực tế là một ngƣời hƣớng dẫn làm việc với tác giả trên tiến trình cùng
xem xét để cải tiến Mẫu đã đƣa ra. Vào phút cuối của quá trình xem xét, Mẫu hoặc
đƣợc chấp nhận trong cuộc hội thảo hoặc bị từ chối. Các mẫu đƣợc chấp nhận sẽ đƣợc
xem xét lại trong cuộc hội thảo với một nhóm các tác giả có kinh nghiệm, họ tạo ra các
yêu cầu cho các cải tiến đối với Mẫu và chia sẻ kinh nghiệm của họ trong việc giải
quyết các vấn đề. Mục đích của giai đoạn này là giúp tác giả của Mẫu cải thiện phiên
bản Mẫu hoặc đề nghị loại bỏ mẫu vì sự thiếu phù hợp hoặc khả năng tái sử dụng thấp.
Đầu ra của giai đoạn này là Mẫu đƣợc làm tài liệu rõ ràng phục vụ cho những ngƣời
mới làm quen với Mẫu, các nhà thiết kế ứng dụng và các nhà phát triển. Sau đó phiên
bản mẫu sẽ đƣợc công bố trong Biên bản lƣu của cuộc họp.
1.2.3. Giai đoạn 3
11


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Việc dùng lại: Giai đoạn thứ 3 liên quan đến cùng với việc dùng lại Mẫu trong các ứng
dụng. Ngƣời dùng Mẫu tìm kiếm các Mẫu trong số các Biên bản hội nghị PloP đã đƣợc
công bố hoặc các cuốn sách PloPD (Pattern Language Of Program Design). Sau đó họ
áp dụng Mẫu trong các dự án thực tế. Ngƣời dùng cung cấp thông tin phản hồi lại cho
tác giả của Mẫu về những khó khăn mà họ phải đối mặt khi áp dụng và đƣa ra các yêu
cầu cải tiến các Pattern đó.



Hình 1.2. Vòng đời của Mẫu Pattern
12


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


Nhƣ đƣợc chỉ trong Hình 1.2, các giai đoạn trong vòng đời mẫu đƣợc thực hiện
lặp đi lặp lại, vì vậy các Mẫu sẽ đƣợc cải tiến liên tục. Chúng ta mong đợi rằng các
Mẫu đã đƣợc chứng minh tính đúng đắn trong việc dùng lại sẽ đạt đƣợc chất lƣợng cao,
bởi vì nó đã trải qua một số giai đoạn cải tiến. Chất lƣợng cao là một thuộc tính then
chốt của thành phần thiết kế và vì vậy các Mẫu tuân theo vòng đời phát triển này sẽ đủ
điều kiện để là các thành phần thiết kế.
1.3. Đặc tả một số các mẫu thiết kế cần dùng cho bài toán
Trong số 23 mẫu thiết kế mà Erich gama và các đồng sự đã đƣa [7], thông thƣờng
chúng ta chỉ sử dụng một số trong số các mẫu thiết kế đó. Cụ thể là trong quá trình xây
dựng hệ thống đối với bài toán Quản lý điểm tại trƣờng Cao đẳng Cộng Đồng Hải
Phòng, chúng tôi đã áp dụng các mẫu thiết kế sau:
1.3.1. Mẫu chế tạo (Factory Pattern)
1.3.1.1. Định nghĩa
Mẫu chế tạo (Factory Pattern) định nghĩa một lớp (interface, abstract, class) đóng
vai trò nhƣ một “nhà xƣởng” có nhiệm vụ trừu tƣợng hóa quá trình khởi tạo đối tƣợng
“cụ thể” khi ứng dụng chạy. Tại thời điểm thiết kế, đối tƣợng đƣợc định nghĩa trừu
tƣợng. Các mẫu này giúp hệ thống không phải phụ thuộc vào cách một đối tƣợng đƣợc
tạo ra, xây dựng và thể hiện [4].
1.3.1.2. Đặc điểm
Mẫu chế tạo kiểm soát đƣợc các hoạt động trong suốt chu kỳ sống của đối tƣợng,
nhƣ khởi tạo đối tƣợng, hủy đối tƣợng…Đảm bảo cho các đối tƣợng đƣợc thực thi an
toàn. Nắm đƣợc thông tin về những đối tƣợng nào đƣợc tạo ra và đƣợc khởi tạo ra sao.

Nói cách khác, các đối tƣợng đƣợc quản lý tốt và an toàn. Đối tƣợng của Factory
thƣờng đƣợc đặt tên theo những chuẩn khác nhau nhƣng vẫn có thể dễ dàng nhận ra
thiết kế Factory chứa trong đó. Ví dụ: BankFactory…
13


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Tính chất đóng gói thể hiện rõ trong mẫu Factory, các thông tin liên quan đến
truy cập đối tƣợng đƣợc che giấu trong Factory. Thiết kế Factory luôn có một thủ tục
khởi tạo đối tƣợng, ví dụ creatObject().
Mẫu Factory luôn tuân thủ nguyên tắc thiết kế (Dependency Inversion Principle -
DIP) không nên phụ thuộc vào những thứ quá cụ thể.
1.3.1.3. Phân loại
Mẫu Factory đƣợc thiết kế theo một trong hai cách sau đây:
a. Lớp cơ sở (Base- class): mẫu này sử dụng tính chất thừa kế để phân loại các
đối tƣợng đƣợc tạo ra.
b. Đối tƣợng cơ sở (Base – object): Sử dụng mối quan hệ kết hợp để tham chiếu
tới một đối tƣợng sẽ đƣợc tạo ra. Đối tƣợng đƣợc tạo ra sẽ trở thành một phần hay
thuộc tính của lớp Factory. Chúng ta thƣờng hay gặp loại này trong mẫu chế tạo trừu
tƣợng (Abstrac Factory Pattern).
14


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

1.3.1.4. Một biểu đồ lớp bằng UML của mẫu chế tạo
Hình 1.3 Biểu đồ lớp của mẫu chế tạo
1.3.2. Mẫu Ủy nhiệm (Proxy Pattern)
1.3.2.1. Định nghĩa

Mẫu Ủy nhiệm (Proxy pattern): là mẫu thiết kế mà ở đó tất cả các truy cập trực
tiếp một đối tƣợng nào đó sẽ đƣợc chuyển hƣớng vào một đối tƣợng trung gian của lớp
Ủy nhiệm (Proxy class) [4].
Mẫu Ủy nhiệm không những giúp quản lý đối tƣợng tốt hơn mà còn có nhiệm vụ
bảo vệ việc truy cập một đối tƣợng bằng cách thông qua proxy, hay còn gọi là truy cập
gián tiếp. Mẫu Proxy đƣợc Ủy quyền về phía ứng dụng khách cho phép tƣơng tác với
đối tƣợng đích theo những cách khác nhau, nhƣ gửi yêu cầu một dịch vụ nào đó, theo
dõi trạng thái và vòng đời đối tƣợng, xây dựng lớp vỏ bảo vệ đối tƣợng…Thí dụ,
chúng ta phát hiện ra một đối tƣợng nhƣ một thƣ viện DLL có thể bị khai thác truy cập
vào trong một số trƣờng quan trọng, khi đó chúng ta không thể mở mã nguồn thƣ viện
15


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

đã đƣợc dịch để vá lỗ hổng. Giải pháp lúc này là xây dựng một proxy ngăn chặn truy
cập các trƣờng đó và cuối cùng biên dịch lại thành một DLL mới.
1.3.2.2. Phân loại [4]
Độ phức tạp của giải pháp sử dụng mẫu Ủy nhiệm phụ thuộc vào tình huống bài
toán đƣa ra.
- Ủy nhiệm từ xa (Remote Proxy): Máy khách truy cập qua remote proxy để tham
chiếu tới một đối tƣợng đƣợc bảo vệ nằm bên ngoài ứng dụng nhƣ dịch vụ Windows,
dịch vụ web, ứng dụng từ xa. . . Mô hình này “ che giấu” đối tƣợng đƣợc triệu gọi đang
nằm ở rất xa đâu đó và client có vẻ nhƣ truy cập vào đối tƣợng nằm trên cùng một
miền làm việc.
- Ủy nhiệm ảo (Virtual Proxy): tạo ra một đối tƣợng trung gian mỗi khi có yêu cầu tại
thời điểm thực thi ứng dụng, nhờ đó làm tăng hiệu suất của ứng dụng.
- Ủy nhiệm giám sát (Monitor Proxy): sẽ thiết lập các ràng buộc bảo mật trên đối tƣợng
cần bảo vệ, ngăn không cho client truy cập một số trƣờng quan trọng của đối tƣợng.
- Ủy nhiệm bảo vệ (Protection proxy): Đối với proxy này thì phạm vi truy cập của các

client khác nhau sẽ khác nhau. Protection Proxy sẽ kiểm tra các quyền truy cập của
client khi có dịch vụ đƣợc yêu cầu.
- Ủy nhiệm bộ đệm (Cache proxy): Cung cấp không gian lƣu trữ tạm thời cho các kết
quả trả về đối tƣợng nào đó. Kết quả này sẽ đƣợc tái sử dụng cho các client chia sẻ
chung một yêu cầu gửi đến và do đó làm tăng đáng kể hiệu suất chƣơng trình.
- Ủy nhiệm tƣờng lửa (Firewall proxy): Bảo vệ đối tƣợng từ chối các yêu cầu xuất xứ
từ các client không tín nhiệm.
- Ủy nhiệm tham chiếu thông minh (Smart reference proxy): Là nơi kiểm soát các hoạt
động bổ sung mỗi khi đối tƣợng đƣợc tham chiếu, ví dụ nhƣ kiểm soát vòng đời của
đối tƣợng, lƣu lại số lần tham chiếu vào đối tƣợng…

×