Lớp, Đối tượng, Quan hệ - Các thành phần cơ bản của mô hình
Trong mô hình hóa hướng đối tượng, những phần tử cấu thành căn bản nhất của mô hình là lớp, đối tượng và mối quan hệ giữa chúng với nhau. Lớp và đối tượng sẽ mô hình hóa những gì có trong hệ thống mà chúng ta muốn miêu tả, các mối quan hệ sẽ biểu thị cấu ...
Trong mô hình hóa hướng đối tượng, những phần tử cấu thành căn bản nhất của mô hình là lớp, đối tượng và mối quan hệ giữa chúng với nhau. Lớp và đối tượng sẽ mô hình hóa những gì có trong hệ thống mà chúng ta muốn miêu tả, các mối quan hệ sẽ biểu thị cấu trúc. Động tác phân lớp (classification) đã được sử dụng từ hàng ngàn năm nay để đơn giản hóa việc miêu tả các hệ thống phức tạp. Khi loài người biết đến việc lập trình hướng đối tượng để xây dựng các hệ thống phần mềm thì lớp và các mối quan hệ của chúng được chuyển thành các dòng code cụ thể.
Một đối tượng là một sự tượng trưng cho một thực thể, hoặc là thực thể tồn tại trong thế giới đời thực hoặc thực thể mang tính khái niệm. Một đối tượng có thể tượng trưng cho cái gì đó cụ thể, ví dụ như một chiếc xe ô tô chở hàng của bạn hoặc chiếc máy tính của tôi, hoặc tượng trưng cho một khái niệm ví dụ như một quy trình hóa học, một giao dịch trong nhà băng, một lời đặt hàng, những thông tin trong quá trình sử dụng tín dụng của khách hàng hay một tỷ lệ tiền lời.
Cũng có những đối tượng (ví dụ như các đối tượng thực thi một trong hệ thống phần mềm) không thật sự tồn tại ở ngoài thế giới thực, nhưng là kết quả dẫn xuất từ quá trình nghiên cứu cấu trúc và ứng xử của các đối tượng ngoài thế giới thực. Những đối tượng đó, dù là bằng cách này hay cách khác, đều liên quan đến quan niệm của chúng ta về thế giới thực.
Một đối tượng là một khái niệm, một sự trừu tượng hóa, hoặc là một đồ vật với ranh giới và ý nghĩa được định nghĩa rõ ràng cho một ứng dụng nào đó. Mỗi đối tượng trong một hệ thống đều có ba đặc tính: trạng thái, ứng xử và sự nhận diện.
Trạng thái(state) của một đối tượng là một trong những hoàn cảnh nơi đối tượng có thể tồn tại. Trạng thái của một đối tượng thường sẽ thay đổi theo thời gian, và nó được định nghĩa qua một tổ hợp các thuộc tính, với giá trị của các thuộc tính này cũng như mối quan hệ mà đối tượng có thể có với các đối tượng khác. Ví dụ một danh sách ghi danh cho một lớp học trong hệ thống trường học có thể có hai trạng thái: trạng thái đóng và trạng thái mở. Nếu danh sách sinh viên ghi danh cho lớp học này còn nhỏ hơn số tối đa cho phép (ví dụ là 10), thì trạng thái của bảng ghi danh này là mở. Một khi đã đủ 10 sinh viên ghi danh cho lớp, danh sách sẽ chuyển sang trạng thái đóng.
Ứng xử (Behaviour) xác định một đối tượng sẽ phản ứng như thế nào trước những yêu cầu từ các đối tượng khác, nó tiêu biểu cho những gì mà đối tượng này có thể làm. Ứng xử được thực thi qua loạt các Phương thức (operation) của đối tượng. Trong ví dụ trường đại học, một đối tượng bảng ghi danh lớp học có thể có ứng xử là bổ sung thêm một sinh viên hay xóa đi tên của một sinh viên khi sinh viên đăng ký học hay bãi bỏ đăng ký.
Sự nhận diện (Identity) đảm bảo rằng mỗi đối tượng là duy nhất – dù trạng thái của nó có thể giống với trạng thái của các đối tượng khác. Ví dụ, khóa học đại số 101 chương 1 và khóa học đại số 101 chương 2 là hai đối tượng trong hệ thống ghi danh trường học. Mặc dù cả hai đều thuộc loại bảng ghi danh, mỗi khóa học vẫn có sự nhận dạng duy nhất của mình.
Một lớp là một lời miêu tả của một nhóm các đối tượng có chung thuộc tính, chung phương thức (ứng xử), chung các mối quan hệ với các đối tượng khác và chung ngữ nghĩa (semantic). Nói như thế có nghĩa lớp là một khuôn mẫu để tạo ra đối tượng. Mỗi đối tượng là một thực thể của một lớp nào đó và một đối tượng không thể là kết quả thực thể hóa của nhiều hơn một lớp. Chúng ta sử dụng khái niệm lớp để bàn luận về các hệ thống và để phân loại các đối tượng mà chúng ta đã nhận dạng ra trong thế giới thực.
Một lớp tốt sẽ nắm bắt một và chỉ một sự trừu tượng hóa - nó phải có một chủ đề chính. Ví dụ, một lớp vừa có khả năng giữ tất cả các thông tin về một sinh viên và thông tin về tất cả những lớp học mà người sinh viên đó đã trải qua trong nhiều năm trước không phải là một lớp tốt, bởi nó không có chủ đề chính. Lớp này cần phải được chia ra làm hai lớp liên quan đến nhau: lớp sinh viên và lớp lịch sử của sinh viên.
Hình 5.1- Mỗi thực thể trong mô hình trên là một lớp
Khi tạo dựng mô hình cũng như thật sự xây dựng các hệ thống doanh nghiệp, các hệ thống thông tin, máy móc hoặc các lọai hệ thống khác, chúng ta cần sử dụng các khái niệm của chính phạm vi vấn đề để khiến cho mô hình dễ hiểu và dễ giao tiếp hơn. Nếu chúng ta xây dựng hệ thống cho một công ty bảo hiểm, mô hình cần phải dựa trên các khái niệm của ngành bảo hiểm. Nếu chúng ta xây dựng một hệ thống cho quân đội, thì các khái niệm của thế giới quân sự cần phải được sử dụng khi mô hình hóa hệ thống. Một hệ thống dựa trên các khái niệm chính của một ngành doanh nghiệp nào đó có thể dễ được thiết kế lại cho phù hợp với những qui chế, chiến lược và qui định mới, bởi chúng ta chỉ cần cân bằng và khắc phục sự chênh lệch giữa công việc cũ và công việc mới. Khi các mô hình được xây dựng dựa trên các khái niệm lấy ra từ cuộc đời thực và dựa trên các khái niệm thuộc phạm vi vấn đề, hướng đối tượng sẽ là một phương pháp rất thích hợp bởi nền tảng của phương pháp hướng đối tượng là các lớp, đối tượng và mối quan hệ giữa chúng.
Một lớp là lời miêu tả cho một dạng đối tượng trong bất kỳ một hệ thống nào đó – hệ thống thông tin, hệ thống kỹ thuật, hệ thống nhúng thời gian thực, hệ thống phân tán, hệ thống phần mềm và hệ thống doanh thương. Các vật dụng (artifact) trong một doanh nghiệp, những thông tin cần được lưu trữ, phân tích hoặc các vai trò mà một tác nhân đảm nhận trong một doanh nghiệp thường sẽ trở thành các lớp trong các hệ thống doanh nghiệp và hệ thống thông tin.
Ví dụ về các lớp trong doanh nghiệp và các hệ thống thông tin:
- Khách hàng
- Bản thương thuyết
- Hóa đơn
- Món nợ
- Tài sản
- Bản công bố giá cổ phiếu
Các lớp trong một hệ thống kỹ thuật thường bao gồm các đối tượng kỹ thuật, ví dụ như máy móc được sử dụng trong hệ thống:
- Sensor
- Màn hình
- I/O card
- Động cơ
- Nút bấm
- Lớp điều khiển
Các hệ thống phần mềm thường có các lớp đại diện cho các thực thể phần mềm trong một hệ điều hành:
- File
- Chương trình chạy được
- Trang thiết bị
- Icon
- Cửa sổ
- Thanh kéo
Một biểu đồ lớp là một dạng mô hình tĩnh. Một biểu đồ lớp miêu tả hướng nhìn tĩnh của một hệ thống bằng các khái niệm lớp và mối quan hệ giữa chúng với nhau. Mặc dù nó cũng có những nét tương tự với một mô hình dữ liệu, nhưng nên nhớ rằng các lớp không phải chỉ thể hiện cấu trúc thông tin mà còn miêu tả cả hình vi. Một trong các mục đích của biểu đồ lớp là tạo nền tảng cho các biểu đồ khác, thể hiện các khía cạnh khác của hệ thống (ví dụ như trạng thái của đối tượng hay cộng tác động giữa các đối tượng, được chỉ ra trong các biểu đồ động). Một lớp trong một biểu đồ lớp có thể được thực thi trực tiếp trong một ngôn ngữ hướng đối tượng có hỗ trợ trực tiếp khái niệm lớp. Một biểu đồ lớp chỉ chỉ ra các lớp, nhưng bên cạnh đó còn có một biến tấu hơi khác đi một chút chỉ ra các đối tượng thật sự là các thực thể của các lớp này (biểu đồ đối tượng).
Hình 5.2-Mô hình lớp trong UML
Hình 5.3- Một lớp cụ thể với các thuộc tính
Để tạo một biểu đồ lớp, đầu tiên ta phải nhận diện và miêu tả các lớp. Một khi đã có một số lượng các lớp, ta sẽ xét đến quan hệ giữa các lớp đó với nhau.