KR19990077425A - 정적객체인터페이스로부터다형적성향을가능하게하는데이터처리장치및방법과컴퓨터프로그램제품 - Google Patents

정적객체인터페이스로부터다형적성향을가능하게하는데이터처리장치및방법과컴퓨터프로그램제품 Download PDF

Info

Publication number
KR19990077425A
KR19990077425A KR1019990004943A KR19990004943A KR19990077425A KR 19990077425 A KR19990077425 A KR 19990077425A KR 1019990004943 A KR1019990004943 A KR 1019990004943A KR 19990004943 A KR19990004943 A KR 19990004943A KR 19990077425 A KR19990077425 A KR 19990077425A
Authority
KR
South Korea
Prior art keywords
static
class
call
data processing
method call
Prior art date
Application number
KR1019990004943A
Other languages
English (en)
Inventor
차터스그래함카스트리
바인즈데이빗존
Original Assignee
포만 제프리 엘
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 포만 제프리 엘, 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 포만 제프리 엘
Publication of KR19990077425A publication Critical patent/KR19990077425A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명에 따라 정적 클래스 계층(static class hierarchy)과 비정적 클래스 계층(non-static class hierarchy)의 두 상속(inheritance) 계층을 갖는 객체 지향 프로그래밍 소프트웨어 아키텍처를 사용하여 데이터 처리를 수행하는 데이터 처리 장치가 개시되며, 그 데이터 처리 장치는 정적 계층의 정적 클래스에 대한 메소드 호출을 수신하되, 각 메소드 호출은 특정 메소드가 데이터 처리 장치에 의해 처리되는 것을 요구하는 수단과, 정적 클래스 내의 정적 포인터를 사용하여 수신된 메소드 호출을 비정적 계층의 비정적 클래스의 인스턴스로 재전송하되, 그 인스턴스는 수신된 메소드 호출에서 요구된 메소드의 구현을 제공하는 수단을 포함한다.

Description

