이 세 가지 패러다임을 설명하는 논문이 많이 있다는 것을 알고 있지만 개략적 인 설명을 찾고 있습니다.
여기에는 측면 지향 프로그래밍에 대한 아주 좋은 설명이 있으므로 Stack Overflow의 고품질 답변 사람들이 제공하는 데 익숙해지기를 희망 하여이 질문을하고 있습니다.
이 세 가지 패러다임을 설명하는 논문이 많이 있다는 것을 알고 있지만 개략적 인 설명을 찾고 있습니다.
여기에는 측면 지향 프로그래밍에 대한 아주 좋은 설명이 있으므로 Stack Overflow의 고품질 답변 사람들이 제공하는 데 익숙해지기를 희망 하여이 질문을하고 있습니다.
답변:
이것에 관한 책을 써서 대답 할 수 있습니다. 그러나 여기에 기본적인 비교가 있습니다.
1. 과목 중심의 프로그래밍
주제 지향 프로그래밍은 다음과 같이 객체 지향에서 급격히 벗어납니다. OO에서 객체는 본질적인 측면에서 정의됩니다 (즉, 독립적으로 설명하는 모델을 기반으로 함). 이를 기반으로 속성 (속성) 및 방법 (동작)이 파생됩니다. 응용 프로그램은 단지 사용합니다이러한 속성과 행동. 이와 반대로, 주제 지향 프로그래밍에서는 그러한 격리에 객체가 존재하지 않으며 모델링되지 않습니다. 이 과정에서 객체의 행동은 원래 객체의 저자의 범위와 통제 범위를 벗어난 객체의 다양한 다른 "주체"에 의해 제공됩니다. 다양한 "독립적으로 정의 가능한 행동" 나는 이것이 여기서 논의되는 것과 비교하여 상속 템플릿을 정의하는 것 이상의 방법이라고 생각합니다.
논쟁의 여지가없는 용어 (및 개념)는 " 주제 지향 프로그래밍 : 순수한 대상의 비판 , 윌리엄 해리슨 및 해롤드 오셔"논문에서 비롯됩니다. 여기 또 다른 좋은 논문이 있습니다. 개인적으로 나는 이것이 이론적 프레임 워크라고 생각합니다. 언어 / 구현이 있는지 모르겠습니다
2. Aspect 지향 프로그래밍
Aspect 지향 프로그래밍은 " 한때 분리 "라는 개념에서 시작되었습니다 . 기본적으로 이는 교차 절단 문제에 대해 절차 적 또는 객체 지향 프로그래밍을 확장합니다. 지나치게 단순화하면 소프트웨어에는 기능 요구 사항 과 비 기능 요구 사항 이 있다고 말할 수 있습니다. 이러한 교차 절단 요구 사항에는 로깅, 예외 처리, 스레드 동기화, 메모리 관리, 최적화 등과 같은 예가 포함됩니다. 이러한 교차 절단 ASPECTS 는 다른 기능적 부품에 대해 독립적으로 표현되고 구현되어야합니다.
이 분야의 포괄적 인 작업은 IBM의 것입니다 . 기본적으로 각각의 이러한 우려 또는양태 는 다차원 "관심 공간"을 형성하면서 서로 독립적 일 수있다. (읽기 이 ).
Aspect Oriented의 좋은 실제 구현 중 일부는 AspectJ 및 AspectC ++ 및 그 이상 입니다. 참조 이 .
3. 역할 지향 프로그래밍
에이전트를 향한 발전에 따라 에이전트가 수행하는 정확한 활동이 환경에 따라 달라지는 "역할"과 목표를 정의 해야하는 경우가 많습니다. 이는 인간의 개념 이해와 유사합니다.
기본 목표는 협력 프로세스 라는 명시 적 구성을 정의하여 작업의 목표를 협업 기능에서 분리하는 것입니다 . 역할은 기능 세트와 예상되는 동작으로 모델링됩니다. 그러나 이러한 접근 방식을 통해 실행 환경을 모델링하고 에이전트 / 개체가 환경을 인식하는 방법도 가능합니다. 참조 이 .
역할 기반 모델링 및 구현을위한 연구에서 제안 된 다양한 프레임 워크가 있습니다. 그들 중 몇은 로프 , 뇌 , ALAADIN 및 더 .