Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 34 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
34
Dung lượng
8,5 MB
Nội dung
5/11/2015 Week -12 Hai V Pham Tham khảo Slides PGS Nguyễn Văn Ba – Tác giả sách phân tích thiết Hệ thống hướng đối tượng Phân tích để trả lời câu hỏi “what” tập trung đáp ứng yêu cầu chức hệ thống Thiết kế để trả lời câu hỏi “how”, tập trung đáp ứng yêu cầu phi chức (tiện ích, hiệu năng, tương thích với phần cứng…) hệ thống Thiết kế chỉnh sửa lại mơ hình phân tích đưa thêm vào nhiều lớp 2.1 Mục đích 2.2 Mơ tả giao diện hệ thống 2.3 Làm nguyên mẫu 5/11/2015 Dựa vào tạo lập GUI (Graphical user interface builder) ta thành lập sớm nhanh ngun mẫu (prototype) giao diện người dùng, có tính thăm dò, nhằm vào mục đích sau: ◦ Tạo môi trường làm việc cụ thể, dễ tiếp xúc, dễ làm thử, làm cho người dùng trở nên yên tâm hơn, động việc đóng góp cho việc phát triển hệ thống ◦ Qua trình dùng thử, ta thu thập nhiều ý kiến phản hồi có ích từ phía người dùng ◦ Sớm phát yêu cầu hay chức bị bỏ sót, sớm nhìn thấy điểm yếu, chỗ khó khăn hệ thống Như biết, cặp đối tác - ca sử dụng liên quan, có lớp biên để chuyển đổi thông tin vào-ra Thể lớp biên giao diện mà ta cần phải mô tả Muốn mô tả chúng, ta dõi theo bước kịch ca sử dụng, xét nội dung tương tác đối tác hệ thống, thông tin vào ra, hành động yêu cầu để xác định phần tử giao diện Bản mô tả giao diện thường mở đầu với điểm sau: Tên giao diện; Diễn tả ngắn nội dung giao diện với độ - 10 dòng văn tự; Mức độ phức tạp giao diện (phức tạp/chuẩn/đơn giản); Ghi thêm, có Tiếp mô tả chi tiết, với đặc điểm kỹ thuật khác biệt, tuỳ thuộc vào loại giao diện sau: ◦ ◦ ◦ ◦ Các Các Các Các giao diện đối thoại; thông tin xuất (thư, báo cáo v.v ); giao diện liệu từ/đến hệ thống ngoài; giao diện chức đến hệ thống 5/11/2015 Làm nguyên mẫu nên bắt đầu sớm tốt Chẳng hạn bắt đầu làm nguyên mẫu sau đưa ca sử dụng Ngày có nhiều tạo lập giao diện người dùng (GUI builders) cho phép làm nguyên mẫu giao diện mà khơng tốn cơng sức Bước đầu trường rỗng cho giá trị giả Các nút phần tử đối thoại khác chưa có hiệu ứng rõ rệt cần giải thích "miệng" Qua nhiều vòng lặp, giao diện trở nên sinh động dần tới phương án cuối Như vậy, người dùng làm việc thử với nguyên mẫu Nguyên mẫu có ý nghĩa thăm dò => nên làm nhanh khơng cầu tồn Chưa nên ý nhiều trình bày, mỹ thuật mà cần ý nội dung (các trường, frame) luồng dẫn dắt từ phần tử giao diện sang phần tử giao diện khác Quá trình phát triển ngun mẫu làm đồng thời với q trình phân tích thiết kế, hỗ trợ cho phân tích thiết kế Chú ý, nguyên mẫu giao diện nói chung mặt hệ thống, chưa phản ánh hết tầm sâu hệ thống Vậy, cần nói rõ với người dùng không nên ảo tưởng nguyên mẫu Thực làm nguyên mẫu hỗ trợ tốt, thay cho bước phân tích thiết kế hệ thống cách nghiêm túc 3.1 Mục đích 3.2 Phân rã HT thành HT 3.3 Mô tả thành phần vật lý HT 3.4 Bố trí thành phần khả thi vào nút phần cứng 5/11/2015 Thiết kế hệ thống thiết kế kiến trúc tổng thể Các thành phần tạo nên kiến trúc phụ thuộc vào cách nhìn hệ thống Trong phần này, ta tiếp cận kiến trúc theo góc nhìn (theo hệ con, theo thành phần phần mềm, theo đơn vị phần cứng): ◦ Phân rã hệ thống thành hệ (các gói) ◦ Mơ tả thành phần vật lý hệ thống ◦ Bố trí thành phần khả thi vào nút phần cứng 10 Khái niệm hệ ◦ Các lớp thực thể cấu trúc nhỏ so với HT thực Bởi vậy, số lớp hệ thống lên tới hàng chục, ta nên gom lớp liên quan với thành nhóm gọi hệ ◦ Hệ (subsystem) gom nhóm lơgic lớp có gắn kết bên mạnh tương liên bên yếu ◦ Thuật ngữ hệ nhiều tác giả dùng, G Booch lại gọi phạm trù (category), thực thuật ngữ chuẩn UML Trái lại, UML dùng thuật ngữ gói (package), ta biểu diễn hệ dạng gói, mang theo khn dập 11 ◦ Nội dung hệ (gồm lớp mối liên quan chúng) UML 2.0 diễn tả khung (frame), với tựa đề viết hình chữ nhật cắt góc theo khuôn dạng: [] Tên [] 12 5/11/2015 ◦ Số lớp hệ khơng nên q hay nhiều q (thường có khoảng mười lớp vừa) 13 Sự gắn kết cao lớp hệ thể hiện: Về mục đích: Chúng phải cung cấp dịch vụ có chất cho người dùng Như chúng phải thuộc vào lĩnh vực đề cập số thuật ngữ chung (chẳng hạn hệ giao diện đề cập thuật ngữ như: cửa sổ, thực đơn, nút nhấn, ) Về xu phát triển: Người ta tách lớp bền vững với lớp có nhiều khả thay đổi ặc biệt, thường tách lớp nghiệp vụ với lớp ứng dụng xếp chúng vào hệ khác Về ứng dụng công nghệ: ể tận dụng dịch vụ cơng nghệ có sẵn, thư viện chương trình (lớp/thành phần), GUI, hệ quản trị sở liệu v.v , ta thường tách hệ giao tiếp, hệ quản trị liệu khỏi phần lõi (ứng dụng nghiệp vụ) HT 14 Sự tương liên hệ thể mối liên quan phụ thuộc chúng Mà phụ thuộc hai hệ phản ánh mối liên quan tĩnh (thừa kế, liên kết ) mối liên quan động (trao đổi thông điệp) lớp thuộc hai hệ Sự phụ thuộc hệ phải đơn giản, lỏng lẻo tốt ể đảm bảo tính tương liên yếu này, thành lập hệ con, áp dụng quy tắc sau: ◦ Các lớp thuộc vào phả hệ thừa kế nên xếp vào hệ ◦ Các lớp có mối liên quan kết nhập hợp thành với thường xếp vào hệ ◦ Các lớp cộng tác với nhiều, trao đổi thông tin nhiều, thể qua biểu đồ tương tác, nên đặt chung vào hệ ◦ Nên tránh phụ thuộc vòng quanh lớp 15 5/11/2015 Kiến trúc phân tầng ◦ Một hệ thường định nghĩa dịch vụ mà cung cấp Mối liên quan hệ với phần lại hệ thống ngang hàng khách hàng/dịch vụ ◦ Trong mối liên quan ngang hàng (peer-to-peer) bên truy cập dịch vụ bên Bấy giao tiếp không thiết dạng câu hỏi trả lời liền sau đó, mà giao tiếp loanh quanh, dễ dẫn tới sai lỗi đáng tiếc thiết kế ◦ Còn mối liên quan khách hàng/dịch vụ (client/server) đơn giản hơn: bên khách hàng gọi bên dịch vụ bên dịch vụ thực dịch vụ theo yêu cầu trả kết cho bên khách hàng Bên khách hàng phải biết giao diện bên dịch vụ, song bên dịch vụ khơng cần biết giao diện bên khách hàng 16 Từ hai hình thức giao tiếp mà ta có hai cách để chia hệ thống thành hệ con: ◦ Tổ chức hệ thống thành tầng theo chiều ngang, với mối quan hệ khách hàng/dịch vụ luôn hướng từ tầng xuống (các) tầng Một thí dụ hệ thống phân thành tầng hệ thống tạo cửa sổ giao diện người dùng máy tính ◦ Tổ chức hệ thống thành lát theo chiều đứng, với quan hệ ngang hàng lát, nhiên lát độc lập tương liên yếu với Một thí dụ hệ thống phân lát hệ điều hành, thường gồm hệ hệ quản lý tệp, điều khiển thiết bị, quản lý kiện ngắt 17 Rõ ràng tổ chức phân tầng đáng ưu tiên hơn, mang lại nhiều ưu thiết kế, cài đặt sử dụng lại Song hệ thống lớn ta thường phải phối hợp hai cách tổ chức phân tầng phân lát, chẳng hạn phân hệ thống thành tầng, tầng lại phân thành lát 18 5/11/2015 Khi thực phân tầng, số tầng tuỳ thuộc phức tạp hệ thống: ◦ Trong hệ đơn giản, số tầng hai (2-tiers) Bây tầng khách hàng quản lý giao diện người dùng q trình khai thác, tầng dịch vụ xử lý việc cất giữ liệu ◦ Trong hệ phức tạp hơn, người ta tách tầng thành tầng giao diện - ứng dụng, tầng nghiệp vụ (hay lĩnh vực), bền vững có nhiều khả sử dụng lại Vậy kiến trúc khách hàng/dịch vụ ba tầng (3-tiers) 19 Cuối hệ lớn, số tầng nhiều (n-tiers), mà điển hình kiến trúc năm tầng, với tầng kể từ xuống là: ◦ Tầng ng trình bày: bày: Chuyển liệu cho người dùng biến đổi hành động người dùng thành kiện vào hệ thống ◦ Tầng ng ứng ng dụng ng: ng: bao gồm đối tượng điều khiển dẫn dắt quy luật ứng dụng ◦ Tầng ng nghiệp nghi p vụ:: bao gồm đối tượng nghiệp vụ (hay lĩnh vực), cài đặt quy tắc quản lý chúng ◦ Tầng ng truy cập p liệu li u: phục hồi đối tượng nghiệp vụ từ phương tiện lưu trữ ◦ Tầng ng lưu trữ tr liệu li u: bảo đảm lưu giữ lâu dài liệu 20 Một thí dụ kiến trúc khách hàng/dịch vụ năm tầng cho bên, gói (hệ con) có mang khn dập thích hợp, là: (khuôn khổ giao diện người dùng), (giao diện người dùng), (lĩnh vực), (cơ sở hạ tầng), (cơ sở liệu) 21 5/11/2015 Thành phần biểu đồ thành phần ◦ Nếu biểu đồ gói (hệ con) mà ta nói phần phản ánh cho góc nhìn cấu trúc lôgic hệ thống (ở mức cao so với biểu đồ lớp), biểu đồ thành phần, với đơn nguyên thành phần, lại cho ta cách nhìn cấu trúc vật lý hệ thống ◦ Chữ "vật lý" hiểu theo nghĩa mô tả hướng tới sản phẩm phần mềm, kết cài đặt thực tồn tại, sản phẩm lơgic, kết q trình phân tích Tuy nhiên ta chưa đề cập tới phần cứng, tính vật lý đương nhiên 22 ◦ UML định nghĩa thành phần (component) phận vật lý thay hệ thống, thích ứng cung cấp thực cho tập giao diện ◦ Nói đơn giản hơn, thành phần cài đặt tập hợp phần tử lôgic, lớp hay hợp tác 23 Có ba loại thành phần: ◦ Các thành phần triển khai (deployment components): ó thành phần cần đủ để tạo nên hệ thống khả thi, thư viện động (DLL) mã khả thi (executable) ịnh nghĩa thành phần UML đủ rộng để bao hàm mơ hình đối tượng kinh điển, COM+, CORBA, Enterprise Java Beans, mô hình đối tượng khác biệt trang Web động, bảng sở liệu, mã khả thi sử dụng chế truyền thông riêng 24 5/11/2015 ◦ Các thành phần sản phẩm làm việc (work product components): ó thành phần có từ trình phát triển hệ thống, bao gồm tệp mã nguồn, tệp liệu, từ mà ta tạo lập thành phần triển khai Các thành phần không trực tiếp tham gia vào hệ thống thực thi, khơng có chúng khơng tạo hệ thống thực thi ◦ Các thành phần thực (execution components): ó thành phần tạo nên kết hệ thực hiện, chẳng hạn đối tượng COM+, cá thể hoá từ DLL 25 ể tổ chức thành phần lại với nhau, ta có hai cách: ◦ Gom thành phần vào gói, nghĩa đưa chúng vào hệ con; ◦ Thiết lập mối liên quan phụ thuộc chúng, ta có biểu đồ thành phần 26 Các mục đích mơ hình hố biểu đồ thành phần ◦ Như trình bày, có nhiều loại thành phần (ít có ba loại thành phần triển khai, thành phần sản phẩm làm việc thành phần thực hiện), biểu đồ thành phần lập phải có mục đích mơ tả loại thành phần 27 5/11/2015 Mơ hình hố thành phần khả thi thư viện: Có thể nói mục đích việc sử dụng biểu đồ thành phần để mơ hình hố thành phần triển khai, tạo nên cài đặt hệ thống ◦ Nếu ta muốn cài đặt hệ thống gồm tệp khả thi (.EXE), ta chẳng cần dùng tới thành phần ◦ Ngược lại hệ thống gồm nhiều tệp khả thi liên kết với thư viện đối tượng ta cần dùng biểu đồ thành phần để giúp ta hiển thị, đặc tả, thành lập tư liệu hoá định hệ thống vật lý 28 Thí dụ: Một biểu đồ thành phần triển khai 29 Mơ hình hố bảng, tệp tư liệu: Bên cạnh tệp khả thi thư viện tạo nên phần chạy hệ thống, nhiều thành phần bố trí khác, gọi thành phần phụ trợ, cần cho việc cài đặt hệ thống Chẳng hạn để cài đặt, ta cần tệp liệu, tư liệu trợ giúp, scripts, tệp log, tệp khởi tạo, tệp xếp chỗ hay gỡ bỏ Mơ hình hố thành phần phần quan trọng để diễn tả hình trạng hệ thống 30 10 5/11/2015 Các liên kết lại thường kèm theo nhiều ràng buộc Chẳng hạn số (quy định số lượng tối đa tối thiểu), hợp thành (ràng buộc tồn đồng thời toàn thể phận), hạn định (cho phép thu hẹp số) tính chất {OR}, {AND}, {subset} Các ràng buộc phải bảo đảm thao tác sử dụng quản lý thuộc tính thể liên kết Chẳng hạn, ta cài đặt liên kết kết nhập khơng có khác biệt, cài đặt hợp thành, lại phải ý lần huỷ bỏ tồn thể, phải huỷ bỏ phận Hạn định cài đặt cách thay vectơ bảng băm (Hashtable) mà khố có kiểu hạn định 58 Khi liên kết có thuộc tính, khơng có thao tác, liên kết cài đặt sau: ◦ ◦ ◦ Nếu liên kết một-một, thuộc tính liên kết đưa vào hai lớp tham gia liên kết; Nếu liên kết nhiều-một, thuộc tính liên kết đưa vào lớp đầu nhiều Nếu liên kết nhiều-nhiều, tốt lập riêng lớp liên kết chứa thuộc tính liên kết Với trường hợp liên kết hai ngơi có thuộc tính thao tác, với trường hợp liên kết nhiều ngơi, ta phải lập thành lớp liên kết Một lớp liên kết tập hợp đôi (hay n) đối tượng thuộc lớp tham gia liên kết 59 Việc thiết kế thuộc tính chủ yếu định nghĩa kiểu cho thuộc tính đưa phân tích ◦ Mặc dù phần lớn thuộc tính thuộc kiểu sở có sẵn ngơn ngữ lập trình, song có thuộc tính tương ứng với cấu trúc liệu cần làm rõ ◦ Các cấu trúc liệu diễn tả lớp, song để phân biệt chúng với lớp bình thường, ta đưa thêm khn dập Với kiểu liệt kê, ta dùng khn dập ◦ Trong cấu trúc liệu này, thuộc tính cơng cộng, cần có thêm thao tác liên quan 60 20 5/11/2015 Thiết kế thuộc tính xác định tầm nhìn cách truy cập vào chúng ◦ Mặc định, thuộc tính riêng tư ◦ Các tính chất UML gắn cho thuộc tính {frozen}, {changeable} hay {readOnly} cần thực ngầm thao tác truy cập: Các thuộc tính {changeable} cần có thao tác truy cập set get Tính chất {frozen} đòi hỏi phải khởi tạo thuộc tính cấu tử (constructor) lớp iều thường thực thông qua tham số khởi tạo Với thuộc tính {readOnly} có thao tác get mà khơng có thao tác set 61 Cuối cùng, thiết kế thuộc tính phải rõ phương thức dùng để cập nhật thuộc tính dẫn xuất Các kỹ thuật vận dụng cho mục đích đề cập mục thiết kế lớp 62 Thí dụ: Thiết kế thuộc tính 63 21 5/11/2015 Thiết kế thao tác bước cuối vòng lặp thiết kế chi tiết Có lẽ công việc thu hút nhiều sức lực thời gian Nội dung thiết kế thao tác đưa hình ảnh chi tiết cho phương thức đề án ể thiết kế tư liệu hoá phương thức, UML cung cấp sẵn cho ta biểu đồ mơ hình hố động thái, là: ◦ Một biểu đồ hoạt động, cho phép mơ tả phương thức mà có lớp khác can thiệp vào Biểu đồ hữu hiệu mô tả giải thuật có nhiều giai đoạn có nhiều phép chọn lựa tình ◦ Một biểu đồ tương tác, cho phép trình bày phương thức mà có nhiều lớp tham gia, lại chọn lựa tình 64 3.1 3.2 3.3 3.4 Thiết Thiết Thiết Thiết kế kế kế kế tầng trình bày tầng ứng dụng tầng nghiệp vụ việc lưu trữ liệu 65 Vòng lặp quy trình thiết kế chi tiết áp dụng cho tầng kiến trúc khách hàng/dịch vụ (tầng trình bày, tầng ứng dụng, tầng nghiệp vụ, tầng truy cập liệu tầng lưu trữ liệu) Tầng trình bày giới hạn phần trơng thấy ứng dụng: phần thực giao diện người máy tính ây phần dễ thay đổi hệ thống, kỹ thuật làm giao diện tiến nhanh, mà người dùng sau thời gian khai thác hệ thống lại thường muốn có đổi hình thức giao tiếp 66 22 5/11/2015 Hình thức giao diện người dùng phổ biến giao tiếp qua cửa sổ (loại Windows) Trong hình thức người dùng đối diện với ba loại khái niệm chính: ◦ Các cửa sổ nội dung bên đó, mà người dùng trơng thấy, dịch chuyển, thay đổi kích cỡ ó phần nhìn thấy phần cấu trúc tĩnh giao diện ◦ Các hành động mà người dùng kích hoạt tạo nên thay đổi trạng thái giao diện ó phần hành vi giao diện ◦ Các luồng thông tin mà hệ thống đưa cho người dùng hay người dùng đưa vào hệ thống thông qua danh sách chọn lựa, trường biên tập ó phần trao đổi thông tin với ứng dụng, tức phần chức giao diện 67 Thiết kế tư liệu hố tầng trình bày trở thành việc xem xét ba sắc thái nói nó, tức hiển thị, hành vi chức Sự trợ giúp dễ dàng thuận lợi công cụ GUI dễ bị lạm dụng, dẫn tới vi phạm nghiêm trọng nguyên tắc cố kết cao tương liên yếu tầng Bởi dễ có xu hướng từ giao diện người dùng ta cho gọi trực tiếp tới đối tượng thực thể để lấy thơng tin, điều tạo tương liên chằng chịt, khó khống chế tầng trình bày với tầng ể tránh nguy này, thiết kế tầng trình bày, ta nên áp dụng khuôn khổ MVC, với định hướng tạo phân công tách biệt ba phần sau: 68 M Model (mơ hình), lớp thực thể (chẳng hạn Khách hàng, ơn hàng) thuộc tầng nghiệp vụ ây nguồn gốc thông tin hiển thị giao diện người dùng Tuy nhiên giao diện không truy cập trực tiếp vào đối tượng thực thể, mà tầng ứng dụng gom thông tin từ đối tượng thực thể vào "tài liệu" (document), giao diện người dùng truy cập vào tài liệu để lấy tin Thường có tương ứng 1-1 khung nhìn tài liệu, song tài liệu tương ứng với hay nhiều đối tượng thực thể 69 23 5/11/2015 ◦ V View (khung nhìn), phần hiển thị giao diện mà người dùng trơng thấy Khung nhìn phải quản lý vật thể đồ hoạ (cấu trúc tĩnh) mình, truy cập vào tài liệu để lấy thông tin hiển thị hay để cập nhật thông tin ◦ C Controller (bộ điều khiển), phần đảm trách việc quản lý động thái (tức hành vi) giao diện, thực chuyển đổi trạng thái giao diện theo kiện kích hoạt từ phía người dùng Có tương ứng 1-1 View Controller Thơng thường View + Controller tạo nên tầng trình bày 70 Tầng ứng dụng bao gồm trước hết lớp điều khiển (đã phân tích, mơ hình cấu trúc tĩnh hệ thống), có nhiệm vụ dẫn dắt trình ứng dụng, thực quy tắc cần bảo đảm ứng dụng 71 Theo James Martin, hệ thống có ba loại quy tắc, hay gọi luật (rules): ◦ Các luật tồn vẹn phát biểu điều phải ln Chẳng hạn thuộc tính phải có giá trị ngun từ đến ◦ Các luật dẫn xuất phát biểu giá trị (hay tập giá trị) tính Chẳng hạn thànhtiền=đơngiá x sốlượng ◦ Các luật hành vi mô tả sắc thái động hành vi, điều kiện phải bước vào thực hành động Chẳng hạn cửa sổ lò vi sóng mở đèn phải bật sáng 72 24 5/11/2015 Các luật trên, thường gọi luật nghiệp vụ, nghiên cứu giai đoạn phân tích ánh xạ vào lớp điều khiển Tuy nhiên có luật hay yêu cầu có tính chất kỹ thuật, thiết kế chi tiết ta phải ý đến ó là: ◦ Sự đồng hoá nhiều cửa sổ liệu chung ◦ Sự tối ưu hoá việc nạp tải liệu trạm người dùng ◦ Sự kiểm sốt chặt chẽ q trình tương tác với người dùng ể đáp ứng yêu cầu trên, việc thiết kế chi tiết tầng ứng dụng thực dựa định nghĩa "tài liệu", biểu diễn cho hình ảnh nhớ trao đổi liệu với cửa sổ Theo định nghĩa, có tài liệu cho cửa sổ Trên sở khuôn khổ cài đặt này, ta xem xét sau ba yêu cầu kỹ thuật vừa nói 73 a) ồng ng b hoá cửa c a sổ s ồng hố cửa sổ việc làm cho cửa sổ khác không mâu thuẫn với chúng trình bày số liệu có chung nguồn gốc Chẳng hạn số thơng tin địa lý, trình bày cửa sổ: cửa sổ văn tự cửa sổ đồ ể đảm bảo tính đồng thơng tin trình bày, ta phải thiết lập mối liên quan kết nhập tài liệu tương ứng với cửa sổ (ở tầng ứng dụng) để rõ chia sẻ thông tin chúng 74 b) Tối T i ưu hoá việc vi c tải t i nạp n p thông tin từ t thực th c thể th Trong hệ phân tán, đối tượng thực thể thường cư trú cách phân tán, làm cho việc truy cập vào chúng trở nên tốn ể tối ưu hố việc tải nạp thơng tin từ thực thể tới tầng ứng dụng (cho tài liệu), ta phải tìm cách giảm thiểu số lần truy cập Muốn thế, ta phải ghi nhớ thông tin tải nạp, để tránh việc truy cập lặp lặp lại thực thể 75 25 5/11/2015 b) Tốii ưu hố việc p thơng tin từ thực vi c tảii nạp th c thể th (tt) tt) Người ta dùng catalô tham chiếu đối tượng thực thể theo OID (Object identifier) chúng ◦ ể tối ưu hố, catalơ tổ chức thành catalơ con, xếp theo tên lớp, để từ tìm đến đối tượng theo OID ◦ Giao diện "ThthểThànhphần" biểu diễn cho thực thể đến từ thành phần phân tán Khi tải nạp thực thể, đối tượng giao diện ThthểThànhphần tạo lập để ghi nhận thông tin tải nạp ◦ Nhờ lần tải nạp sau tìm lại thơng tin (trong catalơ) mà truy cập trực tiếp vào thực tế 76 Tổ chức catalô để lưu giữ thông tin tải nạp: 77 c) Tổ T chức ch c s kiểm ki m soát chặt ch t chẽ ch trình tương tác với v i người ngư i dùng Khi làm việc với cửa sổ, người dùng phát lệnh (command) cách kích vào nút hay kích vào khoản đơn chọn Lệnh có mục đích gọi thao tác đối tượng tài liệu, ứng với cửa sổ đó: 78 26 5/11/2015 Tuy nhiên lệnh phát từ cửa sổ truyền trực tiếp tới lài liệu (nơi nhận lệnh), nhiều lý do: ◦ Lệnh cần bị chặn lại để kiểm tra quyền sử dụng; ◦ Lệnh phải lưu giữ lại, để đưa vào hàng đợi, đến lượt thực hiện; ◦ Dãy lệnh thực liên tiếp cần phải quản lý ghi nhớ để cần trở lại (undo), hay phục hồi (redo) ◦ Có lệnh phải tham số hố để thích ứng theo hồn cảnh cụ thể Tất yêu cầu quản lý lệnh khơng thể giao cho cửa sổ phụ trách được, cửa sổ thiết kế theo dụng cụ (toolkit), phải giữ tính độc lập với ứng dụng Vậy ứng dụng phải tổ chức lấy việc quản lý lệnh cách chặt chẽ sát với u cầu 79 Tầng nghiệp vụ nơi trú ngụ lớp thực thể phản ảnh lĩnh vực ứng dụng ây tầng ổn định có khả tái sử dụng cao Bước đầu, lớp thực thể bao gồm thuộc tính thao tác phát giai đoạn trước Tuy nhiên sau ta phải đưa thêm: ◦ Các thao tác get (lấy) set (đặt) cho thuộc tính, thuộc tính khai báo riêng tư; ◦ Các dịch vụ mà lớp thực thể phải cung ứng, nhằm đáp ứng u cầu tìm kiếm thơng tin theo sắc thái hệ thống; ◦ Các thao tác đáp lại yêu cầu cập nhật, cách chuyển tác dụng cập nhật xuống tầng (tầng lưu trữ liệu) 80 Có đối tượng cần phải lưu trữ lại cách lâu dài (trên nhớ ngồi), khơng thể để với kết thúc chương trình Gọi đối tượng trường cửu (persistent) Thường đối tượng thực thể, đối tượng biên (giao diện) hay đối tượng điều khiển 81 27 5/11/2015 a) Chọn Ch n lựa l a cách lưu trữ tr liệu li u Việc mơ hình hố hệ thống lớp đối tượng tạo nhiều thuận lợi cho việc lưu trữ liệu Tuy nhiên ngày có ba cách lưu trữ dùng: Các hệ thống tệp (tập tin): ó phương tiện lưu trữ thô sơ Lưu trữ liệu tệp khơng gây nên tốn Tuy nhiên cho phép đọc viết đối tượng, mà khơng có khả đặt câu hỏi tìm kiếm liệu phức tạp Vì dùng với hệ thống có tầm quan trọng đáng kể 82 Các sở liệu quan hệ (RDBMS): Tinh tế quản lý liệu tìm kiếm thơng tin với câu hỏi phức tạp Tồn nhiều hệ quản trị CSDL thích ứng theo yêu cầu khác khối lượng, phân tán hệ điều hành Cho nên cách lưu trữ liệu dùng phổ cập Các sở liệu hướng đối tượng (OODBMS): Cho phép lưu trữ quản lý đối tượng cách trực tiếp Nhờ mà nói khâu thiết kế cho việc lưu trữ liệu chẳng việc phải làm Tuy nhiên hệ quản trị CSDL đối tượng chưa thực hồn chỉnh chưa chiếm thị phần lớn thực tế Dưới ta đề cập việc thiết kế CSDL với chọn lựa hệ quản trị CSDL quan hệ 83 b) ánh xạ x lớp l p sang bảng b ng Mỗi lớp trường cữu tương ứng với bảng mơ hình quan hệ: ◦ thuộc tính lớp tương ứng với cột bảng, ◦ cá thể (đối tượng) lớp tương ứng với dòng (một bộ-n) bảng, OID đối tượng đóng vai trò khố (primary key) bảng Có số thuộc tính lớp có kiểu phức tạp (các cấu trúc liệu) không tương ứng với kiểu SQL Vậy phải có biến đổi kiểu phức tạp đó: ◦ Hoặc nhiều cột, cột tương ứng với trường cấu trúc liệu ◦ Hoặc bảng riêng biệt, liên hệ với bảng khố ngồi, cho phép kết nối đối tượng với giá trị thuộc tính phức tạp 84 28 5/11/2015 Sự tương đương lớp bảng Mơ hình đối Mơ hình quanhệ đ i tượng tư ng quanh Lớp Bảng Thuộc tính có kiểu đơn Cột Thuộc tính có kiểu phức tạp Các cột hay khố ngồi ối tượng Bộ-n OID Khố Liên kết Kết nối Khố ngồi hay bảng Thừa kế Khố đồng nhiều bảng 85 Thí dụ: ánh xạ lớp ơnhàng sang bảng Kết ánh xạ biểu đồ lớp (trong UML), diễn tả cấu trúc lưu trữ, lớp mang khuôn dập , tên lớp gắn thêm tiền tố T_ Một công cụ trợ giúp (Rational Rose chẳng hạn) biến đổi biểu đồ thành ngôn ngữ định nghĩa liệu (DDL), cho phép tạo lập bảng CSDL 86 Ánh xạ từ lớp sang bảng lại khơng nên hiểu máy móc ánh xạ 1-1, ánh xạ 1-1 thường dẫn tới tượng không tốt sau: ◦ Quá nhiều bảng nhiều kết nối phải thực hiện: Thông thường biểu đồ lớp chứa nhiều lớp, ánh xạ 1-1 thành bảng, ta có nhiều bảng Mà có nhiều bảng, để tìm kiếm thơng tin CSDL, ta lại phải áp dụng nhiều phép kết nối (join), ảnh hưởng nặng nề tới tốc độ truy cập Vì nên cố gắng gom bảng thường liền với tìm kiếm thành bảng lớn 87 29 5/11/2015 Thiếu bảng: Như ta thấy mục thiết kế liên kết, hai lớp có liên kết nhiều-nhiều mà liên kết lại có thuộc tính, phải định nghĩa lớp liên kết chứa thuộc tính Chẳng hạn Sinh viên Mơn học có liên kết nhiều-nhiều ("Sinh viên hồn thành mơn học"); liên kết lại có thuộc tính (như năm học, kết thi), mơ hình đối tượng, phải thêm lớp liên kết lớp Kết học Chuyển sang mô hình quan hệ, ngồi hai bảng Sinh viên Mơn học, ta có bảng Kết học 88 Tuy nhiên trường hợp liên kết nhiều-nhiều hai lớp mà khơng có thuộc tính, lớp liên kết khơng cần có biểu đồ lớp Chẳng hạn Dòng ơnhàng Pháthàng có liên kết nhiều-nhiều, nhiên liên kết khơng có thuộc tính nào, khơng cần có lớp liên kết (bởi liên kết nhiều-nhiều cài đặt trực tiếp thuộc tính bội, phép dùng ngơn ngữ lập trình hướng đối tượng) Tuy nhiên chuyển qua mơ hình quan hệ, thiết lại phải có bảng đặt tương ứng đối tượng hai bên để biểu diễn cho liên kết nhiều-nhiều Do ánh xạ 1-1 làm quan hệ 89 • • Mất khả thừa kế: Mơ hình quan hệ khơng sẵn sàng hỗ trợ cho thừa kế Vì ánh xạ đơn giản lớp sang bảng, mà khơng có xử lý đặc biệt (xem dưới) khơng giữ mối liên quan khái quát hoá thừa kế Suy giảm hiệu năng: Một ánh xạ 1-1 thường chuyển biểu đồ lớp thành mơ hình quan hệ dạng chuẩn Tuy nhiên có nhiều ứng dụng hướng tới số báo cáo định, đòi hỏi phải hạ chuẩn liệu (chẳng hạn phải lặp lại liệu nhiều bảng, hay sáp nhập số bảng) nhằm tạo khả truy cập thuận lợi cho mục đích định sẵn ứng dụng 90 30 5/11/2015 c) ánh xạ liên kếtt Trong phần trên, ta đề cập việc thiết kế chi tiết liên kết, vốn sẵn ngơn ngữ lập trình hướng đối tượng Với liên kết một-một: Lập bảng cho lớp (bảng A, B) Khố bảng khố ngồi bảng Thực lập thành hai bảng thực cần thiết liên kết ánh xạ vào (1 đến 1), liên kết đối một, cách tốt lập bảng 91 ◦ Với liên kết một-nhiều: Lập bảng cho lớp (bảng A, B) Khố bảng A (đầu Một) khố ngồi bảng B (đầu Nhiều) ◦ Với liên kết nhiều-nhiều: Lập bảng cho lớp (bảng A, B) Lập thêm bảng kết nối, hay gọi bảng giao (bảng C) Khố bảng A, B định nghĩa khố ngồi bảng C Khố C cột riêng song khố bội hợp thành từ hai khố ngồi 92 ◦ Với kết nhập hợp thành: Trong mơ hình quan hệ kết nhập hợp thành mơ hình hố liên kết bình thường Hợp thành có số 1-1, nên cài đặt thành bảng Nếu hợp thành cài đặt thành hai bảng riêng biệt, khả loại bỏ lan truyền phải xem xét cài đặt CSDL vật lý Còn kết nhập, nên để thành hai bảng, đối tượng bị kết nhập tồn cách độc lập ◦ Với liên kết đệ qui: ó loại liên kết lớp với nó, cho ta kết nối cặp đối tượng lớp Liên kết đệ qui cài đặt cách thêm vào cột, mà giá trị giá trị khố lớp đó, xem khố ngồi 93 31 5/11/2015 d) ánh xạ x mốii liên quan khái qt hố Nếu hầu hết ngơn ngữ lập trình hướng đối tượng hỗ trợ cho mối liên quan lớp (sự thừa kế), mơ hình quan hệ khơng hỗ trợ cho Có nhiều cách để chuyển đổi mối liên quan vào mơ hình quan hệ: Lập bảng cho lớp (lớp lớp dưới) Mối liên quan bảng giải theo hai cách: ◦ Dùng OID chung cho bảng phả hệ thừa kế Như để truy cập liệu đối tượng phải thực phép kết nối (join) lớp lớp (cha con) ◦ Lập khung nhìn SQL (view) cho cặp lớp trên/lớp Như số bảng tăng thêm, thực chất phải dùng phép kết nối truy cập liệu Cả hai cách làm cho phép tăng thêm lớp tương lai, mà không làm xáo trộn lớp cũ 94 Chỉ lập bảng (ứng với lớp trên), thuộc tính lớp dồn bảng Như số bảng tối thiểu (=1), số cột tăng thêm, với cá thể, có cột khơng dùng tới Vậy thích hợp số thuộc tính lớp Khơng thuận lợi cho việc thêm lớp Lập bảng cho lớp dưới, lặp lại thuộc tính lớp vào bảng lớp (hạ chuẩn) Như số bảng rút bớt (khơng có bảng cho lớp cha), việc tăng thêm lớp tương lai không gây ảnh hưởng, việc điều chỉnh lớp cha buộc phải điều chỉnh lại bảng Thích hợp số thuộc tính lớp cha 95 Sản sinh sườn chương trình (trong Java) từ B lớp: ◦ Một lớp UML trở thành lớp Java ◦ Các thuộc tính UML trở thành biến cá thể Java ◦ Các thao tác UML trở thành phương thức Java 96 32 5/11/2015 Sách ghinhậnNgmư ghinh nNgmượn(s nNgmư n(sốhi n(s hiệu) hi u) - tênsách:String –mãsách:String –ngàyXB:Date public class Sach { private String tensach; private String masach; private Date ngayXB; private Docgia nguoimuon; +lấyNgàyTr +l yNgàyTrả():Date yNgàyTr ():Date - ngườimư ngư imượn imư n 2:xácđịnh :xácđ nh GHiệnth GHi nthời(đg) nth i(đg) :Thưviện :Thưvi n cácđộcgi cácđ cgiả: cgi : ộcgi cgiả cgi public Sach() { } public Date layNgayTra() { } } ộcgi cgiả cgi - tên:String - họ:String :String - sốhi hiệu:int hi u:int tht:Thửthư tht:Th thư 1:đg:=lấy(s cgiả 1:đg:=l y(sốhi y(s hiệu): hi u): ộcgi cgi public void ghinhanNgmuon(int sohieu) { Docgia dg = cacdocgia.lay(sohieu); tht.xacđInhDGHienthoi(dg); } 97 Câu hỏi h i 29: 29 Từ B lớp câu hỏi 24 , đề xuất sườn chương trình Java cho lớp ơnxin T «entity» ĐơnxinĐT -ngàygửi:Date -ngàyxinĐT:Date +nối(phầntử:PhầntửCatalô) +gán(ngàyxinĐT:Date) +từchối() +chấpnhận() +chọnKỳ(k:Kỳhọc) +kếtthúcKỳ() +huỷ() +huỷKỳ(k:Kỳhọc) -gửiđi(ngàygửi:Date) -gửiTừchối(lýdo:String) -gửiĐồngý() -gửiĐơn() Chú ý liên kết cài đặt thuộc tính riêng tư package DenghiDT; import java.util.*; import Catalo.Kyhoc; import Catalo.PhantuCatalo; public class DonxinDT { private Date ngaygui; private Date ngayxinDT; private Nhanvien nguoixin; private Dangky dangky; private PhantuCatalo phantuCatalo; private Traloi traloi; public DonxinDT() { } public void noi(PhantuCatalo phantu) {} public void gan(Date ngayxinDT) { } public void tuchoi() { } public void chapnhan() { } public void chonKy(Kyhoc k) { } public void ketthucKy() { } public void huy() { } public void huyKy(Kyhoc k) { } private void guidi(Date ngaygui) { } private void guiTuchoi(String lydo) { } private void guiDongy() { } private void guiDon() { } public Date layNgaygui() {return ngaygui;} public void ganNgaygui(Date ng) {ngaygui = ng;} public Date layNgayxinDT() {return ngayxinDT;} public void ganNgayxinDT(Date nx) {ngayxinDT = nx;} } 98 Câu hỏi h i 30: 30 Từ B lớp câu hỏi 20, đề xuất sườn chương trình Java cho lớp Lớp T «entity» «entity» Kỳhọc PhầntửCatalô «ordered» «entity» Chủđề 1 «entity» LớpĐT «entity» CơsởĐT 1 «entity» Nộidung 1 - tên:String - thờigian:short - giá:int +tạolậpNôidung(ngườihọc:String, mụctiêu:String,côngcụ:String,kếhoạch:String ) +tạolậpKỳ(ngàyBắtđầu:Date,địađiểmString) +ghép(chủđề:Chủđề,cơsởĐT:CơsởĐT) +điềuchỉnhNộidung(ngườihọc:String, mụctiêu:String,côngcụ:String,kếhoạch:String ) +điềuchỉnhKỳ(ngàyBắtđầu:Date,địađiểmString) +điềuchỉnh(chủđề:Chủđề,cơsởĐT:CơsởĐT) +hủyKỳ(k:Kỳhọc) ý việc cài đặt mối liên quan khái quát hoá liên kết với số “*”, đặc biệt có thêm hạn định «ordered» 99 33 5/11/2015 Nguyên tắc cài đặt liên kết “ ” dùng thuộc tính tập thể tham chiếu đối tượng thay tham chiếu đối tượng đơn Kiểu thuộc tính tập thể thường dùng ArrayList (trước Vector) HashMap (trước HashTable) A1 A2 * B1 B2 public class A1 { private B1 b1; } public class A2 { private B2 cacB2[ ]; } «ordered» A3 B3 A4 B4 hd public class A3 { private List cacB3 = new ArrayList( ); } public class A4 { private Map cacB4 = new HashMap( ); } 10 Với lớp Lớp T ta dùng: Một ArrayList cho liên kết có thứ tự với lớp Kỳhọc Một HashMap cho liên kết với lớp Chủđề (dùng tên chủ đề làm hạn định) thay bảng đơn 10 package CataloDT; import java.util.*; public class LopDT extends PhantuCatalo { private String ten; private short thoigian; private int gia; private List cacKy = new ArrayList( ); private Map cacChude = new HashMap( ); private Noidung noidung; private CosoDT cosoDT; public LopDT( ) {} public void taolapNoidung(String nguoihoc, String muctieu, String congcu, String kehoach) {} public void taolapKyhoc( Date ngayBatdau, String diadiem) { } public void ghep(Chude chude, Kyhoc kyhoc) { } public void dieuchinhNoidung( String nguoihoc, String muctieu, String congcu, String kehoach) {} public void dieuchinhKyhoc( Date ngayBatdau, String diadiem) { } public void dieuchinh(Chude chude, Kyhoc kyhoc) { } public void huyKy(k:Kyhoc) { } public String layTen( ) {return ten;} public void ganTen(String t) {ten=t;} public short layThoigian( ) {return thoigian;} public void ganThoigian(short t) {thoigian=t;} public int layGia( ) {return gia;} public void ganGia(int g) {gia=g;} } 10 34 ... Thiết Thiết Thiết k k k k tầng trình bày tầng ứng dụng tầng nghiệp v việc lưu trữ liệu 65 V ng lặp quy trình thiết k chi tiết áp dụng cho tầng kiến trúc khách hàng/dịch v (tầng trình bày,... Tổ T chức ch c s kiểm ki m sốt chặt ch t chẽ ch q trình tương tác v i v i người ngư i dùng Khi làm việc v i cửa sổ, người dùng phát lệnh (command) cách k ch v o nút hay k ch v o khoản đơn chọn... khố có kiểu hạn định 58 Khi liên k t có thuộc tính, khơng có thao tác, liên k t cài đặt sau: ◦ ◦ ◦ Nếu liên k t một-một, thuộc tính liên k t đưa v o hai lớp tham gia liên k t; Nếu liên k t nhiều-một,