정적 객체 인터페이스로부터 다형적 성향을 가능하게 하는 데이터 처리 장치 및 방법과 컴퓨터 프로그램 제품{DATA PROCESSING APPARATUS, METHOD AND COMPUTER PROGRAM PRODUCT FACILITATING POLYMORPHIC BEHAVIOUR FROM STATIC OBJECT INTERFACES}
본 발명은 데이터 처리 분야에 관한 것으로, 보다 상세하게는 객체 지향 프로그래밍 소프트웨어 기법을 사용한 데이터 처리에 관한 것이다.
데이터 처리 분야에 있어서, 객체 지향 프로그래밍(object-oriented programming : OOP)이 컴퓨터 소프트웨어를 다루는 바람직한 방법으로 되고 있다. 객체 지향 프로그래밍(OOP)에 있어서는, 관련 데이터와 이 데이터를 처리하기 위한 커맨드가 객체라 불리는 하나의 개체내에 캡슐화(encapsulate)된다. 데이터 처리를 수행하기 위해서, 호출 객체(calling object)는 다른 객체(피호출 객체)로 메시지를 전송하여, 피호출 객체가 호출 객체의 커맨드중 하나를 실행할 것을 요구한다. 피호출 객체는 메시지를 수신하여 자신의 캡슐화된 데이터에 대하여 커맨드를 수행한다. 따라서, 커맨드의 명칭("메소드"로 알려진)이 각 객체에 알려지게 되어, 한 객체가 다른 객체를 호출하여 피호출 객체로 하여금 메소드를 수행하도록 할 수 있다. 이렇게 하면 객체의 메소드 및 그 메소드가 수행될 데이터에 대한 세세한 내용을 각 객체 내에 은폐하는 장점이 있다. 이렇게 하면, 공통적인 데이터 처리 기능을 용이하게 재사용할 수 있게 된다.
공통된 특징(예를 들어, 유사한 데이터 및/또는 메소드)을 공유하는 객체들은 하나의 클래스(class)로 분류된다. 하나의 객체는 한 클래스의 인스턴스화(instantiation)로 알려져 있으며, 이는 그 객체가 현재 활성화되어 있는 클래스의 멤버라는 것을 의미한다. 클래스들은 한 클래스가 다른 클래스로부터 파생되도록 계층적으로 정렬될 수 있으며 파생 클래스(derived class)는 그것을 파생시킨 클래스의 서브클래스(subclass)라 일컬어진다.
흔히, 하나의 인스턴스(instance)만이 존재하는 클래스를 가져야 할 필요가 있다. 이것은 흔히 싱글톤 클래스(singleton class)라 지칭된다. 그러한 클래스를 구현하는 한 가지 방법이 이 감마(E. Gamma) 등의 Design Patterns, Addison-Wesley Publishing Co 1995, p.127-134.에 기술되어 있다. 이 참조 문헌에서는, 클래스 자체가 하나의 인스턴스를 획득하기 위한 메소드를 제공하며, 그리고 나서야 그 단일 인스턴스는 해당 클래스상의 비정적(non-static) 메소드를 호출하는데 사용될 수 있다. 하지만, 이 방법에서는 호출이 이루어지기 전에 인스턴스가 획득되어야 되기 때문에, 이 방법의 사용시 많은 시간이 소요되는 것으로 드러났다. 더욱이, 이 방법에서는 단일 인스턴스가 전역 변수(global variable)로 노출되어야 하기 때문에, 오용되거나 오손(corruption)되기 쉽다.
이러한 클래스를 구현하는 또 다른 방법은 모든 메소드와 데이터를 정적(static)으로 만드는 것으로(각 메소드는 항상 동일한 데이터에 대해 기결정된 동일한 기능을 수행한다), 이러한 유형의 클래스를 이하 정적 클래스라 지칭할 것이다. 이 방법은 먼저 인스턴스화할, 즉 클래스로부터 먼저 인스턴스를 획득할 필요 없이 호출 프로그램이 한 번의 메소드 호출을 통해 클래스를 사용하는 것이 가능하다는 장점이 있다. 따라서, 많은 경우 데이터 처리 시스템의 객체 지향 설계에 정적 클래스를 사용하는 것이 유리하다.
하지만, 정적 클래스를 선택하는데 있어 수반되는 문제점은 정적 아키텍쳐 그 자체의 특질로 인하여 정적 클래스는 기결정된 동작을 수행하도록 프로그램되어 있고, 이러한 직접적인 과정으로부터 변화되기 어렵다는 것이다. 이것으로 인해 정적 클래스가 시스템 내에 구현되어 있는 경우, 또 다른 기능성을 제공하는 것(흔히 다형성(polymorphism)이라는 객체 지향 개념을 사용하여 이루어지는데, 다형성에 의해 기본 클래스(base class)에 대해 행해진 호출이 기본 클래스로부터 파생된 클래스들에 제공되는 다수의 상이한 성향을 나타내게 됨)이 매우 어렵게 된다. 호출을 발송하는 소프트웨어는 상이한 클래스를 호출하도록 변경될 수 있지만 이것은 매우 바람직하지 못하다. 왜냐하면 이러한 호출 아키텍처가 이미 확정되어 있고, 호출 아키텍처를 재기동(reworking)시키게 되면 정적 클래스를 호출하고자 하는 각각의 호출 아키텍처에 대해 소프트웨어 재기동이 복제될 것이라는 측면에서 어려움이 생길 것이기 때문이다.
정적 클래스에 다형적 성향을 추가하는 한 가지 가능한 방법은 1997년 8월 14일자로 출원되어 계류중인 유럽 특허 출원 번호 97114041.3호에서 IBM(International Business Machines Corp.)에 의해 제안된 바와 같이 정적 기본 클래스의 비정적 서브클래스를 구성하는 것이다. 이 아키텍처에서는, 메소드 호출이 정적 기본 클래스로부터 인스턴스화된 객체로 들어오면, 비정적 서브클래스가 구성되어 있는지 판단하는 테스트가 행해지며, 만일 비정적 서브클래스가 구성되어 있으면, 메소드 호출이 처리를 위해 서브클래스로 전달된다. 만일, 서브클래스가 구성되어 있지 않으면, 메소드 호출은 다수의 정적 클래스가 공유하는 디폴트 비정적 구현에 의해 처리된다. 따라서, 이 아키텍처는 특별히 구성된 비정적 서브클래스를 사용하여 하나의 메소드를 오버라이딩(override)하는 것을 수반한다. 이 기법은(변수를 전역적으로 노출시키지 않은 채) 메소드 호출을 수신하는 클래스 구조 내부에 처리 단계를 유지하는 장점이 있다. 하지만, 이 기법은 하나의 메소드만을 오버라이딩하고, 따라서 만일 다른 메소드에 다형적 성향을 부여하려 할 경우 다른 서브클래스가 구성되어야 한다는(그러므로, 사용되는 전체 클래스의 수를 증가시키는) 한계가 있다. 또 다른 단점은 반드시 서브클래스가 구성되어 있는지 여부를 판단하는 테스트가 수행되어야 하며, 따라서 데이터 프로세서에 의해 수행되어야 하는 처리량을 증가시킨다는 것이다.
따라서, 데이터 처리 시스템에서 정적 클래스에 다형적 성향을 제공하는 보다 더 나은 방법에 대한 필요성이 존재한다.
본 발명의 제 1 측면에 따르면, 정적 클래스 계층과 비정적 클래스 계층의 두 상속 계층을 갖는 객체 지향 프로그래밍 소프트웨어 아키텍처를 사용하여 데이터 처리를 수행하는 데이터 처리 장치에 있어서, 정적 계층의 정적 클래스에 대한 메소드 호출을 수신하는 수단 ― 각 메소드 호출은 특정 메소드가 데이터 처리 장치에 의해 처리되는 것을 요구함 ― 과, 정적 클래스 내의 정적 포인터를 사용하여 수신된 메소드 호출을 비정적 계층의 비정적 클래스의 인스턴스로 재전송하는 수단 ― 인스턴스는 수신된 메소드 호출에서 요구된 메소드의 구현 내용을 제공함 ― 을 포함하는 데이터 처리 장치를 제공한다.
바람직하게는, 메소드 호출 수신 수단은 정적 계층의 정적 기본 클래스에 대한 호출을 수신하며, 정적 포인터를 사용하는 수단은 수신된 메소드 호출을 비정적 계층의 비정적 기본 클래스의 인스턴스로 재전송한다.
보다 더 바람직하게는, 정적 포인터 사용 수단은 비정적 기본 클래스에 포함된 수신된 메소드 호출의 구현 내용이 비정적 파생 클래스에 포함된 수신된 메소드 호출의 수정된 구현 내용에 의해 오버라이드되었으면, 수신된 메소드 호출을 비정적 클래스 계층의 비정적 파생 클래스의 인스턴스로 재전송한다.
본 발명의 제 2 측면에 따르면, 본 발명은 제 1 측면에서 상술한 데이터 처리 장치의 기능을 수행하는 방법을 제공한다.
본 발명의 제 3 측면에 따르면, 본 발명은 컴퓨터에 의해 판독 가능한 저장 매체에 저장되어 컴퓨터에서 작동시킬 때 제 1 측면의 기능을 수행하는 컴퓨터 프로그램 제품을 제공한다.
정적 클래스 인터페이스에 다형적 성향을 제공하는 능력은 매우 유익하다. 다형적 성향 없이는, 정적 클래스 인터페이스가 원래 설계된 정적 기능만을 수행하는 한계를 갖는다. 이것은 정적 인터페이스를 호출하는 호출 소프트웨어 코드의 재사용 능력을 크게 제한한다. 왜냐하면, 이러한 호출 코드는 정적 인터페이스가 항상 동일 기능을 수행해야만 하는 상황에서만 재사용될 수 있기 때문이다. 그러한 정적 인터페이스에 다형적 성향을 제공하므로써, 특정 메소드에 대해 다른 기능이 제공될 수 있고, 따라서 정적 인터페이스를 호출하는 호출 코드의 재사용이 크게 증가된다. 이에 따라, 정적 인터페이스가 존재하지만 그것의 성향이 그 메소드중 적어도 하나에 대해 변경될 필요가 있는 경우 새로운 코드를 작성할 필요가 없어진다.
따라서, (앞서 기술한 감마 등(Gamma et al)의 문헌에서 필요한 것처럼) 변수를 전역적으로 노출시키지 않고서도 다형적 성향이 정적 클래스에 부여될 수 있다. 더욱이, 단지 하나의 메소드가 오버라이드되는 것이 아니라 클래스 전체가 오버라이드되기 때문에 전체 클래스의 수가 감소할 수 있고, 또한 본 발명에 수반된 자동 참조(automatic referral)에 의해(상술한 유럽 특허 출원의 기법에서와 같이) 특별히 구성된 서브클래스가 존재하는지의 여부를 판단하기 위해 테스트를 수행할 필요가 없게 된다.
도 1은 본 발명의 바람직한 실시예가 동작하는 환경을 도시한 블록도.
도 2는 본 발명의 바람직한 실시예에 따라 데이터 처리를 수행하는데 사용되는 객체 지향 소프트웨어 구조를 도시한 블록도.
도 3은 도 2의 정적 기본 클래스를 보다 더 상세하게 도시한 블록도.
도면의 주요 부분에 대한 부호의 설명
11, 12 : 제 1 및 제 2 데이터 처리 장치
111 : 호출 프로그램 코드 112 : 피호출 프로그램 코드
이하 본 발명의 실시예를 첨부된 도면을 참조하여 설명할 것이다.
도 1에 도시된 바와 같이, 본 발명의 바람직한 실시예가 동작하는 환경은 제 1 데이터 처리 장치(11)(예를 들면, 표준 개인용 컴퓨터)가 소프트웨어 프로그램(111)을 실행시키는 환경이다. 소프트웨어 프로그램(111)은 다른 데이터 처리 장치(12)에 호출하여 해당 장치(12)가 제 1 장치(11)를 대신하여 어떠한 작업을 수행할 것을 요구하기 때문에 호출 프로그램 코드라 지칭할 것이다. 그에 상응하여, 제 2 데이터 처리 장치(12)는 피호출 프로그램 코드라 지칭되는 소프트웨어 프로그램(112)을 실행시킨다. 소프트웨어 프로그램(112)을 피호출 프로그램 코드라 지칭하는 이유는 소프트웨어 프로그램(112)이 제 1 데이터 처리 장치(11)로부터 호출을 수신하기 때문이다. 장치(12)는 피호출 프로그램 코드(112)를 사용하여, 호출 프로그램 코드(111)가 요구하는 데이터 처리 작업을 수행한다.
이들 두 데이터 처리 장치는 표준 네트워크 통신 프로토콜을 사용하여 네트워크를 통해 상호 통신한다. 호출 프로그램 코드(111)와 피호출 프로그램 코드(112)가 동일한 데이터 처리 장치에 위치되어서, 네트워크가 작업 요구를 통신할 필요가 없을 수도 있음에 주목해야 한다. 이 경우 작업 요구는 이에 수반된 하나의 데이터 처리 장치의 내부적으로 일어날 것이다.
다형적 성향을 제공하기 위해서는, 메소드 호출이 피호출 프로그램 코드(112)에 의해 수신될 때 상응하는 메소드의 구현 내용이 변경될 수 있도록 하는 것이 필요하다. 만일 그렇지 않으면, 메소드 호출이 수신될 때마다, 항상 동일한 메소드 구현 내용이 메소드 호출을 처리하는데 사용될 것이다. 이러한 정적 인터페이스를 호출하는 호출 프로그램(111)은 피호출 프로그램 코드(112)의 기능이 너무 한정되어 있기 때문에, 재사용되는 것이 어렵다. 만일 피호출 프로그램 코드(112)가 다형적 성향을 나타내도록 만들어질 수 있다면, 호출 프로그램 코드(111)는 훨씬 더 재사용 가능(reusable)해 질 수 있다.
피호출 프로그램 코드(112)는 도 2에 도시된 바와 같이 객체 지향 프로그래밍 기법에 따른 구조를 갖는다. 도 2에서 알 수 있는 바와 같이, 정적 계층(112A)과 비정적 계층(112B)의 두 계층이 소프트웨어 아키텍처에 포함되어 있다. 정적 계층 (112A)은 StaticBase 클래스(1121)라 불리는 기본 클래스와, StaticBase 클래스(1121)로부터 파생된 파생 클래스 StaticOverride(1122)를 포함한다. 마찬가지로, 비정적 계층(112B)은 NonStaticImplBase 클래스(1123)라 불리는 기본 클래스와, NonStaticImplBase 클래스(1123)로부터 파생된 파생 클래스 NonStaticImplOverride 클래스(1124)를 포함한다. 호출 프로그램 코드(111)는 작업 요구(이하 메소드 호출로 칭함, 이는 호출 코드(111)가 피호출 코드(112)에 대해 메소드를 호출하여 피호출 코드(112)로 하여금 메소드 명칭에 의해 식별되는 어떤 특정 작업을 수행하도록 요청하기 때문임)를 발송하며, 작업 요구는 피호출 코드(112)의 StaticBase 클래스(1121)를 통해 피호출 코드(112)에 의해 수신된다. 호출 프로그램 코드(111)는 StaticBase 클래스(1121)의 "정적 인터페이스"에 호출하는 것으로 한다. 정적 인터페이스를 통해 호출 프로그램 코드(111)로부터 임의의 메소드 호출을 수신하면, 피호출 코드의 StaticBase 클래스(1121)는 메소드의 구현 내용에 대한 호출을 포인터(1121a)(도 3 참조)를 통해 NonStaticImplBase 클래스(1123)로 전송한다. 그후, 메소드 호출은 메소드의 구현 내용에 포함된 인스트럭션(instruction)에 따라 데이터 처리 장치(12)에 의해 처리된다.
메소드의 구현 내용은 NonStaticImplBase 클래스(1123)에 의해 제공될 수 있다. 즉, StaticBase 클래스(1121)내의 각 정적 메소드에 대해, 하나의 구현 내용이 NonStaticImplBase 클래스(1123)에서 발견될 수 있고, 따라서 인입(incoming) 호출이 StaticBase 클래스(1121)에 의해 수신될 때 그 호출은 처리를 위해 NonStaticImplBase 클래스(1123)로 전송된다. 또 다른 성향이 정적 기본 클래스(1121)의 임의의 수의 메소드에 대해 요구되면, 요구된 새로운 성향을 구현하는 비정적 클래스(1124)가 비정적 기본 클래스(1123)로부터 파생된다. 그후, 이 새로운 구현 내용은 비정적 기본 클래스(1123)에 의해 원래 제공된 이전 구현 내용을 대치한다. 이것은 기본 클래스(1121)로부터 정적 클래스(1122)를 파생시킴으로써, 이 정적 파생 클래스(1122)로부터의 포인터(1121A)에 대한 액세스(access)를 제공함으로써 이루어진다. 그 다음, 인입 호출이 StaticBase 클래스(1121)에 의해 수신될 때, 호출은 포인터를 통해 NonStaticImplBase 클래스(1123)로 전달되고, 만일 메소드가 파생된 클래스(1124)내에 구현되어 있으면, 바로 그 구현 내용이 메소드 호출이 요구한 데이터 처리를 수행하기 위해 호출된다.
따라서, 호출 코드(111)는 여전히 자신의 메소드 호출을 StaticBase 클래스(1121)로 전송할 수 있고, 따라서 코드(111)가 변경될 필요가 없다. 즉, 코드(111)는 StaticBase 클래스(1121)가 호출을 구현할 것으로 생각하지만, 실제로는 StaticBase 클래스(1121)가 정적 포인터를 통해 NonStaticImplBase 클래스(1123)로 호출을 전달하고, 이 클래스(1123)가 호출의 구현 내용을 제공한다.
그 다음에, 비정적 기본 클래스(1123)에 포함된 구현 내용에 제공된 성향을 수정하고자 할 경우, 기본 클래스(1123)의 서브클래스(1124)를 파생시키고 이 서브클래스(1124)에 새로운 성향의 구현 내용을 포함시킴으로써 하나 이상의 메소드에 대한 또 다른 성향이 제공될 수 있다. 따라서, 메소드 호출이 정적 기본 클래스(1121)에 들어오면, 그 호출은 정적 포인터를 통해 비정적 기본 클래스(1123)라 생각되는 것을 호출하도록 재전송되지만, 실은 서브클래스(1124)가 지금 호출되고 있는 메소드에 관련하여 기본 클래스(1123)를 오버라이드하였기 때문에 실제 호출을 수신하는 것은 서브클래스(1124)이다.
본 발명의 의사 코드(pseudo-code) 구현의 일례가 아래에 제공된다.
상기 코드는 본 발명의 주 요지를 강조하고 있으나, 물론 본 발명이 이 구현에 한정되는 것은 아니다. 예를 들면, 새로운 구현 내용 클래스(ImpDeriv)로의 치환이 StaticDeriv 구성자(constructor)에서 수행되는 것으로 예시되어 있으나, 이것은 StaticDeriv 클래스에서의 어떤 메소드 내에서라도 수행될 수 있으며, 하나의 다른 구현 내용 클래스로의 치환에만 제한되지는 않는다. Deriv 클래스들이 정의되지 않은 상황에서, 위의 "main()"에 예시된 호출 "StaticBase::doit()"로 인해 ImpBase내의 doit()이 호출된다. "Deriv" 클래스가 정의된 환경에서 동일하게 호출하면 ImpDeriv내의 doit() 메소드가 호출될 것이고, 따라서 "main()"내의 코드가 변경될 필요가 없다.
용례 :
본 발명자들은 본 발명을 사용하여 자바(Java) 환경에서 디버그 추적(debug tracing)을 구현하였다. 두 가지 추적 메커니즘이 요구되었는데, 그 중 하나는 추적되는 코드가 독립형(stand-alone) 환경(기본 클래스(1121, 1123)를 포함)에서 사용되는 경우이며, 다른 하나는 자체 추적 기능(facility)을 제공하는 서버 환경(파생 클래스(1122, 1124)를 포함)내에서 코드가 사용되는 경우이다. 그러므로, 코드를 변경할 필요 없이 코드가 정적 추적을 수행할 수 있어야 한다는 요구에 의해 독립형 추적 파일(정적 기본 클래스(1123)에서의) 혹은 서버 추적 파일(파생된 비정적 클래스(1124)에서의)중 어느 하나로 갈 수 있어야 하는 정적 추적 호출을 수행할 수 있어야 한다는 요구가 충족된다.
이상 설명한 바와 같이 본 발명에 따르면, 정적 인터페이스에 다형적 성향을 제공하므로써, 어떤 메소드에 대한 다양한 기능을 제공할 수 있는 효과가 있고, 따라서 정적 인터페이스를 호출하는 호출 코드의 재사용이 크게 증가된다. 또한 하나의 메소드 대신 클래스 전체가 오버라이드되기 때문에 전체 클래스의 수를 감소시킬 수 있고, 또한 특별히 구성된 서브클래스가 존재하는지의 여부를 판단하기 위해 테스트를 수행해야 할 필요가 없기 때문에 데이터 프로세서의 처리량을 감소시킬 수 있는 효과가 있다.

