ĐỀ CƯƠNG ÔN TẬP MÔN PHÂN TÍCH THIẾT KẾ HỆ THỐNG

28 2.1K 4
ĐỀ CƯƠNG ÔN TẬP MÔN PHÂN TÍCH THIẾT KẾ HỆ THỐNG

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐỀ CƯƠNG ÔN TẬP MÔN PHÂN TÍCH THIẾT KẾ HỆ THỐNG Câu 1: Trình bày đặc điểm chính của phương pháp thiết kế hướng đối tượng. So sánh pttk hướng đối tượng và phân tích thiết kế hướng chức năng? 1 Câu2: Định nghĩa biểu đồ usecase và các thành phần của biểu đồ UseCase, các loại quan hệ và mục đích của biểu đồ Usecase? 3 Câu 3: các khái niệm lớp,đối tượng, phân loại lớp, pp xác định lớp? 5 Câu 4: Trình bày khái niệm thuộc tính, phương thức phân loại thuộc tính, phương thức 12 Câu 5: Khái niệm sự kiện, thông điệp? Phân loại? 13 Câu 6: Trình bày biểu đồ lớp, trình tự, cộng tác, hành động, trạng thái? Các thành phần của các loại biểu đồ ? 14 Câu 7: Các bước cần phải thực hiện khi thiết kế CSDL? 28 Câu 1: Trình bày đặc điểm chính của phương pháp thiết kế hướng đối tượng. So sánh pttk hướng đối tượng và phân tích thiết kế hướng chức năng? 1. Phân tích thiết kế hướng chức năng: - Phương pháp hướng chức năng là phương pháp chia chương trình chính thành các chương trình con theo theo từng modul xử lý, mỗi chương trình con thực hiện 1 công việc xác định. - Trọng tâm: Phân tích làm rõ các chức năng. - Tập trung vào hoặc vào dữ liệu hoặc vào hành động. - Phần mềm được thiết kế theo 2 hướng: hướng dữ liệu và hướng hàng động o Tiếp cận hướng dữ liệu: dựa vào yêu cầu lưu trữ dữ liệu của phần mềm mà xây dựng các chức năng của hệ thống. o Tiếp cận theo hướng hành động: dựa vào các hành động của phần mềm để tạo ra cơ sở dữ liệu. - Cách thức thực hiện là thiết kế từ trên xuống( top-down), phương pháp này tiến hành phân rã bài toán lớn thành các bài toán con, phân chia đến các hàm và thủ tục. Dữ liệu sẽ được lưu trữ qua các biến và được xlý bằng hàm.TLTK tập trung vào việc làm rõ nhiệm vụ của hàm. - Phương pháp PTTK phụ thuộc vào công cụ cài đặt. • Ưu điểm: Tư duy phân tích thiết kế rõ ràng, chương trình sang sủa. • Nhược điểm: - Không hỗ trợ việc sử dụng lại và chương trình phụ thuộc vào cấu trúc dl và bài toán cụ thể không thể sử dụng lại với các dữ liệu khác ở chương trình khác. - Không phù hợp cho phát triển các phần mềm lớn vì với các chương trình lớn nếu phân rã các chương trình con ra thành các modul sẽ rễ gây ra các lỗi trong phân tích TKHT và khó kiểm thử, bảo trì. 2. Phân tích thiết kế hướng đối tượng: - Lấy đối tượng làm trung tâm, tập trung vào cả hành động và dữ liệu. - Một hệ thống được chia thành các thành phần nhỏ, gọi là các đối tượng, chúng tương đối độc lập với nhau. Sau đó ta có thể xây dựng ứng dụng bằng cách chắp các đối tượng đó lại với nhau thong qua các mối quan hệ tương tác giữa chúng. - Chức năng của hệ thống được biểu diễn thông qua cộng tác của đối tượng, việc thay đổi chức năng, tiến hóa chức năng không làm thay đổi đến cấu trúc tĩnh của phần mềm. 1 - Hệ thống = tập hợp các đối tượng + quan hệ giữa các đối tượng - Các đối tượng trao đổi với nhau bằng thông điệp (message). Không sử dụng biến toàn cục. - Có tính đóng gói: Dữ liệu +xử lý dữ liệu= đối tượng Thuộc tính + phương thức= lớp Ưu: Hạn chế sự ảnh hưởng khi có sự thay đổi cập nhật Ngăn cản sự truy cập thông tin từ bên ngoài tới thông tin bên trong đối tượng. Che dấu thông tin - Tính thừa kế: Là tính chất cho phép sử dụng lại các thành phần đã có trong xdựng hệ thống mới. Một lớp được xây dựng từ 1 hoặc nhiều lớp khác bằng việc chia sẻ các thuộc tính và phương thức. Lớp con thừa kế các thuộc tính và phương thức từ lơp cha Tổng quát hóa, chuyên biệt hóa: Tổng quát hóa: Đặt các tính chất chung của của các lớp khác nhau vào một lớp cha; Chuyên biệt hóa: Tạo ra một lớp con có tính chất riêng từ lớp cha. + Đơn thừa kế: Một lớp con chỉ thừa kế từ 1 lớp cha + Đa thừa kế: Một lớp con thừa kế từ nhiều lớp cha khác nhau - Tính đa hình: Là tính chất cho phép một tên mà chứa bên trong đó nhiều nội dung. Thông thường tính đa hình gắn với phương thức. Lợi ích của tính đa hình: Dùng ít tên tốt nhưng vẫn chứa nội dung thông tin. 3. So sánh - Lập trình cấu trúc Thuật toán+ CTDL= Chương trình - Lập trình hướng đối tượng ∑Đối tượng = chương trình Đối tượng = Thuật toán+ CTDL PTTK hướng chức năng PTTK hướng đối tượng Ưu điểm - Phân rã được chức năng của hệ thống - Tư duy phân tích thiết kế rõ ràng, chương trình sáng sửa dễ hiểu - Đối với hệ thống nhỏ thì chi phí ít tốn kém - Có nhiều ngôn ngữ hỗ trợ cài đặt - Phân tích thiết kế gần gũi với thế giới thực - Tái sử dụng dễ dàng - Đóng gói che dấu thông tin làm cho hệ thống tin cậy hơn -Thừa kế làm giảm chi phí, hệ thống có tính mở cao - Phù hợp với hệ thống lớn Nhược điểm - Việc dựa vào cấu trúc của quá trình chức năng dẫn đến khi chức năng hệ thống thay đổi, cấu trúc ấy có thể bị thay đổi rất nhiều, thậm chí phải thay đổi toàn bộ - Tính mở của hệ thống thấp - Khó tái sử dụng - Chi phí sửa lỗi lớn - Thiếu sự linh động khi thay đổi thông tin - Chi phí tốn kém 2 Câu2: Định nghĩa biểu đồ usecase và các thành phần của biểu đồ UseCase, các loại quan hệ và mục đích của biểu đồ Usecase? Trả lời: Định nghĩa: Biểu đồ use case biểu diễn sơ đồ chức năng của hệ thống. Từ tập yêu cầu của hệ thống, biểu đồ use case sẽ phải chỉ ra hệ thống cần thực hiện điều gì để thoả mãn các yêu cầu của người dùng hệ thống đó. Có thể nói, biểu đồ use case chỉ ra sự tương tác giữa các tác nhân và hệ thống thông qua các use case. . Hay nói cách khác, một biểu đồ usecase là tập hợp các tác nhân, các usecase và mối quan hệ giữa chúng. Mỗi use case mô tả một chức năng mà hệ thống cần phải có xét từ quan điểm người sử dụng. Các use case trong biểu đồ use case có thể được phân rã theo nhiều mức khác nhau. Tác nhân là con người hay hệ thống thực khác cung cấp thông tin hay tác động tới hệ thống. ∗ Các thành phần biểu đồ UseCase: - Hệ thống: Biểu diễn danh giới giữa bên trong và bên ngoài của một chủ thể trong phần mềm mà ta đang xây dựng. Hệ thống ở đây có thể là một chiếc máy, một hệ thống thực, một hệ thống pmềm. - Actor: Là người dung của hệ thống. Một Actor có thể là một người dung thực hoặc các hệ thống máy tính. Tác nhân thực hiện các usecase, một tác nhân có thể thực hiện nhiều các usecse và ngược lại một usecase cũng có thể được thực hiện bởi nhiều tác nhân. - Usecase: Đây là thành phần cơ bản của biểu đồ, nó mô tả một chuỗi hành động mà hệ thống sẽ thực hiện để đạt được kết quả có ý nghĩa đối với một tác nhân nào đó. Các usecase được biểu diễn bởi các hình elip. Tên các usecase thể hiện một chức năng xđịnh của hệ thống. - Mối quan hệ giữa các usecase  Quan hệ bao hàm (include): chỉ ra rằng usecase này có thể sử dụng lại chức năng của usecase kia Giải thích: Bán hàng bao gồm một số thao tác, trong đó có thao tác In hóa đơn. Điều này có nghĩa là nếu Bán hàng thì phải In hóa đơn nhưng ngược lại thì chưa chắc.  Quan hệ mở rộng (extend): usecase này mở rộng từ usecase kia bằng cách thêm vào các hành vi hoặc hành động mới (them vào một chức năng cụ thể). Giải thích: use-case bán hàng được mở rộng sang use-case ký hợp đồng bảo hành. Điều này có nghĩa là: trong điều kiện bình thường thì thao tác bán hàng không dẫn tới việc ký hợp đồng bảo hành. Chỉ trong một số điều kiện nào đó thì mới có sự mở rộng  Quan hệ kế thừa: usecase này được kế thừa các chức năng từ usecase kia 3 Bán hàng In hóa đơn <<include>> Bán hàng Ký hợp đồng bảo hành <<extend>> Giải thích: Thao tác giao hàng được thực hiện bằng một trong hai cách: giao ở cửa hàng hoặc mang đến tận nhà. Hai cách giao hàng này có thể có một thao tác chung là "đóng gói hàng" nằm ở nút giao hàng. Như vậy trong kết hợp generalization thì các thao tác chung nằm ở nút gốc (nếu có), còn các trường hợp riêng nằm ở các nút con. d. Mục đích của biểu đồ usecase - Dùng để mô hình hóa các chuỗi hành động của hệ thống - Cung cấp một cách nhìn tổng thể về những gì hệ thống sẽ làm và ai sẽ dùng nó - Đưa ra cơ sở để xác định giao tiếp người máy của hệ thống - Dùng để mô hình hóa kịch bản cho 1 trường hợp sử dụng - Để người dùng có thể hiểu được và có thể giao tiếp với hệ thống ở mức tổng thể - Làm cơ sở cho việc phác thảo ra các đặc tả kiểm tra Ví dụ: 4 Mục đích của biểu đồ use-case: Dùng để mô hình hóa các chuỗi hành động của hệ thống. Cung cấp một cách nhìn tổng thể về những gì mà hệ thống sẽ làm và ai sẽ dùng nó. Đa ra cơ sở để xác định giao tiếp ngời-máy của hệ thống. Dùng để mô hình hóa các kịch bản (scenario) cho một trờng hợp sử dụng. Để ngời dùng cuối có thể hiểu đợc và có thể giao tiếp với hệ thống ở mức tổng thể. Làm cơ sở cho việc phác thảo ra các đặc tả kiểm tra. Cõu 3: cỏc khỏi nim lp,i tng, phõn loi lp, pp xỏc nh lp? Tr li: - KN Lp: Lp (Class): Mt nhúm i tng cú chung mt s thuc tớnh v phng thc to thnh mt lp. Lp c t tờn. Nh vy lp l mt khuụn mu to ra i tng. Mi i tng l mt th hin ca mt lp v mt i tng khụng th l th hin ca nhiu hn mt lp. Hay núi cỏch khỏc, lp l kiu ca i tng (cỏc i tng cú chung cu trỳc). - Kớ hiu: Lp c th hin bi mt hỡnh ch nht, cú cỏc phn ngn cỏch gia tờn, thuc tớnh, phng thc ca lp. - Vớ d: Lp Ngi c: Lp ny cha cỏc thụng tin cn thit v ngi c, phc v cho vic mn sỏch. Ngi c l ngi ó ng kớ vi th vin v mn sỏch ca th vin. Phõn loi lp: -Lp c s d liu: thc hin lu tr CSDL Lp thc th (Entity Class): L lp i din cho cỏc thc th cha thụng tin v cỏc i tng xỏc nh no ú. 5 - Lớp thực thể dùng để mô hình hóa các thông tin lưu trữ lâu dài trong hệ thống. Nó thường độc lập với các đối tượng khác ở xung quanh, nó thường có khả năng sử dụng lại. - Ví dụ như lớp Sinh viên, lớp này có thể có trong hệ thống quản lý điểm, hệ thống Đăng kí học, hệ thống quản lý thư viện của một trường đại học  Lớp biên (Boundary Class) hay lớp giao diện: Là lớp nằm ở ranh giới giữa hệ thống với môi trường bên ngoài, chúng thực hiện vai trò nhận yêu cầu trực tiếp từ các tác nhân vầ chuyển các yêu cầu đó cho các lớp bên trong hệ thống. Chúng cung cấp giao diện cho một người dùng hay một hệ thống khác để tương tác với hệ thống. Mỗi một tương tác giữa cặp Actor/ Use case đòi hỏi ít nhất là một lớp biên.  Lớp điều khiển (Control Class): Thể hiện trình tự ứng xử của hệ thống trong một hay nhiều Use case. Lớp này điều hành mọi hoạt động của hệ thống.  Lớp cơ sở dữ liệu: Lưu trữ dữ liệu và cung cấp thông tin - Ngoài ra còn có cách phân loại như sau: lớp thông thường, lớp trừu tượng (abstract class), lớp tham số (parameterized class), lớp thể hiện (instantiated class), lớp tiện ích (utilities class), lớp tiện ích tham số (parameterized utilities class), lớp thể hiện tiện ích (instantiated utilities class)  Lớp tham số (parameterized class):là lớp dùng để tạo ra một họ các lớp có các ứng xử có chung ý nghĩa nhưng thực hiện trên các tập dữ liệu khác nhau.  Ví dụ :  Lớp thể hiện (instantiated class): khi ta gán một giá trị cụ thể cho tham số của lớp tham số, ta được một lớp thể hiện. Như ở trên ta có lớp List dùng để mô tả một danh sách và các phép toán liên quan tới danh sách như thêm một phần tử vào danh sách, xóa một phần tử khỏi danh sách, duyệt danh sách. Bây giờ ta cho một giá trị cụ thể đó là nhân viên, ta có danh sách nhân viên.  Lớp tiện ích (utilities class): là một tập hợp các phép toán. Ví dụ như ta có một số hàm toán học : lấy bình phương, lấy căn mà được dùng ở nhiều nơi trong hệ thống, khi đó các hàm này được nhóm lại và đóng kín trong một lớp gọi là lớp tiện ích. Lớp tiện ích thường được dùng để mở rộng tính năng của ngôn ngữ lập trình, lưu giữ các hàm có thể tái sử dụng cho nhiều hệ thống.  Lớp tiện ích tham số (parameterized utilities class): cũng giống như lớp tiện ích, nó bao gồm một tập hợp các hàm hay dùng nhưng để chỉ một lớp tác động tổng quát chứ không chỉ rõ kiểu dữ liệu mà nó sẽ thao tác.  Lớp thể hiện tiện ích (instantiated utilities class): khi cho một giá trị cụ thể cho lớp tiện ích tham số ta có một lớp thể hiện tiện ích. Ví dụ  Lớp trừu tượng (abstract class): là lớp được thiết kế ở mức độ trừu tượng cao nhất, nó chứa những thuộc tính, những hành vi chung cho nhiều lớp con khác. Lớp trừu tượng được tạo ra chỉ để cho các lớp khác kế thừa nó, những phương thức khai báo trong lớp trừu tượng không được cài đặt mà chúng chỉ được cài đặt ở các lớp con. Cho nên không có một đối tượng nào được tạo ra từ lớp trừu tượng. 6 ∗ Phương pháp xác định lớp: * Có nhiều phương pháp xác định lớp khác nhau. Ba phương pháp xác định lớpsau đây được xem là phổ biến và nhiều nhóm phát triển đã áp dụng: - Phương pháp trích danh từ: đầu tiên người phát triển hệ thống cần định nghĩa sản phẩm phần mềm bằng một câu, sau đó kết hợp các ràng buộc để phát triển thành một đoạn. Dựa trên đoạn văn mô tả này, người phát triển sẽ lấy ra các danh từ, chia thành các nhóm và đề cử racác lớp cũng như thuộc tính và phương thức của các lớp đó - Phương pháp dùng thẻ ghi CRC (class responsibility collaboration): dựatrên một số lớp đã phương pháp này sử dụng một thẻ ghi cho mỗi lớp trongđó biểu diễn các thông tin liên quan đến trách nhiệm (responsibility) củalớp đó và các lớp phối hợp với nó (collaboration). Từ thẻ ghi này, người phát triển sẽ tìm ra các lớp khác cần thiết và quan trọng hơn là xác định đầyđủ các thuộc tính, phương thức của từng lớp và mối quan hệ giữa các lớp. Phương pháp xác định lớp từ use case và scenario: người phát triểnnghiên cứu cẩn thận các use case và scenario (cả chuẩn và ngoại lệ) để tìmra các thành phần đóng vai trò nào đó trong các use case. Các thành phầnnày sẽ được tập hợp lại và đề cử ra các lớp. Các danh từ xuất hiện trongscenario biểu diễn thông tin cho một thành phần như vậy có thể trở thànhcác thuộc tính còn các động từ xuất hiện trong mối quan hệ giữa các thànhphần đó có thể trở thành các phương thức tương ứng trong lớp đó.Phương pháp xác định lớp từ use case và scenario sẽ được trình bày cụ thểtrong các phần tiếp theo của tài liệu. * KN Đối t ư ợng: Đối tượng (object): mô tả các sự vật - hiện tượng xảy ra trong hệ thống. Một đối tượng được hiểu là một thực thể có thực hoặc là một thực thể khái niệm. Mỗi đối tượng được mô tả bởi các trạng thái và hành vi cho biết đối tượng đó sẽ hành động ntn khi nhận được thông điệp từ các đối tượng khác. - Mỗi đối tượng là thông tin và liên quan đến các hoạt động. - Mỗi đối tượng trong 1 hệ thống đều có 3 đặc tính: trạng thái, ứng xử, và định danh.  Trạng thái: Tập dữ liệu, thông tin để mô tả đối tượng. Trạng thái là một trong những khả năng mà đối tượng có thể tồn tại. Trạng thái của đối tượng thay đổi theo thời gian và được định nghĩa bởi một tập các thuộc tính, giá trị của các thuộc tính đó cùng với các mối quan hệ của đối tượng với các đối tượng khác. Ví dụ như đối tượng Danh sách Đăng kí môn học trong hệ thống đăng kí lớp học của một trường đại học có thể có hai trạng thái “mở” và “đóng”. Nếu số lượng sinh viên đăng kí còn nhỏ hơn số tối đa cho phép thì trạng thái của đối tượng là “mở”, khi đạt đến số lượng sinh viên tối đa cho một lớp học thì đối tượng chuyển sang trạng thái “đóng”. 7  Ứng xử: dùng để định nghĩa cách ứng xử của đối tượng đối với những yêu cầu từ các đối tượng khác. ứng xử của một đối tượng thể hiện thông qua một tập các phép toán(operation) của đối tượng.  Định danh: mỗi đối tượng là duy nhất, giữa các đối tượng phải có sự phân cách rõ ràng, các đối tượng khác nhau có định danh khác nhau, các định danh này không phụ thuộc vào trạng thái hay ứng xử của đối tượng - Kí hiệu: Trong UML đối tượng được thể hiện bởi một hình chữ nhật, tên của đối tượng được gạch chân. - Phân loại:  Đối tượng giao diện(Interface): có nhiệm vụ trao đổi giữa hệ thống bên trong với hệ thống bên ngoài  Đối tượng thực thể (Entity): Chịu trách nhiệm lưu trữ và xử lý thông tin (bên trong hệ thống)  Đối tượng cơ sở dữ liệu (Database): lưu trữ và cung cấp thông tin  Đối tượng tác nhân (actor): là đối tượng nằm ngoài hệ thống nhưng có liên quan đến hệ thống * Trình bày quan hệ giữa các lớp và đối tượng . Trong thiết kế và lập trình quan hệ đó đ ư ợc cài đặt ntn? *Giữa các lớp có các dạng quan hệ cơ bản như sau: - Quan hệ kết hợp (Association): Một kết hợp (association) là một sự nối kết giữa các lớp, hay sự nối kết giữa các đối tượng của các lớp này. Trong UML, một quan hệ đượcấnc định nhằm mô tả một tập hợp các lien kết (links), tức là một sự liên quan về ngữ nghĩa (semantic connection) giữa một nhóm các đối tượng được biểu diễn bởi các lớp tương ứng - Được biểu diễn: Là một đoạn thẳng hai chiều nối hai đối tươngj và có thể kèm theo ngữ nghĩa của quan hệ tại hai đầu của đoạn thẳng. Xem ví dụ Hình 2.5. Lớp khách hàng có quan hệ kết hợp với lớp sản phẩm. Ngữ nghĩa của quan hệ này thể hiện ở chỗ: khách hàng mua sản phẩm, còn sản phẩm được bán cho khách hàng. Ví dụ : - Khái quát hóa (Generalization): Khái quát hóa là mối quan hệ giữa một lớp có các đặc trưng mang tính khái quát cao hơn và một lớp có tính chất đặc biệt hơn. Trong sơ đồ lớp, mối quan hệ khái quát hóa chính là sự kế thừa của một lớp từ lớp khác. Quan hệ khái quát hoá được biểu diễn bằng một mũi tên có tam giác rỗng gắn ở đầu. - Quan hệ cộng hợp (Aggregation): là dạng quan hệ mô tả một lớp A là một phần của lớp B và lớp A có thể tồn tại độc lập. Quan hệ cộng hợp được biểu diễn bằng một mũi tên gắn 8 hình thoi rỗng ở đầu hướng về lớp bao hàm. Xem ví dụ Hình 2.8. Lớp Hoá đơn là một phần của lớp Khách hàng nhưng đối tượng Hoá đơn vẫn có thể tồn tại độc lập với đối tượng khách hàng. - Quan hệ gộp (Composition): Một quan hệ gộp biểu diễn một quan hệ kiểu tổng thể- bộ phận. Lớp A có quan hệ gộp với lớp B nếu lớp A là một phần của lớp B và sự tồn tại của đối tượng lớp B điều khiển sự tồn tại của đối tượng lớp A. Quan hệ này được biểu diễn bởi một mũi tên gắn hình thoi đặc ở đầu. 9 10 [...]... t hon ton tng t nh trong scenario mụ t use case tng ng III) Biu hnh ng, cỏc thnh phn ca biu hnh ng Biu hnh ng c dựng lm gỡ? * Khỏi nim:Biu hnh ng: biểu diễn luồng các hoạt động công việc của các chức năng hay hệ thống Cỏc thnh phn: + Hot ng: l 1 cụng vic cn thc hin c biu din bng hcn cú gúc trũn + Trng thỏi: thng l 1 im ch 1 bin c xy ra, cng c biu din bng hcn cú gúc trũn Cú 2 trng thỏi: 21 Trng... gi sang i tng nhn bờn cnh liờn kt gia 2 i tng ú Trong biu cng tỏc cỏc message c ỏnh s th t theo th t xut hin trong kch bn mụ t cỏc usecase tng ng b, Vớ d: 22 + Biu cng tỏc c dựng khi: biểu đồ lớp không diễn tả đợc hết ý nghĩa tơng tác giữa các đối tợng + Biu trỡnh t c dựng khi: i tng có thể là thể hiện của lớp, nhng có thể là những đối tợng độc lập, ví dụ nh màn hình giao diện, bảng dữ liệu V) . ĐỀ CƯƠNG ÔN TẬP MÔN PHÂN TÍCH THIẾT KẾ HỆ THỐNG Câu 1: Trình bày đặc điểm chính của phương pháp thiết kế hướng đối tượng. So sánh pttk hướng đối tượng và phân tích thiết kế hướng chức. - Phân rã được chức năng của hệ thống - Tư duy phân tích thiết kế rõ ràng, chương trình sáng sửa dễ hiểu - Đối với hệ thống nhỏ thì chi phí ít tốn kém - Có nhiều ngôn ngữ hỗ trợ cài đặt - Phân. Phân tích thiết kế gần gũi với thế giới thực - Tái sử dụng dễ dàng - Đóng gói che dấu thông tin làm cho hệ thống tin cậy hơn -Thừa kế làm giảm chi phí, hệ thống có tính mở cao - Phù hợp với hệ thống

Ngày đăng: 05/05/2015, 08:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan