합성 필터
Composition filters구성 필터 모델은 기존 객체 모델에 대한 모듈식 확장을 나타냅니다.이 솔루션은 크고 복잡한 애플리케이션 구축 시 광범위한 문제에 대한 솔루션을 제공합니다.가장 주목할 만한 것은 구성 필터의 한 구현이 메시지 전달 시스템을 위한 추상화 계층을 제공한다는 것입니다.
합성 필터는, 착신 및 발신 메시지의 조작에 의해서 오브젝트의 동작을 변경하는 것으로 동작합니다.이는 조건에 따라 제어되는 입력 및 출력 필터의 도움으로 수행됩니다.
역사와 동기
동시 및 분산 컴퓨팅에서는 기존의 객체 지향 모델로는 다루기 어려웠던 코드 산란이나 얽힘 등의 문제가 많이 발생합니다.이러한 우려에 대처하는 새로운 소프트웨어 개발 모델을 개발할 필요성이 대두되었고, 이로 인해 Aspect 지향 소프트웨어 개발 패러다임이 형성되었다.이 패러다임의 여러 모델이 동시에 개발되었으며, 그 중 하나가 구성 필터 객체 모델입니다.이 모델의 선구자는 Mehmet Aksit와 다양한 박사과정 학생(Lodewijk Bergmans, Jan Bosch, Bedir Tekiner dogan) 및 네덜란드 Twente 대학의 TRESE 그룹의 많은 MSC 학생입니다.그것은 Mehmet Aksit가 박사학위 논문에서 개발한 시나 언어를 기반으로 했다.그 [3][4]이후로 모델에 많은 발전이 있었다.
설계.
합성 필터 모델의 설계는 커널 객체 모델의 설계의 확장입니다.설계는 커널 또는 구현 부분과 외부 레이어 또는 인터페이스 부분으로 구성됩니다.확장 기능은 기존의 커널 객체 [5]모델에서 구성 필터 모델을 생성하기 위해 인터페이스 부분에서 만들어집니다.
구현 부분
구현 부분 또는 커널은 다음 세 가지 유형의 구성 요소를 가진 단일 계층으로 구성됩니다.
- 인스턴스 변수
- 방법들
- 조건들
또, 실장 레이어와 인터페이스 레이어를 구분하는 캡슐화 경계로 구성됩니다.
인스턴스 변수
인스턴스 변수는 완전히 캡슐화된 커널의 유일한 구성 요소입니다.경계 외부에서 이러한 변수에 액세스할 수 없습니다.이 모형에서 인스턴스 변수는 모든 유형일 수 있습니다.정수, 문자 및 클래스 및 열거와 같은 사용자 정의 데이터 유형과 같은 기본 데이터 유형은 모두 인스턴스 변수로 간주됩니다.
방법들
객체의 동작은 메서드를 통해 구현됩니다.메서드는 메서드 본문과 메서드 선언의 두 부분으로 구성됩니다.오브젝트가 호출되었을 때 수행할 것으로 예상되는 액션은 메서드 본문에 정의되어 있습니다.메서드 선언은 메서드 이름, 파라미터의 이름과 유형 및 반환 유형으로 구성됩니다.메서드는 커널에 완전히 캡슐화되지 않았으며 인터페이스 부분에서 사용할 수 있습니다.
초기 방법
초기 방법은 다른 객체 지향 모델의 생성자와 함수가 유사한 특수한 방법입니다.
조건들
부울 반환 유형이 있고 매개 변수 목록이 비어 있는 메서드를 조건이라고 합니다.조건을 사용하여 객체의 현재 상태에 대한 정보를 제공할 수 있습니다.방법과 마찬가지로 인터페이스 부분에서도 조건을 사용할 수 있으며 조건의 사용 대부분은 구현 부분 밖에 있다.
인터페이스 부분
컴포지션 필터 오브젝트 모델의 인터페이스 부분은 입력 필터와 출력 필터라는2개의 주요 컴포넌트로 구성됩니다.또한 내부 컴포넌트와 외부 컴포넌트라는 두 가지 지원 컴포넌트가 포함되어 있습니다.또, 실시부로부터의 방법이나 조건은, 인터페이스부로부터도 액세스 할 수 있다.
필터
입력 필터와 출력 필터는 디자인은 비슷하지만 기능은 다릅니다.입력 필터는 객체에 전송된 메시지를 처리하는 작업을 수행하지만 출력 필터는 객체에 의해 전송된 메시지에 대해 처리합니다.필터의 주요 기능은 도착하는 메시지를 조작하여 다음 계층으로 전달하는 것입니다.필터는 레이어로 설계되어 있기 때문에 메시지가 다음 레이어에 도달하기 위해서는 한 레이어를 통과해야 합니다.각 레이어는 다른 필터로 구성될 수 있습니다.각 필터는 특정 패턴을 지정합니다.패턴은, 착신 또는 발신 메세지가 준수해야 하는 구문을 정의합니다.메시지가 도착하면 메시지가 필터에 의해 거부되거나 필터에 의해 처리되는 두 가지 가능성이 있습니다.메시지가 거부되거나 조작되는 방법은 필터 유형에 따라 달라집니다.
필터 설계
필터는 필터 요소 세트를 사용하여 설계됩니다.이 세트는 각 메시지가 왼쪽에서 오른쪽으로 적용되므로 순서가 매겨집니다.이것은 일치가 발생할 때까지 계속됩니다.
각 필터 요소는 조건, 일치 부품 및 대체 부품이라는 세 가지 구성요소로 구성됩니다.
[Condition] : 메시지 평가를 계속하기 위해 요소가 필요한 상태.
[Matching part] : 평가된 메시지가 패턴과 대조되는 부분.
[ Substitution part ]: 이전에 일치한 메시지에 대해 치환값이 지정된 부분.
내부
내부 개체는 입력 필터를 참조하는 중첩된 개체입니다.인터페이스 부분에 완전히 캡슐화되어 있습니다.오브젝트 작성 중에 자동으로 생성됩니다.
외부
외부는 출력 필터를 참조하는 중첩된 개체입니다.컴포지션 필터 모델 외부에 있지만 아직 범위 내에 있는 개체를 선언하는 데 사용됩니다.이러한 객체의 예로는 글로벌 변수가 있습니다.
SINA 프로그래밍 언어
SINA 프로그래밍 언어는 컴포지션필터 오브젝트 모델의 기능을 구현하기 위해 설계된 오브젝트 지향 프로그래밍 언어입니다.각 SINA 프로그램은 클래스의 집합이며, 각 클래스는 구현과 인터페이스로 분리할 수 있습니다.SINA의 첫 번째 구현은 Smalltalk용이었으며 그 [6]환경에서만 실행되었습니다.
적용들
추상적 통신 유형
추상적인 통신 타입 오브젝트는 오브젝트 간의 통신과 상호작용을 추상화한다.ACT의 목적은 애플리케이션 전체의 재사용 가능성을 향상시키고, 구현 세부사항을 개별 모듈에서 숨기고, 계층화된 통신 아키텍처를 모델링하는 복잡성을 줄이는 것입니다.
전문가들은[who?] 기존의 객체 지향 모델은 두 객체 간의 통신 의미가 다른 객체로 쉽게 확장될 수 없기 때문에 너무 낮은 수준이라고 생각한다.그러므로, 계층 내의 각 시스템이 인접 계층들과 데이터를 교환하는 계층화된 시스템 아키텍처를 모델링하는데 사용될 수 있는 높은 수준의 언어 메커니즘이 필요했다.상속과 같은 메커니즘은 개체 수준에서 추상화만 제공할 뿐 개체 간의 통신 추상화에는 실패합니다.
합성 필터 모델은 객체 간의 추상적인 통신에 적용되었습니다.오브젝트 모듈은 입출력 필터를 도입함으로써 확장됩니다.입출력 필터는 송수신 메시지에 대한 처리 방법을 결정합니다.
ACT의 주요 장점은 다음과 같습니다.
- ACT 는, 입력 필터와 출력 필터에 의해서 실현되는 메시지의 대행 수신과 조작에 사용할 수 있습니다.
- ACT는 인터랙션코드(통신상세)를 개별 모듈에 숨김으로써 프로그램의 복잡성을 줄입니다.프로그래머는 오브젝트 지향 메커니즘을 적용하여 [7]이들 컴포넌트를 재사용할 수 있습니다.
데이터베이스 통합 모델
합성 필터는 지속적 동적 데이터 구조, 데이터 공유, 트랜잭션, 다중 뷰 및 관련 액세스와 같은 데이터베이스 기능을 객체 지향 언어에 통합하기 위해 사용할 수 있습니다.상속 및 위임과 같은 기본 객체 지향 메커니즘도 구성 필터에 의해 제공됩니다.데이터베이스 통합 모델에서 데이터 추상화, 캡슐화, 메시지 전달 및 [8]상속 등의 객체 지향 메커니즘을 해체하지 않고 합성 필터를 사용하여 결합, 교차, 제외 및 선택 등의 데이터베이스 연산을 개발한다.
기타 구현
구성 필터의 많은 구현이 존재합니다(SmallTalk 및 Java 구현 포함).기존 구현의 장점은 개념 모델과 구현 모델 간에 차이가 없기 때문에 특정 기능의 구현을 이해하기 쉽다는 것입니다.단, 이러한 구현이 느리고 오버헤드가 크다는 것이 단점입니다.Java의 구현 중 하나인 ComposeJ는 컴파일 시간 지향 소스 수정 접근 방식을 [9]사용하여 이 문제를 해결했습니다.
「 」를 참조해 주세요.
외부 링크
- 컴포지션 필터 홈페이지
- 컴포지션 필터의 실장
- http://trese.cs.utwente.nl/oldhtml/publications/papers/CF_superimposition_bergmans_aksit.pdf
- 필터 - 이력
- SINA 프로그래밍 언어
- - C++의 컴포지션 필터
레퍼런스
- ^ Aksit, Mehmet (1989-03-23). "On the Design of the Object-Oriented Language Sina". University of Twente Research Information.
- ^ Aksit, Mehmet. "Data Abstraction Mechanisms in Sina/st". ACM Press. ISSN 0362-1340.
- ^ Aksit, Mehmet (1992). "An Object-Oriented Language-Database Integration Model: The Composition-Filters Approach". ECOOP '92 European Conference on Object-Oriented Programming. Lecture Notes in Computer Science. Vol. 615. Springer Verlag, Berlin. pp. 372–395. doi:10.1007/BFb0053047. ISBN 3-540-55668-0.
- ^ Aksit, Mehmet (1992). "Obstacles in Object-Oriented Software Development". ACM SIGPLAN Notices. 27 (10): 341–358. doi:10.1145/141937.141965.
- ^ "The Composition Filters Object Model". trese.cs.utwente.nl. Retrieved 18 April 2019.
- ^ Ziring, Neal. "Dictionary of Programming Languages". cgibin.erols.com. Retrieved 2016-02-06.
- ^ Mehmet Aksit, Ken Wakita, Jan Bosch, Lodewijk Bergmans 및 Akinori Yonezawa, "합성 필터를 이용한 물체 상호작용 추출", Twente 대학, 도쿄 대학 및 도쿄 공과대학
- ^ Mehmet Aksit, Lodewijk Bergmans 및 Sinan Vural, "개체 지향 언어 데이터베이스 통합 모델:Twente 대학 컴퓨터 공학부, "합성-필터 접근법
- ^ Johannes Cornelis Wichman, "ComposeJ – Java 언어에서 합성 필터를 촉진하기 위한 프리프로세서 개발", Twente 대학교