Claims (9)

  1. 정적 클래스 계층과 비정적 클래스 계층의 두 상속 계층을 갖는 객체 지향 프로그래밍 소프트웨어 아키텍처를 사용하여 데이터 처리를 수행하는 데이터 처리 장치에 있어서,
    ① 상기 정적 계층의 정적 클래스에 대한 메소드 호출을 수신하는 수단 ― 각 메소드 호출은 특정 메소드가 상기 데이터 처리 장치에 의해 처리되는 것을 요구함 ― 과,
    ② 정적 클래스 내의 정적 포인터를 사용하여 수신된 메소드 호출을 상기 비정적 계층의 비정적 클래스의 인스턴스로 재전송하는 수단 ― 상기 인스턴스는 상기 수신된 메소드 호출에서 요구된 메소드의 구현 내용을 제공함 ― 을
    포함하는 데이터 처리 장치.
  2. 제 1 항에 있어서,
    상기 메소드 호출 수신 수단은 상기 정적 계층의 정적 기본 클래스에 대한 상기 호출을 수신하며, 상기 정적 포인터를 사용하는 수단은 수신된 메소드 호출을 상기 비정적 계층의 비정적 기본 클래스의 인스턴스로 재전송하는 데이터 처리 장치.
  3. 제 1 항에 있어서,
    상기 정적 포인터 사용 수단은 비정적 기본 클래스에 포함된 상기 수신된 메소드 호출의 구현 내용이 비정적 파생 클래스에 포함된 상기 수신된 메소드 호출의 수정된 구현 내용에 의해 오버라이드되었으면, 수신된 메소드 호출을 상기 비정적 클래스 계층의 비정적 파생 클래스의 인스턴스로 재전송하는 데이터 처리 장치.
  4. 정적 클래스 계층과 비정적 클래스 계층의 두 상속 계층을 갖는 객체 지향 프로그래밍 소프트웨어 아키텍처를 사용하는 데이터 처리 방법에 있어서,
    ① 상기 정적 계층의 정적 클래스에 대한 메소드 호출을 수신하는 단계 ― 각 메소드 호출은 특정 메소드가 상기 데이터 처리 방법에 의해 처리되는 것을 요구함 ― 와,
    ② 정적 클래스내의 정적 포인터를 사용하여 수신된 메소드 호출을 상기 비정적 계층의 비정적 클래스의 인스턴스로 재전송하는 단계 ― 상기 인스턴스는 상기 수신된 메소드 호출에서 요구된 메소드의 구현 내용을 제공함 ― 를 포함하는
    데이터 처리 방법.
  5. 제 4 항에 있어서,
    상기 메소드 호출 수신 단계는 상기 정적 계층의 정적 기본 클래스에 대한 상기 호출을 수신하며, 상기 정적 포인터를 사용하는 단계는 수신된 메소드 호출을 상기 비정적 계층의 비정적 기본 클래스의 인스턴스로 재전송하는 데이터 처리 방법.
  6. 제 4 항에 있어서,
    상기 정적 포인터 사용 단계는 비정적 기본 클래스에 포함된 상기 수신된 메소드 호출의 구현 내용이 비정적 파생 클래스에 포함된 상기 수신된 메소드 호출의 수정된 구현 내용에 의해 오버라이드되었으면, 수신된 메소드 호출을 상기 비정적 클래스 계층의 비정적 파생 클래스의 인스턴스로 재전송하는 데이터 처리 방법.
  7. 컴퓨터에 의해 판독 가능한 저장 매체에 저장되어 데이터 처리 장치에서 실행될 때, 정적 클래스 계층과 비정적 클래스 계층의 두 상속 계층을 갖는 객체 지향 프로그래밍 소프트웨어 아키텍처를 사용하여 데이터 처리 방법을 수행하는 컴퓨터 프로그램 제품에 있어서,
    상기 방법은,
    ① 상기 정적 계층의 정적 클래스에 대한 메소드 호출을 수신하는 단계 ― 각 메소드 호출은 특정 메소드가 상기 데이터 처리 방법에 의해 처리되는 것을 요구함 ― 와,
    ② 정적 클래스내의 정적 포인터를 사용하여 수신된 메소드 호출을 상기 비정적 계층의 비정적 클래스의 인스턴스로 재전송하는 단계 ― 상기 인스턴스는 상기 수신된 메소드 호출에서 요구된 메소드의 구현을 제공함 ― 를 포함하는
    컴퓨터 프로그램 제품.
  8. 제 7 항에 있어서,
    상기 메소드 호출 수신 단계는 상기 정적 계층의 정적 기본 클래스에 대한 상기 호출을 수신하며, 상기 정적 포인터를 사용하는 단계는 수신된 메소드 호출을 상기 비정적 계층의 비정적 기본 클래스의 인스턴스로 재전송하는 컴퓨터 프로그램 제품.
  9. 제 7 항에 있어서,
    상기 정적 포인터 사용 단계는 비정적 기본 클래스에 포함된 상기 수신된 메소드 호출의 구현이 비정적 파생 클래스에 포함된 상기 수신된 메소드 호출의 수정된 구현에 의해 오버라이드되었으면, 수신된 메소드 호출을 상기 비정적 클래스 계층의 비정적 파생 클래스의 인스턴스로 재전송하는 컴퓨터 프로그램 제품.
