Mơ hình hướng đối tượng biểu diễn một hệ thống có tính logic của các đối tượng có trong thế giới thực cùng với các ràng buộc của các đối tượng này và các mối quan hệ tương quan giữa chúng [11]. Mơ hình hướng đối tượng thường được biểu diễn bởi biểu đồ lớp trong UML (mô tả cấu trúc tĩnh của hệ thống) và được tạo thành từ các phần tử chính sau đây:
(1) Lớp: là tập hợp các đối tượng có cùng các thuộc tính (attributes) và phương thức (methods). Mỗi đối tượng phải thuộc về một lớp nào đó
và là một thể hiện của lớp đó. Trong lập trình hướng đối tượng, câu lệnh khai báo ra một lớp mới tương đương với việc tạo ra môt kiểu dữ liệu trừu tượng hoặc một kiểu dữ liệu nguyên thủy (kiểu số nguyên (integer), kiểu xâu (string), hay kiểu logic, v.v).
– Thuộc tính (Attributes): dùng để biểu diễn các thơng tin hữu ích
của các thể hiện của một lớp (tập hợp các giá trị của các thuộc tính của các đối tượng trong lớp và gọi là trạng thái của đối tượng (state)).
– Phương thức (Methods): dùng để biểu diễn hành vi (behavior) của lớp (các phương thức thường thao tác trên trạng thái của đối tượng).
(2) Mối quan hệ giữa các lớp: trong mơ hình hướng đối tượng, các lớp
thường tương tác với nhau theo những cách riêng và bao gồm rất nhiều loại liên kết logic. Trong luận án này, chúng tôi quan tâm đến một số loại liên kết sau đây:
– Kết hợp (Association): là một quan hệ cấu trúc mô tả một tập hợp các liên kết (links), mỗi liên kết tạo ra sự kết nối giữa các đối tượng;
– Tụ hợp (Aggregation): là dạng đặc biệt của kết hợp, diễn đạt cho quan hệ cấu trúc giữa một tổng thể và các bộ phận của nó; – Hợp thành (Composition): là dạng đặc biệt của tụ hợp, trong đó
nếu đối tượng tổng thể bị hủy bỏ thì các đối tượng bộ phận của nó cũng bị hủy bỏ theo;
– Hiện thực hóa (Realization): là quan hệ ngữ nghĩa giữa các phân lớp (classifiers), trong đó một phân lớp sẽ đặc tả cam kết mà phân lớp kia phải đảm bảo đáp ứng và thực thi. Quan hệ hiện thực hóa mà chúng ta thường gặp là quan hệ giữa các giao diện và lớp hay thành phần thực thi, hoặc quan hệ giữa các ca sử dụng và các cộng tác hiện thực hóa chúng;
– Tổng quát hóa (Generalization): là loại quan hệ đặc biệt hóa/khái quát hóa trong đó các đối tượng của phần tử đặc biệt hóa là có thể được thay thế bởi các đối tượng của phần tử khái quát hóa. Theo cách này, phần tử con sẽ kế thừa và chia sẻ cấu trúc và hành vi của phần tử cha;
– Sự phân cấp (Class Hierarchy): sử dụng để định nghĩa mối quan hệ kế thừa giữa các lớp.
(3) Ràng buộc trên các lớp (Constraint of a class): biểu diễn một số điều kiện, hạn chế hoặc các khẳng định mà liên quan đến các phần tử của lớp (bao gồm các thuộc tính và các phương thức). Ràng buộc thường được đặc tả bởi các biểu thức logic (Boolean expression) và phải đánh giá cho là đúng hoặc sai, đồng thời phải được thỏa mãn với
một thiết kế chính xác của hệ thống. Các ràng buộc liên quan đến biểu đồ lớp được phân thành ba loại như sau:
– Bất biến của lớp (Class invariants): là ràng buộc định nghĩa trên các thuộc tính của lớp và phải được thỏa mãn bởi bất kì một thể hiện nào của lớp;
– Tiền điều kiện của phương thức (Pre-condition of a method): là điều kiện mà phương thức cần phải thỏa mãn trước khi nó được thực hiện;
– Hậu điều kiện của phương thức (Post-condition of a method): là điều kiện mà phương thức cần phải thỏa mãn sau khi nó được thực hiện;
Một cách ngắn gọn, có thể nói rằng một mơ hình hướng đối tượng bao gồm nhiều lớp đối tượng, các mối quan hệ giữa các lớp đối tượng này và những ràng buộc được áp dụng trên chúng.
Các hệ thống hướng đối tượng thường được biết đến với ưu điểm lớn là khả năng tái sử dụng các thành phần phần mềm trong các giai đoạn phát triển tiếp theo của chính phần mềm đó. Điều này làm cho kỹ thuật tái cấu trúc trở nên đặc biệt phù hợp với các hệ thống hướng đối tượng vì sự hỗ trợ một cách tự nhiên của các hệ thống này đối với các hoạt động tái cấu trúc [5].