6. Cấu trúc của luận văn
2.2.1. Mô hình khái niệm
♦> Các khái niệm cơ sở
Việc tạo ra các khái niệm là một bước quan trọng trong phân tích hướng đối tượng cũng như xây dựng phần mềm có khả năng mở rộng và tái sử dụng.
Khái niệm (Concept): Một khái niệm có thể là một quan niệm, một sự vật hay đối tượng. Nó gồm ba phần:
+ Kí hiệu (Symbol): Các từ ngữ hay hình ảnh mô tả cho một khái niệm. + Định nghĩa (Indention): Định nghĩa của khái niệm .
+ Mở rộng (Extention): Tập các ví dụ hoặc các thể hiện do áp dụng khái niệm . Mỗi ví dụ ứng dụng khái niệm riêng biệt gọi là trường hợp cá biệt của khái niệm .
Ví dụ: í%>maLop Ể£>tenLop Lop Lớp học của một khoa Ký hiệu 1\ Đ ịn h n g h ĩa --- M ở rông K K7T, K8T, K6T _:----
Hình 3: Kí hiệu, định nghĩa và mở rộng của một khái niệm.
Trong UML các khái niệm lớp và kiểu được sử dụng để mô tả các khái niệm cơ sở của hệ thống.
Các đối tượng là phân biệt nhau, ngay cả khi chúng có các giá trị thuộc tính giông nhau. Thuộc tính mà phân biệt đối tượng này với đối tượng khác gọi là định danh của đối tượng.
Ví dụ về lớp và đối tượng: S in h V ie n Nquyen minh Chau:SinhVien Ổ £>m aSV íặhoTen Nquven Minh Nqa:SinhVien
Hình 4: L('/p “Sinh viên ” và các đối tượng của nó.
Một số đặc tính quan trọng của đối tượng:
• Định danh của đối tượng: Mọi đối tượng là phân biệt đối với các đối tượng khác, ngay cả khi chúng có các giá trị thuộc tính giống nhau.
• Sự tồn tại của đối tượng: Mọi đối tượng đều có một thời gian sống (life time). Thuộc tính này chỉ ra bản chất tĩnh của hệ thống.
• Mỗi đối tượng có các hành vi có thể tác động lên hoặc chịu tác động của các đối tượng khác.
• Mỗi đối tượng có thể ở các trạng thái khác nhau ở những thời điểm khác nhau và có thể hành động khác nhau ở các trạng thái khác nhau.
‘> Xác định các khái niệm
Một hoạt động quan trọng trong phân tích hướng đối tượng là việc phân rã bài toán thành các khái niệm (đối tượng). Thông thường có hai chiến lược để xác định các khái niệm.
Cách 1: Từ sự mô tả văn bản mô tả bài toán có thể tìm các khái niệm dựa vào danh sách phân loại khái niệm. Các khái niệm và các đối tượng có thể được phân vào các phân lớp khác nhau dựa vào bản chất các thể hiện của chúng.
Bảng 8: Danh sách phân loại khái niệm.
Loại khái niệm Ví dụ
Các đối tượng vật lý Sinh viên, kỳ thi, môn thi
Nơi chốn Trụ sở của trường, lớp
Tài liệu, đặc điểm kỹ thuật, thiết kế, hoặc sự mô tả của sự vật
Thông tin về một sinh viên
Giao tác (Transaction) Dự thi, bài làm (thi)
Vai trò của con người Quản trị, thí sinh, giám th ị,...
Bộ phận chứa các vật chứa Lớp, ngân hàng đề thi, thư viện.
Những thứ trong một nơi chứa Câu hỏi (thi), sinh viên. Các máy tính khác, hoặc một hệ thống kĩ thuật
điện tử ở bên ngoài hệ thống
Hệ thống kiểm soát thi
Danh từ khái niệm trừu tượng Tinh huống xấu nhất trong khi thi
Các phòng ban, tổ chức Khoa, ban
Các tiến trình (thường không được biểu diễn như là một khái niệm )
Chuẩn bị thời gian, số lượng đề
Các điều luật và chính sách Qui tắc thi cử
Các danh mục Danh mục các thành phần
Các bản ghi tài chính công việc, hợp đồng, các công việc hợp pháp
Bảng điểm
Các dịch vụ, công vụ tài chính Vốn, tài khoản
Sổ tay, sách hướng dẫn Sổ ghi chép sinh viên
Chiến lược này sẽ tạo ra một tập các khái niệm đại diện (candidate) từ các mô tả yêu cầu của khách hàng, những điều tra, nghiên cứu ban đầu, các định nghĩa chức năng của hệ thống và các trường hợp sử dụng.
Cách 2: Một kỹ thuật khá đơn giản và hữu ích cho việc xác định các khái niệm đó là: xác định các danh từ và cụm danh từ mô tả văn bản của miền vấn đề và xem xét chúng như là các khái niệm dự kiến hoặc thuộc tính.
Tuy nhiên, từ ngữ trong ngôn ngữ tự nhiên là không rõ ràng, vì vậy phải loại bỏ một số khái niệm không thích hợp theo các quy tắc sau:
+ Thừa: Các lớp giống nhau được đưa ra dưới nhiều tên khác nhau. + Mập mờ: Danh từ chưa được hiểu một cách rõ ràng.
+ Là sự kiện hoặc hành động: Danh từ chỉ đến một cái gì đó được thực hiện trong hệ thống.
+ Siêu ngôn ngữ: ở đây, danh từ tạo nên một phần của cách ta định nghĩa sự vật. Sử dụng các danh từ các yêu cầu và hệ thống như là một phần của ngôn ngữ mô hình hoá tốt hơn là mô tả các đối tượng trong miền vấn đề.
+ Nằm ngoài phạm vi của hệ thống : Danh từ này có thể là cần thiết cho việc mô tả một hệ thống làm việc như thế nào nhưng không chỉ đến một cái gì đó nằm trong hệ thống.
+ Là thuộc tính: Một danh từ chỉ đến một cái gì đó mà nó không hề có các hành vi quan trọng thì khi đó nó được xem như là thuộc tính của một lớp khác.
Ví dụ: Trong bài toán quản lý thi trên mạng, với pha xác định ban đầu, ta có ihể có các khái niệm sau:
HocPhan
Lop KyThi CauHoi
PhuongAn
Hình 5: Các khái niệm trong ứng dụng “Hệ thống quản lý thi trên m ạng”.
Lưu ý:
+ Không nên loại bỏ một khái niệm đơn giản chỉ vì các yêu cầu không chỉ ra rõ ràng sự cần thiết để lưu trữ thông tin về nó.
+ Có thể có nhiều khái niệm không được đưa vào trong pha phân tích ban đầu, chúng có thể được phát hiện ra sau đó trong việc xem xét đến các thuộc tính và các quan hệ liên kết hay trong pha thiết kế. Khi được tìm thấy, các khái niệm này sẽ được bổ sung vào mô hình khái niệm.
+ Khi không chắc chắn, nên để một khái niệm như là một khái niệm dự kiến trong mô hình khái niệm.
Tuy nhiên, không đánh giá được một mô hình khái niệm là chính xác hay sai mà chỉ đánh giá được là phù hơn hay ít phù hợp hơn; nó là công cụ của sự truyền đạt.
*1* Các hướng dẫn cho việc mô hình hoá khái niệm
- Sử dụng những tên đã có sẩn trong lĩnh vực hoạt động: Dùng cú pháp của miền khi đặt tên cho những khái niệm và thuộc tính.
- Loại bỏ các đặc tính thừa: Có thể loại bỏ các phần tử nếu chúng được xem xét là không cần thiết cho mục đích của vấn đề.
- Không sử dụng những phần tử mà không có.
Một mô hình khái niệm tập trung vào các khái niệm trong miền vấn đề chứ không phải là các thực thể phần mềm.
❖ Q uan hệ liên kết (association)
Trong UML, liên kết là một quan hệ giữa hai ỉớp để xác định xem các đối tượng của các lớp này được liên kết và thực hiện công việc cùng nhau như thế nào. Giữa các đối tượng thuộc các lớp khác nhau phải có sự liên kết để chúng có thể tương tác và cộng tác với nhau nhằm thực hiện các tiến trình.
Quan hệ liên kết là mô hình hoá một liên kết ngữ nghĩa giữa các lớp. Kí hiêu: r A 7 ___________________________ zB
Tên liên kết
Hình 6: Quan hệ Hên kết.
Ví dụ: SinhVien KyThi
Tham gia
Hình 7: Ví dụ về quan hệ liên kết.
♦ Bản số
Đối với một liên kết giữa hai lớp A và B, một thông tin quan trọng liên quan đến việc có bao nhiêu đối tượng của lớp A có thể được liên kết với một đối tượng của lớp B tại một thời điểm. Ta sử dụng lực lượng của A để mô tả thông tin này.
không xác định chí một
không hoặc nhiều
một hoặc nhiều “ít nhất là một’ khoảng từ 1 đến 40
hoặc 3, hoặc 5, hoặc 7
1..* 1..*
KyThi Tham gia
Hình 8: Minh hoạ bản số.
♦ Vai trò trong quan hệ liên kết
Khi một lớp tham gia trong một liên kết thì nó giữ một vai trò xác định trong quan hệ đó. Vai trò đó có thể được chí ra trong liên kết:
tên vai trò tên vai trò
Hình 9: Vai trò trong quan hệ liên kết.
Khi tiếp cận tới việc thiết kế và cài đặt hệ thống, các vai trò cung cấp cách thể hiện một liên kết như là một đường nối từ một đối tượng tới tập các đối tượng được liên kết.
♦ Mục đích của một quan hệ liên kết và liên kết giữa hai đối tượng
- Một quan hệ liên kết giữa hai lớp là để cung cấp các liên kết vật lý hoặc khái niệm giữa các đối tượng của các lớp.
- Chỉ các đối tượng được liên kết với các đối tượng khác mới có thể cộng tác với nhau thông qua liên kết.
Qui tắc đ ể xác định các quan hệ liên kết
Đối với pha phân tích yêu cầu, ta sử dụng qui tắc sau:
- Một quan hệ liên kết hữu ích thường mang một kiến thức về mối quan hệ mà nó cần.
- Một liên kết quan trọng giữa hai đối tượng phải thoả mãn vai trò cung cấp một phương tiện cho phép đối tượng này cộng tác hay tương tác với đối tượng kia.
Các quan hệ liên kết thường ứng với một động từ hoặc một ngữ động từ. Gồm có các kiểu:
+ Vị trí vật lý: tiếp theo (next to), là một phần của (part of), chứa trong (contained in),...
+ Hành động định hướng: lái (drive)... + Liên lạc: nói tới (talk to)...
+ Sở hữu: có (has), là một phần của (part of)...
+ Hoặc thoả mãn điều kiện: làm việc cho (work for), quản lý (manage)... Quan hệ giữa liên kết và cài đặt:
Trong pha phân tích, một quan hệ liên kết không phải là một phát biểu về dòng dữ liệu, các biến đối tượng hay các liên kết đối tượng trong giải pháp phần mềm. Quan hệ liên kết có thể được cài đặt bằng nhiều cách, nhưng các quyết định đó không được có mặt trong pha phân tích để bảo vệ tự do cho thiết kế.
Khi tạo ra một mô hình khái niệm, ta có thể định nghĩa nhiều quan hệ liên kết không cần thiết cho quá trình xây dựng. Ngược lại, có thể phát hiện các quan hệ liên
LU Phái triển phần niềm hướng đối tương sứ dụng UML.__________________________________________
kết cần thiết cho cài đặt nhưng không có trong pha phân tích. Trong các trường hợp đó, mô hình khái niệm phải được cập nhật lại.
♦> Quan hệ bao gồm (aggregation association)
Quan hệ bao gồm là một dạng đặc biệt của quan hệ liên kết sử dụng để mô hình quan hệ “toàn bộ-bộ phận” giữa thực thể và các bộ phận của nó. Đối tượng toàn bộ được gọi là đối tượng hợp.
Trong UML, quan hệ bao gồm được kí hiệu bằng một hình thoi tô kín ở đối tượng hợp. Ví dụ:
Hình 10: Minh huạ quan hệ liên kết.
Có hai loại quan hệ bao gồm:
a. Quan hệ phức lựrp
Là quan hệ mà lực lượng của đối tượng hợp nhiều nhất là một, và được kí hiệu bằng một hình thoi tô kín. Quan hệ này có nghĩa là: đối tượng bộ phận chỉ thuộc về duy nhất một đối tượng hợp. Ví dụ: một học phần chỉ thuộc về một môn học. Đây là dạng phỗ biến nhất của quan hệ bao gồm.
b. Quan hệ chia sẻ
Là quan hệ mà lực lượng của đối tượng hợp có thể có nhiều hơn một và được kí hiệu bằng một hình thoi rỗng. Nó chỉ ra rằng một đối tượng bộ phận có thể thuộc về nhiều đối tượng hợp. Quan hệ này không tồn tại trong các quan hệ vật lý mà chỉ có ở các khái niệm phi vật lý.
DeThi * Bao gồm 1
CauHoi
Hình 11: Một Câu hỏi có thể ở nhiều Đ ề thi.
Hai tính chất của quan hệ bao gồm:
• Phản đối xứng (Antisymmetry): Nếu một đối tượng A được quan hệ với một đối tượng B bởi một quan hệ bao gồm thì B không thể được quan hệ với A bằng quan
hệ bao gồm đó. Nói cách khác, nếu B là một thành phần của A thì A không thể là một phần của B.
• Bấc cầu (Transitivity): Nếu A được quan hệ với B bởi một quan hệ bao gồm và B được quan hệ với c cũng bằng quan hệ bao gồm đó thì A cũng quan hệ với c . Lựa chọn khi nào thì chỉ ra quan hệ bao gồm:
+ Thời gian “sống” của đối tượng bộ phận giới hạn trong thời gian sống của đối tượng hợp. Đày là phụ thuộc tạo/xoá bỏ của đối tượng bộ phận vào đối tượng toàn bộ. Đối tượng bộ phận không thể tổn tại bên ngoài thời gian tồn tại của đối tượng toàn bộ.
+ Đây là một nhóm có quan hệ “toàn bộ-bộ phận” logic hoặc vật lý một cách rõ ràng.
+ Một thuộc tính của đối tượng hợp được các đối tượng bộ phận thừa kế.
+ Các phép toán được áp dụng đối với đối tượng hợp cũng được thừa kế ở các đối tượng bộ phận như: huỷ, di chuyển, lưu trữ,v.v....
+ Nếu không chắc chắn khi nào sử dụng quan hệ bao gồm thì không để ý đến nó mà chú trọng vào các quan hệ liên kết đơn giản. Hầu hết lợi ích của việc phát hiện và chỉ ra các quan hệ bao gồm là để liên hệ tới giải pháp cài đặt phần mềm.
*1* Lớp liên kết ịassociation class)
Quan hệ liên kết giữa hai lớp có thể có các thuộc tính và phương thức, khi đó nó sẽ được mô hình như một lớp (lớp liên kết).
Ví dụ:
SinhVien _____ Thưc hiên________ DeThi
BaiThi
Hình 12: Ví dụ lớp liên kết.
❖ T huộc tính (attrib u te)
Mỗi một thể hiện của một khái niệm có thể có một số thuộc tính cơ bản nào đó. Ví dụ, một sinh viên có thể có các thuộc tính: mã sinh viên, họ tên, ngày sinh,...Một
thuộc tính của lớp là sự trừu tượng một thuộc tính chất đơn hoặc một đặc tính của các thực thể mà đã được trừu tượng hoá như là đối tượng của lớp.
Thuộc tính của mỗi đối tượng riêng lẻ trong lớp là một giá trị dữ liệu logic mô tả một đặc tính tương ứng của đối tượng. Mỗi đối tượng có chính xác một giá trị cho mỗi thuộc tính ở thời điểm được đưa ra.
Mỗi thuộc tính có một tên, có thể xác định kiểu dữ liệu cho thuộc tính và có thể có một giá trị mặc định (khởi tạo) cho thuộc tính.
Ví dụ: SinhVien Ế ^ m a S in h V ie n : s trin g i^ h o T e n : String É ^ n g a y S in h : Date Ế ^ g io iT in h : B oolean Hình 13: Thuộc tính của lớp. Thêm các thuộc tính vào lớp
Đối với mỗi lớp trong mô hình khái niệm, ta muốn tìm tập các thuộc tính thoả mãn: + Đầy đủ: Chỉ ra được tất cả các thông tin cần thiết về đối tượng.
+ Mang tính đại diện: Mỗi thuộc tính chỉ ra một đặc tính khác nhau của đối tượng.
+ Tác động độc lập: Mỗi đối tượng, giá trị của các thuộc tính là độc lập đối với đối tượng khác.
+ Đầy đủ đối với các yêu cầu và trường hợp sử dụng: Tập trung vào các thuộc tính mà yêu cầu đưa ra hoặc những thông tin lưu trữ cần thiết.
Một lỗi thường gặp trong mô hình hoá hướng đối tượng là mô tả cái gì đó như là thuộc tính trong khi nó phải là một khái niệm hoặc một liên kết. Ta sẽ xem xét một số cách để tránh lỗi này.
Sử dụng các thuộc tính đơn giản
Các thuộc tính trong mô hình khái niệm tốt nhất là các thuộc tính đơn giản hoặc các kiểu dữ liệu thuần tuý như: Boolean, Date, Number, String (Text), Time, Address, Color, Phone Number, Social Security Number,...
Qui tắc 1:
Tránh mô tả các khái niệm phức tạp như là thuộc tính. Thay vào đó ta sử dụng các liên kết. Liên kết quan hệ khái niệm với quan hệ thuộc tính, không phải với thuộc tính. Ví dụ: Tránh mô tả: SinhVien hoTen Lop Nên:
SinhVien thanh vien Lop
ĩi^hoTen ---ỉ— > 0>tenLop
Hình 14: Tránh dừng các khái niệm miền phức tạp làm thuộc tính.
Qui tắc 2:
Một phần tử của một kiểu dữ liệu thuần tuý có thể được mô tả trong phần thuộc tính của một khái niệm khác, mặc dù việc mô hình nó như là một khái niệm riêng