Người ta có thể trả lời điều này bằng cách viết một cuốn sách về điều này. Tuy nhiên, đây là một so sánh cơ bản
1. Lập trình hướng môn học
Lập trình hướng đối tượng là sự khởi đầu triệt để khỏi đối tượng được định hướng như sau. Trong OO, các đối tượng được xác định theo nghĩa nội tại (tức là dựa trên một mô hình mô tả độc lập nó). và dựa trên điều này các thuộc tính (thuộc tính) và phương thức (hành vi) của nó được dẫn xuất. Ứng dụng này chỉ sử dụngcủa các tính chất và hành vi. Trái ngược với điều này, trong lập trình hướng đối tượng, không có đối tượng nào tồn tại (và được mô hình hóa) trong sự cô lập như vậy. Trong quá trình, nhưng hành vi của các đối tượng được cung cấp bởi các "đối tượng khác nhau" của các đối tượng nằm ngoài phạm vi và sự kiểm soát của tác giả của đối tượng ban đầu. Hãy nghĩ về nó như một cách mở rộng các "hành vi có thể xác định độc lập" "Về đối tượng. Tôi nghĩ rằng điều này sẽ vượt xa việc xác định các mẫu thừa kế so với những gì đang được thảo luận ở đây.
Nguồn gốc không thể chối cãi của các thuật ngữ (và khái niệm) xuất phát từ bài báo " Lập trình hướng chủ đề: Phê phán các đối tượng thuần túy , William Harrison và Harold Ossher". Đây là một bài báo tốt . Mặc dù cá nhân tôi tin rằng đây là một khung lý thuyết. Tôi không biết nếu có bất kỳ ngôn ngữ / thực hiện
Xem cái này , cái này và cái này để biết thêm.
2. Lập trình định hướng theo khía cạnh
Lập trình định hướng theo khía cạnh đã bắt nguồn từ khái niệm " Tách các phần tử ". Về cơ bản, nó mở rộng chương trình hướng đối tượng hoặc hướng đối tượng cho các mối quan tâm xuyên suốt. Qua đơn giản hóa, người ta có thể nói rằng phần mềm có các yêu cầu chức năng và không có chức năng . Các yêu cầu cắt chéo này bao gồm các ví dụ như ghi nhật ký, xử lý ngoại lệ, đồng bộ hóa luồng, quản lý bộ nhớ, tối ưu hóa, v.v. Các NHIỆM VỤ cắt chéo này phải được thể hiện và thực hiện riêng biệt và độc lập với bất kỳ bộ phận chức năng nào khác.
Một công việc toàn diện trong lĩnh vực này là từ IBM ; về cơ bản từng mối quan tâm như vậy hoặccác khía cạnh có thể độc lập với nhau tạo thành "không gian quan tâm" đa chiều. , (đọc cái này ).
Một số triển khai thực tế tốt của Định hướng theo khía cạnh là AspectJ và AspectC ++ và nhiều hơn nữa . Xem này .
3. Lập trình theo định hướng vai trò
Khi chúng ta phát triển theo các tác nhân, nhiều lần cần phải xác định "vai trò" và mục tiêu trong đó các hoạt động chính xác mà tác nhân kết thúc thực hiện phụ thuộc vào môi trường của nó. Điều này tương tự với sự hiểu biết khái niệm của con người.
Mục tiêu chính là tách rời mục tiêu của nhiệm vụ khỏi khả năng hợp tác của nó bằng cách xác định cấu trúc rõ ràng được gọi là các quy trình hợp tác . Một vai trò được mô hình hóa như một tập hợp các khả năng và một hành vi dự kiến. tuy nhiên, các phương pháp này cũng cho phép mô hình hóa môi trường thực thi và cách tác nhân / đối tượng có thể cảm nhận môi trường. Xem này .
Có nhiều khung khác nhau được đề xuất trong nghiên cứu cho mô hình hóa và triển khai dựa trên vai trò. Một vài trong số đó là ROPE , BRAIN , ALAADIN và hơn thế nữa .