CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 Phân tích thiết kế hệ thống Để xây dựng một hệ thống luyện tập và luyện thi thành công và đạt yêu cầu, cần tiến hành phân tích thiết kế hệ thống. Đây là bước quyết định đến tính thành công, bền vững của dự án với các ưu điểm như: • Có một cái nhìn đầy đủ, đúng đắn và chính xác về hệ thống thông tin được xây dựng trong tương lai. • Tránh sai lầm trong thiết kế và cài đặt. • Tăng vòng đời (life cycle) hệ thống • Dễ sửa chữa, bổ sung và phát triển hệ thống trong quá trình sử dụng hoặc khi hệ thống yêu cầu 1.2 Phân tích thiết kế hệ thống hướng đối tượng 1.1 Khái niệm về phân tích thiết kế hướng đối tượng (OOAD – Object Oriented Analysis and Design) Khác với phương pháp hướng cấu trúc chỉ tập trung hoặc vào dữ liệu hoặc vào hành động, phương pháp hướng đối tượng tập trung vào cả hai khía cạnh của hệ thống là dữ liệu và hành động.
Cách tiếp cận hướng đối tượng là một lối tư duy theo cách ánh xạ các thành phần trong bài toán vào các đối tượng ngoài đời thực. Với cách tiếp cận này, một hệ thống được chia tương ứng thành các thành phần nhỏ gọi là các đối tượng, mỗi đối tượng bao gồm đầy đủ cả dữ liệu và hành động liên quan đến đối tượng đó. Các đối tượng trong một hệ thống tương đối độc lập với nhau và phần mềm sẽ được xây dựng bằng cách kết hợp các đối tượng đó lại với nhau thông qua các mối quan hệ và tương tác giữa chúng. Các nguyên tắc cơ bản của phương pháp hướng đối tượng bao gồm: • Trừu tượng hóa (Abstraction): Trong phương pháp hướng đối tượng, các thực thể phần mềm được mô hình hóa dưới dạng các đối Phan Vũ Huy – 13CNTT GVHD: ThS.
Phạm Dương Thu Hằng Báo cáo khoá luận tốt nghiệp 5 tượng. Các đối tượng này được trừu tượng hóa ở mức cao hơn dựa trên thuộc tính và phương thức mô tả đối tượng để tạo thành các lớp. Các lớp cũng sẽ được trừu tượng hóa ở mức cao hơn nữa để tạo thành một sơ đồ các lớp được kế thừa lẫn nhau. • Tính đóng gói (Encapsulation) và ẩn dấu thông tin: Các đối tượng có thể có những phương thức hoặc thuộc tính riêng (kiểu private) mà các đối tượng khác không thể sử dụng được.
Dựa trên nguyên tắc ẩn giấu thông tin này, cài đặt của các đối tượng sẽ hoàn toàn độc lập với các đối tượng khác, các lớp độc lập với nhau và cao hơn nữa là cài đặt của hệ thống hoàn toàn độc lập với người sử dụng cũng như các hệ thống khác sử dụng kết quả của nó. • Tính mô-đun hóa (Modularity): Các bài toán sẽ được phân chia thành những vấn đề nhỏ hơn, đơn giản và quản lý được. • Tính phân cấp (Hierarchy): Cấu trúc chung của một hệ thống hướng đối tượng là dạng phân cấp theo các mức độ trừu tượng từ cao đến thấp. Ưu điểm nổi bật của phương pháp hướng đối tượng là đã giải quyết được các vấn đề nảy sinh với phương pháp hướng cấu trúc: • Hỗ trợ sử dụng lại mã nguồn: Chương trình lập trình theo phương pháp hướng đối tượng thường được chia thành các gói là các nhóm của các lớp đối tượng khác nhau.
Các gói này hoạt động tương đối độc lập và hoàn toàn có thể sử dụng lại trong các hệ thống thông tin tương tự. • Phù hợp với các hệ thống lớn: Phương pháp hướng đối tượng không chia bài toán thành các bài toán nhỏ mà tập trung vào việc xác định các đối tượng, dữ liệu và hành động gắn với đối tượng và mối quan hệ giữa các đối tượng. Các đối tượng hoạt động độc lập và chỉ thực hiện hành động khi nhận được yêu cầu từ các đối tượng khác. Phan Vũ Huy – 13CNTT GVHD: ThS.
Phạm Dương Thu Hằng Báo cáo khoá luận tốt nghiệp 6 Các khái niệm cơ bản của hướng đối tượng: • Đối tượng (object): Một đối tượng biểu diễn một thực thể vật lý, một thực thể khái niệm hoặc một thực thể phần mềm. Có thể định nghĩa một đối tượng là một khái niệm, sự trừu tượng hoặc một vật với giới hạn rõ ràng và có ý nghĩa với một ứng dụng cụ thể. • Lớp (Class): Là mô tả của một nhóm đối tượng có chung các thuộc tính, hành vi và các mối quan hệ. Như vậy, một đối tượng là thể hiện của một lớp và một lớp là một định nghĩa trừu tượng của đối tượng.
• Thành phần (Component): Là một phần của hệ thống hoạt động độc lập và giữ một chức năng nhất định trong hệ thống. • Gói (Package): Là một cách tổ chức các thành phần, phần tử trong hệ thống thành các nhóm. Nhiều gói có thể được kết hợp với nhau để trở thành một hệ thống con (subsystem). • Kế thừa (Inheritance): Trong phương pháp hướng đối tượng, một lớp có thể có sử dụng lại các thuộc tính và phương thức của một hoặc nhiều lớp khác.
Kiểu quan hệ này gọi là quan hệ kế thừa, được xây dựng dựa trên mối quan hệ kế thừa trong bài toán thực tế. Vòng đời phát triển phần mềm hướng đối tượng cũng có các pha tương tự như các vòng đời phát triển phần mềm nói chung. Các pha cơ bản đặc trưng trong phát triển phần mềm hướng đối tượng bao gồm: • Phân tích hướng đối tượng: Xây dựng một mô hình chính xác để mô tả hệ thống cần xây dựng là gì. Thành phần của mô hình này là các đối tượng gắn với hệ thống thực.
• Thiết kế hướng đối tượng: Là giai đoạn tổ chức chương trình thành các tập hợp đối tượng cộng tác, mỗi đối tượng trong đó là thực thể của một lớp. Kết quả của pha thiết kế cho biết hệ thống sẽ được xây dựng như thế nào qua các bản thiết kế kiến trúc và thiết kế chi tiết. Phan Vũ Huy – 13CNTT GVHD: ThS. Phạm Dương Thu Hằng Báo cáo khoá luận tốt nghiệp 7 • Lập trình và tích hợp: Thực hiện bản thiết kế bằng cách sử dụng các ngôn ngữ lập trình hướng đối tượng (C++, Java, …).2 Khái niệm về ngôn ngữ mô hình hoá hợp nhất (UML) UML là ngôn ngữ mô hình hóa hợp nhất dùng để biểu diễn hệ thống.
Nói một cách đơn giản là nó dùng để tạo ra các bản vẽ nhằm mô tả thiết kế hệ thống. Các bản vẽ này được sử dụng để các nhóm thiết kế trao đổi với nhau cũng như dùng để thi công hệ thống (phát triển), thuyết phục khách hàng, các nhà đầu tư v. (Giống như trong xây dựng người ta dùng các bản vẽ thiết kế để hướng dẫn và kiểm soát thi công, bán hàng căn hộ v.3 Phân tích thiết kế hướng đối tượng sử dụng UML OOAD sử dụng UML bao gồm các thành phần sau: • Góc nhìn (View): Việc sử dụng nhiều góc nhìn (View) trong phân tích thiết kế sẽ giúp cho phân tích viên nắm rõ được hệ thống ở nhiều khía cạnh. OOAD sử dụng UML có các góc nhìn sau: o Use Case View: Cung cấp góc nhìn về các cách sử dụng giúp chúng ta hiểu hệ thống có gì? Ai dùng và dùng nó như thế nào.
o Logical View: Cung cấp góc nhìn về cấu trúc hệ thống, xem nó được tổ chức như thế nào. o Process View: Cung cấp góc nhìn động về hệ thống, xem các thành phần trong hệ thống tương tác với nhau như thế nào. o Component View: Cũng là một góc nhìn về cấu trúc giúp chúng ta hiểu cách phân bổ và sử dụng lại các thành phần trong hệ thống ra sao. o Deployment View: Cung cấp góc nhìn về triển khai hệ thống, nó cũng ảnh hưởng lớn đến kiến trúc hệ thống.
Phan Vũ Huy – 13CNTT GVHD: ThS. Phạm Dương Thu Hằng Báo cáo khoá luận tốt nghiệp 8 • Bản vẽ (Diagram): Diagram các bạn có thể dịch là sơ đồ. Tuy nhiên ở đây chúng ta sử dụng từ bản vẽ cho dễ hình dung. Các bản vẽ được dùng để thể hiện các góc nhìn của hệ thống.
Trong đó: o Use Case Diagram: Bản vẽ mô tả về ca sử dụng của hệ thống. Bản vẽ này sẽ giúp chúng ta biết được ai sử dụng hệ thống, hệ thống có những chức năng gì. Lập được bản vẽ này bạn sẽ hiểu được yêu cầu của hệ thống cần xây dựng. o Class Diagram: Bản vẽ này mô tả cấu trúc của hệ thống, tức hệ thống được cấu tạo từ những thành phần nào.
Nó mô tả khía cạnh tĩnh của hệ thống. o Object Diagram: Tương tự như Class Diagram nhưng nó mô tả đến đối tượng thay vì lớp (Class). o Sequence Diagarm: Là bản vẽ mô tả sự tương tác của các đối tượng trong hệ thống với nhau được mô tả tuần tự các bước tương tác theo thời gian. o Collaboration Diagram: Tương tự như sequence Diagram nhưng nhấn mạnh về sự tương tác thay vì tuần tự theo thời gian.
o State Diagram: Bản vẽ mô tả sự thay đổi trạng thái của một đối tượng. Nó được dùng để theo dõi các đối tượng có trạng thái thay đổi nhiều trong hệ thống. o Activity Diagram: Bản vẽ mô tả các hoạt động của đối tượng, thường được sử dụng để hiểu về nghiệp vụ của hệ thống. o Component Diagram: Bản vẽ mô tả về việc bố trí các thành phần của hệ thống cũng như việc sử dụng các thành phần đó.
o Deployment Diagram: Bản vẽ mô tả việc triển khai của hệ thống như việc kết nối, cài đặt, hiệu năng của hệ thống v.v… Phan Vũ Huy – 13CNTT GVHD: ThS. Phạm Dương Thu Hằng Báo cáo khoá luận tốt nghiệp 9 • Ký hiệu (Notations) • Quy tắc, cơ chế (Mechanisms): Là các qui tắc để lập nên bản vẽ, mỗi bản vẽ có qui tắc riêng và phân tích viên phải nắm được để tạo nên các bản vẽ thiết kế đúng.3 Nền tảng kĩ thuật 1.1 Mô hình MVC (Model - View - Controller) Hình 1.1: Mô hình MVC Giới thiệu mô hình MVC: • MVC là chữ viết tắt của Model – View – Controller, đây là bộ ba chứa các lớp được giới thiệu lần đầu tiên bởi Krasner và Pope vào năm 1988, được sử dụng để xây dựng giao diện người dùng trong Smalltalk-80. • MVC bao gồm 3 loại đối tượng. Model là đối tượng ứng dụng, View là đối tượng biểu diễn màn hình và đối tượng Controller định nghĩa các phản hồi từ khi người sử dụng tương tác với giao diện người sử dụng.
Mô hinh MVC tách các thành phần này ra để tăng tính linh hoạt và dễ sử dụng. Phan Vũ Huy – 13CNTT GVHD: ThS. Phạm Dương Thu Hằng Báo cáo khoá luận tốt nghiệp 10 • MVC tách các View và Model bằng cách thiết lập một giao thức đăng ký/thông báo giữa chúng.