KR1019990004943A 1998-03-27 1999-02-12 정적객체인터페이스로부터다형적성향을가능하게하는데이터처리장치및방법과컴퓨터프로그램제품 KR19990077425A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB9806468A GB2335763A (en) 1998-03-27 1998-03-27 Facilitating polymorphic behaviour from static object interfaces in data processing
GB9806468.6 1998-03-27

Publications (1)

Publication Number Publication Date
KR19990077425A true KR19990077425A (ko) 1999-10-25

Family

ID=10829295

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990004943A KR19990077425A (ko) 1998-03-27 1999-02-12 정적객체인터페이스로부터다형적성향을가능하게하는데이터처리장치및방법과컴퓨터프로그램제품

Country Status (4)

Country Link
EP (1) EP0945789A2 (ko)
JP (1) JPH11327907A (ko)
KR (1) KR19990077425A (ko)
GB (1) GB2335763A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010002510A (ko) * 1999-06-15 2001-01-15 김영환 전후향 탐색 알고리즘을 적용한 클래스 계층 및 클래스 구성 계층 관리 방법

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6993506B2 (en) 2000-12-05 2006-01-31 Jgr Acquisition, Inc. Method and device utilizing polymorphic data in e-commerce
KR20030025031A (ko) * 2001-09-19 2003-03-28 한국전자통신연구원 1급 메소드를 이용한 소프트웨어 커넥터 구현 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0463252A1 (en) * 1990-06-28 1992-01-02 International Business Machines Corporation Message handling in data processing apparatus
EP0495279A1 (en) * 1991-01-18 1992-07-22 International Business Machines Corporation Object oriented programming platform
US5421016A (en) * 1991-12-12 1995-05-30 International Business Machines Corporation System and method for dynamically invoking object methods from an application designed for static method invocation
EP0777177A1 (en) * 1995-11-03 1997-06-04 Intergraph Corporation A method for object-oriented programming using dynamic interfaces
JPH09179738A (ja) * 1995-12-26 1997-07-11 Hitachi Ltd オブジェクト指向言語処理方法及び処理装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0463252A1 (en) * 1990-06-28 1992-01-02 International Business Machines Corporation Message handling in data processing apparatus
EP0495279A1 (en) * 1991-01-18 1992-07-22 International Business Machines Corporation Object oriented programming platform
US5421016A (en) * 1991-12-12 1995-05-30 International Business Machines Corporation System and method for dynamically invoking object methods from an application designed for static method invocation
EP0777177A1 (en) * 1995-11-03 1997-06-04 Intergraph Corporation A method for object-oriented programming using dynamic interfaces
JPH09179738A (ja) * 1995-12-26 1997-07-11 Hitachi Ltd オブジェクト指向言語処理方法及び処理装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010002510A (ko) * 1999-06-15 2001-01-15 김영환 전후향 탐색 알고리즘을 적용한 클래스 계층 및 클래스 구성 계층 관리 방법

