Sự khác biệt giữa lập trình hướng, chủ đề và lập trình theo vai trò là gì?


14

Tôi biết có nhiều bài viết mô tả ba mô hình này nhưng tôi đang tìm kiếm một lời giải thích sơ đồ.

Có một vài mô tả rất hay về lập trình hướng theo khía cạnh ở đây vì vậy tôi đang đặt câu hỏi này với hy vọng có được loại câu trả lời chất lượng cao mà mọi người tại Stack Overflow được sử dụng để phân phối.


Đây có lẽ là nhiều câu hỏi của lập trình viên. Nhưng nó cũng thực sự mở. Xem stackoverflow.com/faq#dontask - "Câu hỏi của bạn nên có phạm vi hợp lý. Nếu bạn có thể tưởng tượng toàn bộ cuốn sách trả lời câu hỏi của bạn, bạn đang hỏi quá nhiều."
Merlyn Morgan-Graham

Tôi sẽ bắt đầu bằng cách đọc Thomas Kuhn ban đầu: amazon.com/Str

Tôi cũng có thể tưởng tượng một câu trả lời ngắn cho câu hỏi của tôi. Ví dụ, đây là cách tôi mô tả lập trình theo hướng Aspect: Đó là cách thêm "đơn vị xử lý" được gọi là các khía cạnh theo cách mô đun trước và sau các đơn vị xử lý khác bằng phương pháp cắt điểm. Đối với tôi nó trông rất giống lập trình dựa trên quy tắc, ví dụ ngôn ngữ lập trình Inform7. notify7.com/learn/man/doc188.html

Câu trả lời:


9

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àycá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ăngkhô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à AspectJAspectC ++ 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 , ALAADINhơn thế nữa .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.