1
Chương 7
Kiến trúc
Document/View
2
7.1. Giới thiệu document/view
Một ứng dụng theo kiến trúc document/view
Lớp quan sát - CV
Lớp tài liệu - CD
Lớp ứng dụng - CT
Lớp cửa sổ - CS
3
7.1. Giới thiệu document/view...
Các đặc điểm của kiến trúc tài liệu/quan sát
- Tính độc lập dữ liệu, tài liệu của chương trình.
- Tính độc lập của khung nhìn đối với cửa sổ chương trình.
- Tính gắn kết giữa tài liệu và khung nhìn.
- Một khung nhìn một thời điểm chỉ làm việc được với một tài liệu, ngược
lại một tài liệu có thể đồng thời được xlý bởi nhiều khung nhìn.
- Cho phép quản lý lưu trữ tài liệu chương trình một cách “trong suốt
thông qua kỹ thuật Serialize gắn kết với tài liệu.
Khái niệm về tạo lập động (dynamic create): là cơ chế cho phép tạo các
đối tượng từ các lớp không bằng câu lệnh lập trình. Phải sử dụng các
macro sau để khai báo và định nghĩa cho các lớp tương ứng:
DECLARE_DYNCREATE( class_name ),
IMPLEMENT_DYNCREATE( class_name , base_name ),
RUNTIME_CLASS( class_name ).
4
7.1. Giới thiệu document/view...
hai kiểu kiến trúc này: SDI (đơn tài liệu) và MDI (đa tài liệu)
- Đơn tài liệu là chương trình chỉ xlý một tài liệu tại một thời điểm.
- Đa tài liệu cho phép xlý nhiều tài liệu (trên nhiều khung nhìn) đồng thời.
Minh họa SDI và MDI như sau:
5
7.2. Ứng dng kiểu SDI
Bước 1: Dẫn xuất để xây dựng lớp cung cấp cho chương trình:
Lớp ứng dụng CT từ lp CWinApp.
Lớp khung cửa sổ CS từ lớp CFrameWnd.
Lớp tài liệu CD từ lớp CDocument.
Lớp CV từ lớp CView.
Bước 2: Cho phép tạo lập động các lớp CS, CD và CV bằng cách sử dụng
các cặp macro DECLARE_DYNCREATE
IMPLEMENT_DYNCREATE.
Bước 3: Tạo một mẫu (template) để liên kết các lớp CS, CD và CV với nhau
qua đối tượng lớp CSingleDocTemplate.
Bước 4: Phân tích cú pháp và xlý dòng lệnh bằng hàm
ParseCommandLineInfo().
Bước 5: Nạp chồng một số hàm thành viên để thực hiện như:
- Hàm lưu trvà đọc tài liệu
CObject :: Serialize()
- Hàm vtài liệu lên khung nhìn
CView :: OnDraw(),...