Also Published As

Publication number Publication date
GB2335763A (en) 1999-09-29
GB9806468D0 (en) 1998-05-27
EP0945789A2 (en) 1999-09-29
JPH11327907A (ja) 1999-11-30

Similar Documents

Publication Publication Date Title
US6810522B2 (en) Method and system for associating parameters of containers and contained objects
US7921430B2 (en) System and method for intercepting, instrumenting and characterizing usage of an application programming interface
US6976261B2 (en) Method and apparatus for fast, local CORBA object references
Kon et al. Monitoring, security, and dynamic configuration with the dynamicTAO reflective ORB
US6209041B1 (en) Method and computer program product for reducing inter-buffer data transfers between separate processing components
US5754855A (en) System and method for managing control flow of computer programs executing in a computer system
US6647432B1 (en) Distributed framework for intertask communication between workstation applications
US6567861B1 (en) Method and apparatus for remotely running objects using data streams and/or complex parameters
US6405264B1 (en) Marshaling and unmarshaling framework for supporting filters in a distributed object system
US20060248177A1 (en) Common trace files
CA2315751C (en) Call mechanism for static and dynamic linked functions within an object-oriented controller using heterogeneous development tool sets
EP1057100A2 (en) A method and apparatus for transporting behavior in an event-based distributed system
EP0575073A2 (en) Objects with run-time classes
US6189047B1 (en) Apparatus and method for monitoring event queue operations with pluggable event queues
JPH10512079A (ja) コンピュータ・システム又はそれのプログラムの停止を必要としないオブジェクト指向メソッド保守機構
US5761407A (en) Message based exception handler
EP0704795B1 (en) A data processing system providing an encapsulation system and a method of operating such a system
US6513157B1 (en) System and method for dynamically aggregating objects
US6289394B1 (en) Agent management system capable of readily monitoring and controlling agent
US7685605B1 (en) Distributed framework for intertask communication between workstation applications
KR19990077425A (ko) 정적객체인터페이스로부터다형적성향을가능하게하는데이터처리장치및방법과컴퓨터프로그램제품
US7318229B1 (en) Method, system, and program for dispatching a method call
US6510460B1 (en) Method and apparatus for enforcing locking invariants in multi-threaded systems
AU2383700A (en) Method and apparatus for dynamic command extensibility in an intelligent agent
WO2001001256A1 (en) Method and apparatus for static analysis of software code

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application