KR20040002784A - 특성을 객체와 연관시키기 위한 시스템 및 방법 - Google Patents

특성을 객체와 연관시키기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20040002784A
KR20040002784A KR1020030042565A KR20030042565A KR20040002784A KR 20040002784 A KR20040002784 A KR 20040002784A KR 1020030042565 A KR1020030042565 A KR 1020030042565A KR 20030042565 A KR20030042565 A KR 20030042565A KR 20040002784 A KR20040002784 A KR 20040002784A
Authority
KR
South Korea
Prior art keywords
property
class
added
readable medium
computer readable
Prior art date
Application number
KR1020030042565A
Other languages
English (en)
Other versions
KR100571466B1 (ko
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 KR20040002784A publication Critical patent/KR20040002784A/ko
Application granted granted Critical
Publication of KR100571466B1 publication Critical patent/KR100571466B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Storage Device Security (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

본 출원은 객체에 대한 새로운 기능이 객체가 파생된 클래스 내부에 구축되지 않는 특성으로 표현되도록 하는 구조를 설명한다. 더 구체적으로는 본 구조는 하나의 클래스의 특성을 다른 클래스와 연관시킨다. 제1 특성 집합에서의 특성을 갖는 객체를 포함하는 컴퓨터 판독 가능한 매체는 데이터 구조를 더 포함한다. 데이터 구조는 제2 특성 집합의 각각에 대한 정의를 포함하고 적어도 하나의 정적 메소드를 포함한다. 정적 메소드는 제2 특성 집합으로부터의 하나의 특성과 연관되고 제1 파라미터를 포함한다. 제1 파라미터는 하나의 특성을 유일하게 식별한다. 정적인 메소드는 객체에서의 하나의 특성에 대한 명확한 참조를 명시하지 않고 하나의 특성과 객체를 연관시키도록 동작한다. 상기 특성은 유일한 식별자를 수신하기 위하여 런-타임동안 등록된다.

Description

특성을 객체와 연관시키기 위한 시스템 및 방법{SYSTEM AND METHOD FOR ASSOCIATING PROPERTIES WITH OBJECTS}
본 발명은 일반적으로는 소프트웨어 어플리케이션에 관한 것이고, 더 구체적으로는 소프트웨어 어플리케이션 내에서 객체의 특성을 관리하기 위한 구조에 관한 것이다.
오늘날 대부분의 프로그래밍 모델들은 클래스 개념을 지원한다. 이 클래스는 일반적으로 클래스 서열에서 서로 다른 클래스들을 나타내는 가지를 갖는 서열 트리로 구조화된다. 두 개의 가지가 다른 레벨에 있는 경우, 하위 가지는 자식 클래스를 나타낸다. 자식 클래스는 상위 클래스(예를 들어 부모 클래스)와 관련된 클래스로부터 정보를 계승한다. 두 가지가 같은 레벨에 있을 경우, 이 클래스들은 형제 클래스라고 부른다. 다음의 논의를 위하여, 부모 클래스와 관련하여 자식 클래스를 부르는 경우, 상위 클래스 및 하위 클래스라는 용어를 사용하여 부모 클래스 및 자식 클래스를 각각 언급할 수 있다. 서열에서 최상위 가지는 서열 클래스 트리에서의 베이스 클래스를 나타낸다. 일반적으로 각 클래스에서의 정보는 특성, 메소드 및 이벤트를 포함한다. 특성은 클래스와 관련된 특징을 나타낸다. 예를 들어, 버튼 클래스는 너비, 배경 색, 폰트 타입, 가시 상태 여부, 누른 상태 여부 등을 포함한다. 이 클래스들 중 하나를 인스턴스 생성하는 경우 그 클래스의 객체가 생성된다. 객체의 각 특성은 관련된 값을 가지고 있으며, 이 값은 런-타임 동작 동안 조회하고 설정할 수 있다. 조회되거나 설정된 값은 구문이 강하게 타이핑(strongly typed)되어 있다면 특정한 데이터 타입에 따르는 것으로 기대할 수 있다. 강하게 타이핑된 구문을 갖는 것이 바람직한데, 그 이유는 런-타임 동작 전에 소프트웨어 어플리케이션 내에서 에러를 탐지할 수 있기 때문이다.
일단 클래스 서열이 자리를 잡으면, 클래스 서열 내의 객체에 새로운 기능을 추가하는 것은 문제점을 야기한다. 어떤 프로그래밍 모델에서는, 새로운 기능은 베이스 클래스로 강제 분류된다. 이러한 경우, 베이스 클래스가 매우 커지고(예를 들어, 100개의 메소드, 50개의 특성 및 20개의 이벤트), 객체 서열을 관리하기가 거의 불가능하게 된다. 이 프로그래밍 모델의 한 가지 바람직하지 않은 점은 개발자들이 원하는 특성을 생성된 클래스에 심어 구현하기 전에, 베이스 클래스 내의 특성, 메소드 및 이벤트의 숫자가 압도적으로 많아지고 이렇게 되면 이들을 완전하게 이해하기가 어렵다는 점이다. 이 프로그래밍 모델의 또 다른 바람직하지 않은 점은 특성에 대한 값이 로컬하게 저장된다는 사실 때문에 메모리 요구가 커진다는 점이다. 이 값들이 로컬하게 저장되므로, 이 프로그래밍 모델로 생성된 어플리케이션은 쉽게 스케일링하기 어렵다.
이 프로그래밍 모델은 또한 제3의 개발자의 입장에서는 다른 문제점들을 야기한다. 새로운 기능을 추가하기를 원하는 제3의 개발자는 서열의 바닥에서 자식 클래스를 추가해야 한다. 새로운 자식 클래스는 서열의 바닥에 있으므로, 서열 내의 다른 클래스들은 이 새로운 기능을 이용할 수 없다. 그러므로, 제3의 개발자는 여러 개의 자식 클래스에 새로운 기능을 추가해야 할 수도 있다. 이렇게 되면, 예상되는 바와 같이, 코드 중복을 유발하여 객체 서열의 관리성에 상충을 일으키게 된다. 상기 이유 때문에, 이 프로그래밍 모델은 매우 바람직한 것은 아니다.
본 발명이 등장하기까지, 당업자들도 상기 단점 없이 현존하는 클래스 서열 내의 클래스에 새로운 기능을 제공하는 프로그래밍 모델을 인지하지 못하였다.
본 발명은 새로운 기능이 클래스에 새로운 기능을 제공하되 클래스의 영구적인 부분이 되지 않도록 하는 구조를 제공한다. 또한, 본 발명은 새로운 기능이 클래스에 구축되지 않은 특성으로 표현되도록 한다. 일반적으로, 본 발명은 하나의 클래스의 특성을 다른 클래스와 연관시키기 위한 구조를 제공한다. 이 연관성은 쉽게 수정가능하고 그래서 다른 특성 집합들을 상기 클래스와 연관시킬 수도 있다.
본 발명의 일 실시예에서, 제1 특성 집합 내의 특성을 갖는 객체를 포함하는 컴퓨터 판독가능한 매체는 데이터 구조를 더 포함한다. 이 데이터 구조는 제2 특성 집합의 각각에 대한 정의를 포함하고 적어도 하나의 정적 메소드를 포함한다. 이 정적 메소드는 제2 특성 집합으로부터의 하나의 특성과 연관되고 제1 파라미터를 포함한다. 제1 파라미터는 상기 하나의 특성을 고유하게 식별한다. 이 정적 메소드는 상기 하나의 특성을 상기 객체와 연관시키도록 조작하되, 상기 객체에서의 하나의 특성에 대한 참조를 명백히 규정하지는 않는다.
본 발명의 하나의 특징에 따르면, 상기 정적 메소드는 강하게 타이핑된 구문을 지원한다.
본 발명의 다른 특징에 따르면, 상기 정적 메소드는 객체에 대한 값을 검색하는 것을 포함하되, 상기 객체 상에 상기 값이 로컬하게 저장되지 않도록 한다. 상기 값은 예를 들어 부모 객체 또는 특성 시트 같은 여러 단계로부터 검색될 수 있다.
본 발명의 하나의 장점은 특성을 하나 이상의 부분 집합으로 분할하여 특성의 각 부분 집합을 더 쉽게 관리할 수 있도록 한다는 것이다. 본 발명의 다른 장점은 객체 서열을 더 추가할 수 있어서 개발자가 베이스 클래스 및 모든 하위 클래스와 충돌하는 객체 서열에 기능을 추가할 수 있도록 한다는 것이다.
본 발명의 다른 장점은 객체에서 특성을 위한 기억장소를 관리하는 것이 보다 효율적이고 편리해진다는 것이다.
본 발명의 다른 장점은 상기 프로그래밍 모델이 프로그램에 따른 환경 또는 마크업 환경 내에서 동작한다는 것이다. 또한, 본 프로그래밍 모델은 C++ 및 C#과 같은 강하게 타이핑된 프로그래밍 언어에서 동작한다. 게다가, 상기 프로그래밍 모델은 특성 시트, 변경 통지(change notifications) 및 값 상속을 지원한다.
본 발명의 또 다른 장점은 추가된 클래스 이름이 효율적으로 특성 이름의 일부가 되어 이름간의 충돌이 덜 일어날 것이므로 독립 라이브러리가 공존할 수 있다는 것이다. 따라서, 만약 두 다른 개발자 각각이 "컬러"라고 명명된 특성을 갖는 추가된 특성을 생성한다면, 추가된 이들 특성은 충돌하지 않을 것이다.
도 1은 본 발명의 일 실시예에서 사용될 수 있는 컴퓨팅 디바이스의 예시도.
도 2는 도 1의 컴퓨팅 디바이스로 생성할 수 있는 예시적인 화면.
도 3은 본 발명에 따라 한 클래스로부터의 특성이 다른 클래스로 추가되는 프로그래밍 모델의 시각적인 표현도.
도 4는 도 3에서 도시된 프로그래밍 모델을 구현하기 위한 몇 개의 구문의 예시도.
도 5는 본 발명에 따라 값을 설정하기 위한 프로세스를 나타내는 논리적 흐름도.
도 6은 본 발명에 따라 값을 검색하기 위한 프로세스를 나타내는 논리적 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
100 : 컴퓨팅 디바이스
204 : 리스트 박스
301 : 노드 클래스
311 : 노드 객체
322 : 추가된 클래스
간단히 말해서, 본 발명은 새로운 기능이 클래스의 영구적 부분이 되게 하지 않으면서 클래스에 새로운 기능을 제공하는 프로그래밍 모델을 제공한다. 또한,본 발명은 새로운 기능을 클래스에 구축되어 있지 않은 특성으로 표현되도록 한다. 일반적으로, 본 발명은 한 클래스의 특성을 다른 클래스와 관련시키기 위한 구조를 제공한다. 후술하는 상세한 설명에서 명확해지겠지만, 본 발명의 프로그래밍 모델은 객체에 특성을 구축하지 않고 객체에 동적인 특성을 제공한다.
도 1을 참조하면, 본 발명을 구현하기 위한 하나의 예시적인 시스템은 컴퓨팅 디바이스[예를 들어 컴퓨팅 디바이스(100)]를 포함한다. 매우 기초적인 구성에서, 컴퓨팅 디바이스(100)는 일반적으로 적어도 하나의 프로세싱 유닛(102) 및 시스템 메모리(104)를 포함한다. 정확한 구성 및 컴퓨팅 디바이스의 종류에 따라서는, 시스템 메모리(104)는 휘발성일 수 있고(RAM), 휘발성이 아닐 수도 있고(ROM, 플래시 메모리 등) 또는 두 가지의 조합일 수도 있다. 시스템 메모리(104)는 일반적으로 운영체제(105), 하나 이상의 프로그램 모듈(106)을 포함하고, 프로그램 데이터(107)를 포함할 수도 있다. 프로그램 모듈(106)의 예는 워싱턴 레드몬드의 마이크로소프트(Microsoft Corporation of Redmond, WA)에서 만든 비쥬얼 스튜디오 인텔리센스(Visual Studio IntelliSense) 및 객체 라이브러리를 사용하는 다른 소프트웨어 프로그래밍 환경을 포함한다. 또한 프로그램 모듈(106)은 소프트웨어 프로그래밍 환경을 사용하여 생성된 소프트웨어 어플리케이션을 포함한다. 상기 소프트웨어 어플리케이션이 프로세싱 유닛(102)상에서 실행되는 경우, 특성 엔진은 본 발명의 프로그래밍 모델에 따라 소프트웨어 어플리케이션을 프로세싱한다. 특성 엔진은 운영체제(105)의 일부일 수도 있고 또는 다른 프로그램 모듈(106)이 될 수도 있다. 컴퓨팅 디바이스(100)의 이 기초적인 구성은 점선(108)내의 구성요소로 도 1에 나타나 있다.
컴퓨팅 디바이스(100)는 추가적인 특징 또는 기능을 가질 수 있다. 예를 들어, 컴퓨팅 디바이스(100)는 또한 추가적인 데이터 저장 장치(이동 가능한 및/또는 이동 불가능한)를 포함할 수 있는데, 예를 들어 자기 디스크, 광 디스크 또는 테잎 등이다. 이러한 추가적인 저장 장치는 도 1에 이동 가능한 저장 장치(109) 및 이동 불가한 저장 장치(110)로 나타난다. 컴퓨터 저장 매체는 컴퓨터 판독 가능한 명령어, 자료 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장 방법이나 기술로 구현된 휘발성 및 비휘발성, 이동 가능 및 이동 불가한 매체를 포함할 수 있다. 시스템 메모리(104), 이동 가능한 저장 장치(109) 및 이동 불가한 저장 장치(110)는 모두 컴퓨터 저장 매체의 예이다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래쉬 메모리 또는 기타의 메모리 기술, CD-ROM, DVD 또는 기타의 다른 광학 저장장치, 자기 카세트, 자기 테잎, 자기 디스크 저장장치 또는 기타의 자기 저장 장치 또는 원하는 정보를 저장하기 위하여 사용할 수 있고 컴퓨팅 디바이스(100)에 의하여 액세스될 수 있는 그 밖의 저장 매체를 포함하지만, 이에 한정되는 것은 아니다. 이러한 어떠한 저장 장치도 디바이스(100)의 일부로 사용할 수 있다. 또한 컴퓨팅 디바이스(100)는 키보드, 마우스, 펜, 음성 입력 장치, 터치 입력 장치 등과 같은 입력 디바이스(112)를 가질 수 있다. 디스플레이, 스피커, 프린터 등과 같은 출력 디바이스(114)도 포함할 수 있다. 이러한 디바이스들은 종래 기술에서 잘 알려져 있고 여기서 길게 언급할 필요가 없다.
컴퓨팅 디바이스(100)는 또한 통신 접속기(116; communication connection)를 포함하는데, 이것은 네트워크 상에서처럼 디바이스가 다른 컴퓨팅 디바이스(118)와 통신하도록 한다. 통신 접속기(116)는 통신 매체의 한 예이다. 통신 매체는 일반적으로 컴퓨터 판독 가능한 명령어, 자료 구조, 프로그램 모듈 또는 캐리어 웨이브 또는 다른 전송 메커니즘과 같은 변조된 데이터 신호에서의 다른 데이터에 의하여 구현될 수 있고 어떤 정보 전달 매체도 포함할 수 있다. "변조된 데이터 신호"라는 용어는 하나 이상의 특성 집합을 갖는 신호 또는 신호에서의 정보를 인코딩하는 것과 같은 방법으로 변환된 신호를 의미한다. 예를 들어(한정하는 것은 아니다), 통신 매체는 유선 네트워크 또는 접속과 같은 유선 매체 및 음파, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다.
도 2는 도 1에서의 프로그래밍 환경내의 어플리케이션에 의하여 생성된 예시적인 화면이다. 본 발명의 프로그래밍 모델은 다양한 환경에서 사용할 수 있고, 하나의 예로서, 도 2는 사용자 인터페이스 환경 내에서의 프로그래밍 모델의 사용을 설명하고 있다. 따라서, 본 예에서, 도 1의 어플리케이션 중 하나는 도 2에서 나타난 화면(200)을 생성한다. 화면(200)은 대화 박스(202)를 포함한다. 대화 박스(202)는 다수의 다른 제어 장치(예를 들어, 객체)를 포함할 수 있다. 본 예에서, 대화 박스(202)는 리스트 박스(204), 에디트 박스(206) 및 2개의 버튼 객체(예를 들어 OK 버튼(210) 및 CANCEL 버튼(212))를 갖는 컨테이너 객체(208)를 포함한다. 도 3과 연계하여 자세히 후술하는 것처럼, 종래의 프로그래밍 기술을 사용하여, 각 객체(예를 들어 202 - 212)는 베이스 객체(예를 들어, 요소 클래스)로부터 파생한 자식 객체이다. 또한, 본 발명의 일 실시예에 따르면, 각 자녀 객체는 노드 클래스로부터 파생될 수 있다. 후술하는 것처럼, 본 노드 클래스는 추가된 특성을 위한 "추가하는" 특징("attaching" feature)을 제공한다.
화면(200)의 외관은 종래의 프로그래밍 모델을 사용하여 생성된 화면과 유사해 보일 수도 있지만, 화면(200)을 생성하기 위한 구조는 상당히 다르다. 종래의 프로그래밍 모델에서, 디스플레이(200)를 구현하는 소프트웨어 코드는 각 객체 자체 내에서 또는 그 부모 객체들 중 하나에 통합된 객체의 외관 또는 객체의 행동(behavior) 모두를 가져야만 했다. 그러나 상세히 후술하는 것처럼, 본 발명에 따르면 분리된 클래스들은 두 클래스간의 명확한 참조 없이 객체(202-212)를 위한 동작(action) 및 외관을 제공한다.
이로써 개발자들은 전체 객체를 수정하지 않고도 동작 부분 또는 외관 부분을 수정할 수 있다. 따라서, 이 사용자 인터페이스 예제에서 각 객체는 두 부분으로 인자화된다. 한 부분은 객체와 관련된 동작(예를 들어, 행동)에 관한 것이고, 다른 부분은 객체의 외관(예를 들어, 렌더링)에 관한 것이다. 렌더링은 객체의 행동으로부터 분리되므로, 객체의 외관은 쉽게 수정되어 객체가 보이는 방식을 수정한다.
상기 사용자 인터페이스 예제는 객체에 대한 특성을 행동 그룹 및 외관 그룹으로 편리하게 인자화하는 반면에, 본 발명자는 다양한 환경에서 많은 객체의 특성이 편리하게 둘 이상의 관련 그룹으로 분할될 수 있다고 판단했다. 그러면, 본 발명에 따라, 이 관련 그룹들은 "함축적으로" 서로 연관되어 객체를 완전히 구현한다. 이 "함축적인" 연관은 종래의 프로그래밍 모델에 비하여 몇 가지 장점을 제공한다. 한 가지 장점은 다른 그룹들을 조작하지 않는 동안 제3 개발자가 편리하게 그들의 어플리케이션에 속하는 관련 그룹을 수정할 수 있다는 것이다. 이것은 객체의 기능을 변경하기 위하여 개발자가 알아야 할 정보의 양을 매우 간소화 한다. 또한, 객체 서열을 보다 쉽게 관리할 수 있다. 다른 장점은 각 객체는 반드시 현재 상태로 로컬 값을 유지할 필요가 없으므로 기억 장소가 감소된다는 것이다. 정확히 말하면, 도 6과 관련하여 상술하는 것처럼, 필요한 경우 다양한 소스들로부터 상태를 검색할 수 있다.
도 3은 본 발명에 따라 한 클래스로부터의 특성들의 관련 그룹들을 다른 클래스와 함축적으로 관련시키기 위한 구조를 제공하는 프로그래밍 모델(300)의 시각적인 표현이다. 다른 프로그래밍 모델과 유사하게, 본 발명은 베이스 클래스(302)를 지원한다. 베이스 클래스(302)는 베이스 클래스(302)와 연관된 제1 특성 집합(304)을 포함한다. 또한, 베이스 클래스(302)는 메소드(306)의 집합 및 이벤트(308)의 집합을 포함한다. 그러나, 본 발명에 따르면, 베이스 클래스는 노드 클래스(301)로부터 파생된다. 노드 클래스(301)는 SetValue() 메소드(307) 및 GetValue() 메소드(309)를 제공한다.
제2 특성 집합(324)은 추가된 클래스(322) 내에 포함된다. 추가된 클래스(322)도 제2 특성 집합(324)의 각각과 연관된 적어도 두 개의 정적 메소드[예를 들어, SetFont()(326) 및 GetFont()(330)]를 포함한다. 이들 정적 메소드는 정적 메소드와 연관된 특성을 등록한 객체에 액세스가능한 광역 메소드로 생각할 수 있다. 추가된 클래스(322)를 제공하는 개발자는 이 정적 메소드(326 및 330)의각각을 위한 코드를 작성하는 기능을 담당한다. 이 코드는 노드 클래스(301)에 의하여 제공되는 메소드들 중 하나에 대한 호출을 포함한다. 예를 들어, 특정한 식별자 PropertyID 및 주어진 폰트 값을 위한 SetFont()(326)를 호출하는 어플리케이션은 최종적으로 노드 클래스(301)의 SetValue()(307)에 대한 호출을 실행한다. SetFont()(326)가 SetValue()(307)에 대한 호출로 넘기는 파라미터는 SetFont()(326) 호출에서 제공된 특정한 식별자 PropertyID 및 주어진 폰트 값을 포함한다. 예시적인 SetFont() 함수는 다음과 같을 수 있다.
SetFont(PropertyID,white)
{ PropertyID->SetValue(PropertyID,white);
}.
당업자는 추가된 클래스는 어떠한 추가된 속성에 대하여도 강한 타이핑을 제공한다는 것을 이해할 것이다. 본 발명은 SetValue()(307)를 직접적으로 호출하는 어플리케이션을 지원하는 반면, 이것은 컴파일 시간동안 강한 타이핑을 제공하는 장점을 회피한다. 앞에서 언급한 대로, 강한 타이핑은 런 타임 동작 전에 에러가 탐지되도록 한다. 다른 실시예에서, 추가된 클래스(322)는 각 추가된 특성(324)을 위한 부가적인 정적 메소드[예를 들어, GetFontID()(328)]를 제공한다. 이 부가적인 정적 메소드는 요청된 추가적 특성이 등록되었는지 여부를 테스트하도록 동작한다. 따라서, 이 부가적인 정적 메소드(328)는 어플리케이션이 집합을 처리하고 추가된 특성상의 정적 메소드를 얻으려고 시도하기 전에, 추가된 특성을 적절히 등록하였는지를 보증하기 위하여 사용한다. 예를 들어, 만약 GetFontID()(328)가 추가된 특성인 색(Color)이 등록되지 않은 것을 탐지한다면, GetFontID()는 에러값을 주고 요청하는 객체 또는 그와 유사한 것을 위하여 자동적으로 추가된 특성인 색을 등록한다.
다음은 지연된 등록을 제공하기 위한 예시적인 실시예이다.
class FontProvider
{ public static Font GetFont(Node n)
{ return n.GetValue(GetFontID()); }
public static void SetFont(Node n,Font newFont)
{ n.SetValue(GetFontID(),newFont); }
public static DynamicProperty GetFontID()
{ //Delay register Font property if necessary
if(FontID==null)
{ FontID = RegisterProperty("Font",typeof(Font),"Arial",...);
}
}
private static DynamicProperty FontID = null;
}
다른 프로그래밍 모델과 유사하게, 본 발명은 베이스 클래스(302)의 자식 클래스(도시되지 않음)를 지원한다. 간략화를 위하여, 도 3은 베이스 클래스(302)의 어떤 자식 클래스 또는 어떤 다른 추가된 클래스도 시각적으로 도시하지 않고 따라서 다른 추가된 클래스와 연관된 자식 클래스를 도시하지 않는다. 그러나 당업자는 후술하는 설명을 읽은 후 다른 추가된 클래스를 참조하는 자식 클래스를 갖는 어플리케이션을 쉽게 디자인 할 수 있을 것이다. 일반적으로, 어떠한 클래스이든 클래스가 추가된 특성을 위하여 필요한 정적 메소드를 제공하는 한, 추가된 특성의 "제공자(provider)"가 될 수 있다.
추가된 클래스(322)는 제3 개발자들이 베이스 클래스(302)를 수정하지 않고 어플리케이션에 특성 및 기능을 동적으로 추가할 수 있도록 한다. 베이스 클래스(302) 내에서 특성을 수정하는 것과 유사하게, 추가된 특성[예를 들어, 제2 특성 집합(324)]은 전체 서열 객체 트리(390) 내의 객체에 영향을 준다. 어플리케이션이 실행될 동안 추가된 클래스(322)를 인스턴스 생성하지 않는다. 따라서, 베이스 클래스(302)로부터 인스턴스 생성된 각 객체에 대하여, 동일한 추가된 클래스(추가된 클래스 322)는 각 객체에 제2 특성 집합(324)를 제공할 수 있다.
어플리케이션의 런-타임 동안, 베이스 객체(312)가 인스턴스 생성된다. 또한, 하나 이상의 자식 객체[예를 들어, 자식 객체(340-350)]가 인스턴스 생성된다. 객체 트리(390)에서의 객체의 인스턴스 생성은 프로그램에 따른 제어(예를 들어, C#), 마크업 언어(markup language; 예를 들어, XML), 또는 다른 수단을 통할 수 있다. 객체 트리(390)가 프로그램에 따른 제어를 통하여 생성될 경우, 컴파일러는일반적으로 추가된 클래스(322)를 구현하는 명령어가 부적법한 이름 또는 데이터 타입과 같은 에러를 가지는지 여부를 식별한다. 상술한 바와 같이, 첨부된 클래스(322)는 강한 타이핑을 제공한다. 따라서, 에러가 런-타임 전에 포착될 수 있다. 또한, 소프트웨어 개발 툴은 어플리케이션을 개발하는 동안 에러를 탐지할 수 있다. 객체 트리(390)가 마크업 언어를 통하여 생성되는 경우, 파서(parser)는 마크업 문(markup statement)을 해석한다. 일반적으로 마크업 언어에서 태그 이름은 대응하는 클래스에 대한 이름이다.
각 자식 객체(340-350)는 자식 객체[예를 들어 자식 객체(340)] 내에 하나 이상의 자식 특성[예를 들어 자식 특성(341)]을 포함할 수 있다. 자식 특성을 위한 값은 연관된 자식 객체에 저장될 수 있다. 그러나, 본 발명에 따르면 자식 객체가 값을 저장하기 위한 로컬 기억장소를 반드시 갖는 것은 아니다. 또한 이 자식 객체(340-350) 각각은 자식 객체와 연관된 하나 이상의 추가된 특성[예를 들어, 점선 박스 안에 표현된 추가된 특성(352)]을 포함한다. 도 6과 관련하여 상술하듯이, 추가된 특성(352)은 자식 객체(350)와 연관된 로컬 저장장치로부터 그 값을 획득할 수 있고, 상속을 통하여[예를 들어 베이스 객체(312)], 특성 시트(property sheet; 도시되지 않음)를 통하여, 프로그램에 따른 메소드[예를 들어 메소드(309)와 관련된 정적 메소드(330)]를 통하여 그리고 본 발명에 따른 다른 방법을 통하여 획득할 수 있다. 추가된 특성을 위한 이 값들은 자식 객체와 연관된 반면, 이 값들을 위한 기억장소는 일반적으로 자식 객체의 일부가 아니다.
다시, 도 3은 사용자 인터페이스 환경에서의 프로그래밍 모델을 도시한다.따라서, 베이스 객체(312) 및 자식 객체(340-350) 내의 특성이 객체의 행동과 관련된다는 것을 주목할 것이다. 베이스 객체(312)는 대화 객체(dialog object)를 표시하고, 자식 객체(340)는 버튼 객체를 표시하고, 자식 객체(350)는 에디트 박스를 표시하여, 자식 객체(342)는 각각 리스트 박스 및 트리를 나타내는 두 자식 객체(346 및 348)를 갖는 선택자 객체를 나타낸다. 이 자식 객체(340-350)의 각각은 버튼 객체에 대한 누름 특성(pressed property) 및 트리 객체에 대한 확장 특성(expanded property)과 같은 하나 이상의 자식 특성[예를 들어 자식 특성(341)]을 포함한다.
대조적으로, 추가된 클래스(322) 내의 특성은 객체에 대한 외관과 관련된다. 예를 들어, 제2 특성 집합은 폰트 타입, 컬러 및 이와 유사한 것들에 대한 특성 및 디폴트 값을 포함할 수 있다. 이 프로그래밍 모델은 자식 객체 상에서 런-타임시 특성을 설정하도록 된 구조로 되어있다. 그 정도로, 자식 객체의 각각에 추가된 특성[예를 들어, 추가된 특성(352)]은 추가된 클래스로부터 값을 수신하도록 구성된다.
도 4는 도 3에서 도시된 프로그래밍 모델이 구현될 수 있는 다양한 동작 환경에 대한 몇 가지 예시적인 구문을 도시한다. 각 예시적인 구문 내의 "제공자(Provider)"라는 용어를 사용하여, 구문에서 기술된 정적 메소드가 "제공자"라는 이름을 갖는 추가된 클래스와 연관되었다는 것을 의미한다. 따라서, 이 각각의 구문은 추가된 클래스가 명명되도록 하기 때문에, 두 개의 다른 추가된 클래스 내에서 동일하게 명명된 특성들은 서로 충돌하지 않을 것이다. 이것은 개발자들이 잠재적인 명명 충돌을 걱정할 필요없이 추가된 특성을 개발할 수 있도록 한다.
이제 예시적인 구문으로 돌아가서, 만약 프로그래밍 환경이 비쥬얼 베이직이나 C#과 같은 프로그램에 따른 언어라면 유사 코드는 프로그램에 따른 구문(401)에 도시된 것처럼 나타날 수 있다. 프로그램에 따른 구문(401)은 클래스가 추가된 특성을 포함하고 있다고 식별해 주는 클래스 식별자(402)를 포함한다. 프로그램에 따른 구문(401)은 메소드 식별자(404), 특성에 대한 이름을 특정하기 위한 제1 식별자(406)을 및 제1 식별자(406)에서 특정된 특성과 연관된 값을 특정하기 위한 제2 식별자(408)를 갖는 파라미터 리스트를 포함한다. 파라미터 리스트는 괄호 안에 있고 마침표는 클래스 식별자(402)와 메소드 식별자(404)를 분리한다. 도 3에 도시된 추가된 클래스(322)에 대하여 언급하면, 추가된 특성 "FONT"에 대하여, 프로그램에 따른 구문(401)은 다음과 같다.
Attached Class.SetFont(PropertyID, value).
흥미롭게도, 이 구문은 이전의 프로그래밍 모델에서의 구문과 유사한 것처럼 보인다. 그러나, 이 구문은 동일하지는 않고 프로그램에 따른 구문(401)은 종래 구문과 다르다. 예를 들어, 프로그램에 따른 구문(401)에서, 메소드 식별자(404)는 제공자 클래스[예를 들어, 도 3에서의 추가된 클래스(322)]상의 정적 메소드를 식별한다. 종래의 프로그래밍 모델에서, 메소드 식별자는 제공자 인스턴스 상의 인스턴스메소드를 식별하였을 것이다. 본 발명은 제공자 클래스[예를 들어, 도 3의 추가된 클래스(322)]를 사용하기 때문에, 제공자 인스턴스의 수명이 추적될 필요가 없으므로, 프로그래밍 모델은 마크업 및 특성 시트에서의 확장 장치 특성을 지원할 수 있다. 프로그램에 따른 구문(401)의 다른 특징은 구문이 강하게 타이핑되어 있다는 것이다. 상술한 것처럼, 강하게 타이핑된 구문은 양호한 장비 지원을 가능케 하는데, 그것은 잘못된 철자의 이름, 틀린 데이터 타입 및 이와 유사한 것들을 런-타임이 아니라 컴파일 시에 탐지할 수 있기 때문이다.
또한, 비쥬얼 베이직, C# 또는 이와 유사한 것들과 같은 프로그래밍 환경에 있어서, 이 프로그래밍 모델은 느슨하게 타이핑된 구문[예를 들어, 프로그램에 따른 문법(411)]을 허용한다. 프로그램에 따른 구문(411)은 타겟 객체(target object)를 식별하는 객체 식별자(412), 추가된 특성 클래스 내의 정적 메소드를 식별하는 메소드 식별자(414), 추가된 특성 식별자를 포함하는 파라미터 리스트 및 값(419)을 포함한다. 추가된 특성 식별자는 클래스 식별자(416) 및 연관된 추가 클래스 내에서 추가된 특성을 식별하는 특성 식별자(418)를 포함한다.
다른 실시예에서, 프로그래밍 모델은 마크업 구문(421)과 같은 마크업 언어 구문을 사용하여 구현될 수 있다. 마크업 구문(421)은 태그(422), 제공자 지정자(424) 및 특성 식별자(426)를 갖는 추가된 특성 및 값(428)을 포함한다. 일 실시예에서, 태그(422)는 타겟 객체의 이름[예를 들어, 도 3의 버튼 객체(340)]이다. 일반적으로, 마크업 구문(421)은 개폐 기호인 "<" 및 ">"으로 각각 시작되고 끝나게 된다. 한편, 추가된 특성이 바로 클래스 상에 있는 것은 아니므로, 파서는 추가된 특성이 존재하는 곳을 찾기 위해 프로세싱을 수행한다.
또 다른 실시예에서, 프로그래밍 모델은 도 4에서 도시된 스타일 시트구문(431)과 같은 스타일 시트를 갖는 확장성 생성 언어(extensible markup language; XML)를 사용하여 구현할 수 있다. 이 실시예에서, 스타일 시트 구문(431)은 "태그" 속성(432)을 포함한다. 태그 속성(432)은 프로세싱을 요청하고 있는 클래스와 대응한다. XML에서 추가된 속성을 위한 하나의 예시는 다음과 같다.
<Button xmlns:ap="expandoNameSpace" Pressed="false"
ap:Expandos.String="string"/>
본 발명에 따라 추가된 특성을 구현하는 어플리케이션을 실행할 경우, 어플리케이션은 객체 트리에서 객체를 인스턴스 생성한다. 그러면, 어플리케이션은 특성 엔진과 관련하여 런-타임 동작을 처리하는데, 이것은 객체를 위한 값의 설정 및 검색을 포함한다. 도 5 및 6은 특성 엔진과 관련하여, 어플리케이션에 의하여 수행되는 프로세싱을 도시한다.
그러나, 도 5 및 6에 나타난 SetValue() 프로세스 또는 GetValue() 프로세스가 수행되기 전에, 두 프로세스 중 어느 것이든 하나에서 특정된 추가된 특성이 등록되어야만 한다. 상술한 바와 같이, 일 실시예는 특성이 등록되었는지 여부를 결정하는 검사를 수행할 수 있다. 이 검사[예를 들어 GetFontID()(328)]는 추가된 속성[예를 들어, SetFont()(326) 및 GetFont()(330)]에 대응하는 정적 메소드 중 어느 것에서도 수행될 수 있다. 이 검사는 정적 메소드가 호출될 때마다 수행되어야 하므로, 이 실시예는 성능에 있어서 불이익을 초래한다. 당업자는 어플리케이션이 등록을 수행하도록 요구하는 것과 같이, 특성의 등록을 최적화하는 다른 실시예를 본 발명에서 벗어나지 않고 구현할 수 있다는 것을 이해할 것이다.
추가된 특성을 등록하면 추가된 특성을 위한 유일한 PropertyID를 돌려 받는다. 특성 등록을 위한 하나의 예시적인 호출은 다음과 같은 형태일 수 있다.
BarDP = RegisterProperty("Bar",0 ,typeof(string),typeof(Button),0x3);
이 실시예에서, BarDP 변수는 추가된 특성을 위한 유일한 식별자를 포함할 것이다. 그러면 이 유일한 식별자는 SetValue() 및 GetValue() 함수 호출에서 사용된다. 일 실시예에서, RegisterProperty는 직접 또는 간접적으로 소유자의 정적 구성자(owner's static constructor)로부터 호출된다. 소유자는 추가된 특성을 추가하는 클래스를 참조한다. 일단 추가된 특성이 등록되면, 추가된 특성을 위한 타겟 타입과 부합하는 어떠한 인스턴스도 추가된 특성과 연관된 Get 및 Set 정적 메소드를 호출함으로써 "함축적으로" 특성을 추가할 수 있다.
특성을 등록하기 위한 예시적인 호출에서 도시한 것처럼, "Bar"는 추가된 특성을 위한 이름을 지명한다. 특성 엔진은 일반적으로 이 이름을 사용하지 않는다. 그러나 파서는 특성이 소유자에 이미 등록된 것과 같은 이름을 갖는지 여부를 결정하기 위하여 이 이름을 사용한다. 타겟 타입은 Button이다. 추가된 속성에 대하여, 소유자와 타겟은 같지 않을 것이다. 디폴트 값은 "0"이다. 도 6과 관련하여 상세히 설명된 것처럼, 특성 엔진은 추가된 특성을 위한 값을 어디에서 검색할지를 결정한다. 따라서, RegisterProperty 호출은 특성을 위한 값이 검색되는 단계(예를 들어 상속, 특성 시트)를 식별하는 행동 비트(behavior bits)를 포함한다. 상기 예시적인 호출에서, 행동 비트 "0x3"은 로컬 값, 특성 시트 및 상속이 추가된특성을 위한 값을 결정하기 위하여 검색된다는 것을 지시한다. 따라서, 일실시예에서 이 행동 비트들의 해석은 GetValue() 정적 메소드 내에서 코딩될 수 있다. 다르게는, 공식적인 방법으로 특성간의 관계를 모델링하는 식에 의하여 이 단계들을 결정할 수도 있다.
일 실시예에서, 추가된 클래스를 위한 코드는 표 1에 도시된 형식을 취한다.
class BarProvider: Object {
public static DynamicProperty BarDP = RegisterProperty(
"Bar",0 ,typeof(string),typeof(Button));
public static string GetBar(Button button) {
return (string) button.GetValue(BarDP); }
public static void SetBar(Button button, string value) {
button.SetValue(BarDP,value); }
}.
표 1.
상기 코드에서, "Bar"라고 명명된 추가된 특성은 추가된 클래스 "BarProvider" 내에서 정의 된다. 추가된 특성 이름 "Bar"는 스트링으로 데이터 타입이 정의되고, 단지 Button 객체에만 추가될 수 있다. 정적 메소드는 강하게타이핑되고 특성에의 접근 및 특성 설정을 가능하게 한다.
일단 추가된 특성이 등록되면, SetValue() 및 GetValue() 함수가 수행될 수 있다. 도 5는 본 발명에 따라 값을 설정하기 위한 프로세스를 도시하는 논리적 흐름도이다. 블록(501)에서 프로세싱이 시작되고, 설정 함수가 초기화되어 어떠한 특성과 연관된 값을 바꾼다. 일반적으로, SetValue 프로세스(500)는 관심 있는 객체(property of interest; 앞으로는 "관심있는 특성(interested property)"이라고 부르기로 한다)에 대한 값을 로컬하게 저장할 것이다. 프로세싱은 결정 블록(502)으로 계속된다.
결정 블록(502)에서, 관심 있는 객체에 대하여 로컬 기억장소가 존재하는지를 결정한다. 본 발명은 객체의 각 인스턴스에 대한 각 특성을 위하여 기억 장소를 자동적으로 보유하는 것이 아니므로, 만약 이전에 관심 있는 특성에 대한 값이 저장되어 있지 않은 경우, 기억 장소가 할당된다(블록 504). 일단 기억장소가 할당되면, 프로세싱은 블록(506)으로 계속되고, 만약 결정 블록(502)에서 로컬 기억 장소를 탐지한 경우는 바로 블록(506)으로 계속된다.
블록(506)에서, 값은 관심 있는 특성과 연관된 기억장소에 복사된다. 일단 관심 있는 특성이 상태를 변경하면, 상태 변경에 대한 통지가 송신된다(블록 508). 일 실시예에서, 이 통지는 더 이상 유효하지 않을 수 있는 종속 특성을 지적하는 더티 비트(dirty bit)의 설정을 수반할 수 있다. 다르게는, 통지는 상술한 특허 출원에서 설명한 것과 같이 소스가 바뀐 각각의 종속물로의 보고를 수반할 수 있다. 프로세싱은 결정 블록(510)에서 계속된다.
결정 블록(510)에서, 값이 관심 있는 특성에 대한 캐시에 저장되었는지 여부가 결정된다. 만약 이 관심 있는 특성에 대한 캐시에 값이 없다면, 프로세스는 종료한다. 그러나, 만약 캐시에 값이 존재한다면, 이 값은 더 이상 유효하지 않으므로 캐시는 소거된다. 그러면 프로세스는 종료된다.
도 6은 본 발명에 따라 값을 검색하기 위한 프로세스를 도시하는 논리적 흐름도이다. 프로세싱은 블록(601)에서 시작하고, 여기에서 조회(query)는 초기화된다. 프로세싱은 블록(602)에서 계속된다.
블록(602)에서, 어플리케이션은 관심 있는 특성 중 하나는 업데이팅을 필요로 한다는 것을 지시한다. 일반적으로, 이것은 객체가 현재 상태를 위한 특성을 조회하고 있는 경우 발생할 수 있다. 프로세스(600)는 다양한 단계를 검사함으로써 특성에 대한 값을 결정한다. 특성이 등록되는 경우 이 단계들이 정의된다. 결정 블록(606-610)은 예시적인 단계들을 나타내지만, 본 발명에서 벗어나지 않는 범위에서 다른 단계들을 추가할 수도 있다. 프로세싱은 결정 블록(604)에서 계속된다.
결정 블록(604)에서, 프로세스는 캐시가 관심 있는 특성이 이전에 캐싱되었는지 여부를 결정하는지 검사한다. 일반적으로, 관심 있는 특성은 검색을 최적화하기 위하여 캐싱된다. 만약 특성이 이전에 캐싱된 경우, 프로세스는 블록(612)에서 계속되고, 여기에서 캐시로부터 값이 검색된다. 다르게는, 프로세스는 결정 블록(606)에서 계속된다. 결정 블록(606)에서 관심 있는 특성에 대한 값이 로컬한지 아닌지를 결정한다. 도 5에 나타낸 바와 같이, 특성에 대하여 값을 로컬하게 설정하도록 SetValue()가 수행되었다면 이 값은 로컬할 것이다. 만약 이 값이 로컬하다면, 프로세스는 블록(612)에서 계속되고, 여기서 값은 로컬 기억 장소로부터 검색된다. 만약 값이 로컬하지 않다면, 프로세스는 결정 블록(608)에서 계속된다.
결정 블록(608)에서, 관심 있는 특성에 대한 값이 특성 시트에서 사용가능한지를 결정한다. 베이스 클래스가 연관된 특성 시트를 가지는 경우, 일단 인스턴스가 생성되면 특성 시트는 베이스 클래스의 각 자식이 어떻게 렌더링되는지 지정한다. 만약 관심 있는 특성이 특성 시트에서 사용 가능하다면, 프로세싱은 블록(612)에서 계속되고, 여기에서 특성시트로부터 값이 검색된다. 그러나, 만약값이 특성 시트에 존재하지 않으면, 프로세싱은 결정 블록(610)에서 계속된다.
결정 블록(610)에서 관심있는 특성에 대한 값이 상속(즉, 상속된 값)을 통해 얻어지는지 여부에 대해 결정한다. 상속된 값이 자식 객체의 부모 객체로부터 유도된다. 만약 부모 객체 중 하나가 관심있는 특성을 갖는다면, 프로세싱은 블록(612)으로 진행하고, 거기서 부모 객체로부터 값이 검색된다. 그러나 만약 값이 상속되지 않는다면, 추가된 특성과 연관된 추가된 클래스로부터 디폴트 값이 검색된다(블록 614). 프로세싱은 블록(616)에서 계속된다.
블록(616)에서, 어플리케이션은 값이 수신된 단계에 기초하여 가중치(weight metric)를 계산한다. 가중치는 저장되어, 장차의 검색을 최적화하기 위하여 관심 있는 특성을 캐싱하는 경험적인 결정을 하는데 사용된다. 그러면 프로세싱은 종료된다.
또한, 상술한 SetValue 및 GetValue 프로세스에서, 본 발명의 프로그래밍 모델은 그룹 조회 및 그룹 통지와 같은 향상된 기능을 제공한다. 따라서, 상술한 것처럼, 본 발명은 추가된 클래스의 사용을 통하여 특성간의 복잡한 관계를 지원하는 종속 기초 특성 시스템(dependency-based property system)을 제공하는 프로그래밍 모델을 제공한다. 특성 관리 기술은 과도한 로컬 인스턴스 당에 기초한 기억 장소를 요구하지 않으므로 어플리케이션은 이 프로그래밍 스케일을 매우 양호하게 사용하여 제작될 수 있다. 대신에 이 프로그래밍 모델은 베이스 클래스 레벨에서의 상속 및 특성 시트의 사용 등의 특성 값의 재사용을 촉진한다. 상술한 것처럼, 본 발명은 특성관리 구조를 제공하고 이에 의하여 객체서열에서의 객체는 추가를 통해 특성 값을 저장한다.
상술한 설명, 실시예 및 데이터는 본 발명의 제작과 용도에 대한 완전한 설명을 제공한다. 본 발명의 범위 및 본질에서 벗어나지 않는 범위 내에서 많은 실시예가 생성될 수 있으므로, 본 발명은 이하에 첨부된 청구항에 의해 제한될 뿐이다.
본 발명은 새로운 기능이 클래스에 새로운 기능을 제공하되 클래스의 영구적인 부분이 되지 않도록 하는 구조를 제공한다. 또한, 본 발명은 새로운 기능이 클래스에 구축되지 않은 특성으로 표현되도록 한다. 일반적으로, 본 발명은 하나의 클래스의 특성을 다른 클래스와 연관시키기 위한 구조를 제공한다. 이 연관성은 쉽게 수정가능하고 그래서 다른 특성 집합들을 상기 클래스와 연관시킬 수도 있다.

Claims (33)

  1. 제1 특성 집합의 특성을 갖는 객체를 포함하는 컴퓨터 판독 가능한 매체에 있어서,
    제2 특성 집합의 각각에 대한 정의를 포함하고 상기 제2 특성 집합으로부터의 하나의 특성과 연관된 적어도 하나의 정적 메소드를 포함하는 데이터 구조를 더 포함하며,
    상기 적어도 하나의 정적 메소드는 상기 하나의 특성을 고유하게 식별하는 제1 파라미터를 가지며,
    상기 정적 메소드는 상기 객체에서의 상기 하나의 특성에 대한 명확한 참조를 지시하지 않고 상기 하나의 특성을 상기 객체와 연관시키도록 동작하는 컴퓨터 판독 가능한 매체.
  2. 제1항에 있어서, 상기 정적 메소드는 강하게 타이핑된 구문(strongly typed syntax)을 지원하는 컴퓨터 판독 가능한 매체.
  3. 제1항에 있어서, 상기 정적 메소드가 상기 하나의 특성을 상기 객체와 연관시키도록 동작하는 것은 상기 객체 상에 로컬하게 저장된 값을 갖지 않고 상기 객체에 대한 값을 검색하는 것을 포함하는 컴퓨터 판독 가능한 매체.
  4. 제3항에 있어서, 상기 값을 검색하는 것은 복수의 단계 중 어느 것이 상기 하나의 특성과 연관된 상기 값을 보유하는가를 결정하는 것을 포함하는 컴퓨터 판독 가능한 매체.
  5. 제4항에 있어서, 하나의 단계는 상기 객체의 부모 객체(parent object)를 포함하는 컴퓨터 판독 가능한 매체.
  6. 제4항에 있어서, 하나의 단계는 특성 시트(property sheet)를 포함하는 컴퓨터 판독 가능한 매체.
  7. 제1항에 있어서, 상기 정적 메소드는 상기 하나의 특성에 대한 주어진 값에 대응하는 제2 파라미터를 더 포함하고, 상기 정적 메소드가 상기 하나의 특성을 상기 객체와 연관시키도록 동작하는 것은 상기 객체에 대한 로컬 기억 장소에 주어진 값을 설정하는 것을 포함하는 컴퓨터 판독 가능한 매체.
  8. 제1항에 있어서, 상기 제1 특성 집합은 상기 객체의 행동에 대응하고, 상기 제2 특성 집합은 상기 객체의 외관에 대응하는 컴퓨터 판독 가능한 매체.
  9. 컴퓨터 실행 가능한 구성요소를 갖는 컴퓨터 판독 가능한 매체에 있어서,
    복수의 특성을 포함하는 베이스 클래스; 및
    상기 베이스 클래스로부터 파생된 객체의 인스턴스와 연관될 수 있는 추가된 특성과, 상기 복수의 추가된 특성 중 하나와 상기 객체의 인스턴스를 연관시키기 위한 정적 메소드를 포함하는 추가된 클래스를 포함하는 컴퓨터 판독 가능한 매체.
  10. 제9항에 있어서, 상기 베이스 클래스로부터 파생된 상기 객체는 노드 클래스로부터 적어도 하나의 메소드를 상속하며, 상기 하나의 메소드는 상기 하나의 추가된 특성을 상기 객체의 인스턴스와 연관시킬 경우 상기 정적 메소드에 의하여 호출되는 컴퓨터 판독 가능한 매체.
  11. 제10항에 있어서, 상기 정적 메소드 및 상기 하나의 메소드 각각은 상기 객체의 인스턴스와 연관되는 상기 하나의 추가된 특성에 대한 유일한 식별자를 넘기는 제1 파라미터를 포함하는 컴퓨터 판독 가능한 매체.
  12. 제11항에 있어서, 상기 유일한 식별자는 런-타임에서 상기 하나의 추가된 특성을 등록한 후 사용 가능한 컴퓨터 판독 가능한 매체.
  13. 제10항에 있어서, 상기 하나의 메소드는 느슨하게 타이핑된 구문(loosely typed syntax)을 지원하는 컴퓨터 판독 가능한 매체.
  14. 제9항에 있어서, 상기 정적 메소드는 강하게 타이핑된 구문을 지원하는 컴퓨터 판독 가능한 매체.
  15. 제9항에 있어서, 상기 하나의 추가된 특성을 연관시키는 것은 상기 객체의 부모 객체로부터의 상기 객체에 대한 값을 검색하는 것을 포함하는 컴퓨터 판독 가능한 매체.
  16. 제9항에 있어서, 상기 하나의 추가된 특성을 연관시키는 것은 특성 시트로부터의 상기 객체에 대한 값을 검색하는 것을 포함하는 컴퓨터 판독 가능한 매체.
  17. 객체를 사용하는 컴퓨터 시스템에 있어서,
    제1 특성 집합을 포함하는 제1 클래스로부터 파생된 제1 객체;
    상기 제1 객체에 제2 특성 집합을 제공하며, 상기 제1 객체와 연관된 동작에 대응하여 상기 제1 객체로 제2 특성 집합 중 하나를 추가하도록 동작하는 정적 메소드를 포함하는 제2 클래스를 포함하는 컴퓨터 시스템.
  18. 제17항에 있어서, 상기 정적 메소드는 상기 동작이 상기 제2 특성 집합으로부터의 어떠한 일 특성을 요청하는지를 유일하게 식별하기 위한 제1 파라미터를 포함하는 컴퓨터 시스템.
  19. 제18항에 있어서, 상기 일 특성은 상기 제1 파라미터가 유일하게 상기 일 특성을 식별하기 전에 등록되는 컴퓨터 시스템.
  20. 특성에 대한 상태를 설정하기 위하여 컴퓨터로 구현된 방법에 있어서,
    제1 특성 집합을 갖는 제1 객체를 선언하는 단계와,
    제1 객체와 연관되며, 상기 제1 객체에 제2 특성 집합을 제공하는 하나 이상의 동적 특성을 등록하는 단계를 포함하며, 상기 제2 특성 집합을 위한 저장 공간은 상기 제1 객체 내에 있지 않은 특성 상태 설정 방법.
  21. 제20항에 있어서, 상기 하나 이상의 동적 특성을 등록하는 단계는 하나 이상의 동적 특성의 각각에 유일한 식별자를 할당하는 단계를 포함하는 특성 상태 설정 방법.
  22. 제21항에 있어서, 상기 유일한 식별자를 참조하는 상기 제1 파라미터를 갖는 정적 메소드를 호출하는 단계를 더 포함하는 특성 상태 설정 방법.
  23. 제22항에 있어서, 상기 정적 메소드는 강하게 타이핑된 특성 상태 설정 방법.
  24. 제20항에 있어서, 상기 제1 객체는 하나 이상의 연관된 자식 객체(child object)를 가지며, 상기 각 자식 객체는 제2 특성 집합과 연관되는 특성 상태 설정방법.
  25. 적어도 하나의 컴퓨터 실행 가능한 명령어를 갖는 컴퓨터 판독 가능한 매체에 있어서,
    추가된 특성을 추가된 특성 클래스에서의 정적 메소드를 통하여 다른 클래스로부터 파생된 객체의 인스턴스와 연관시키는 명령 수단을 포함하는 컴퓨터 판독 가능한 매체.
  26. 제25항에 있어서, 상기 명령 수단은 프로그램 언어용의 강하게 타이핑된 구문을 지원하는 컴퓨터 판독 가능한 매체.
  27. 제25항에 있어서, 상기 명령 수단은 프로그램 언어용의 느슨하게 타이핑된 구문을 지원하는 컴퓨터 판독 가능한 매체.
  28. 제25항에 있어서, 상기 명령 수단은 마크업 문서에서의 문장을 포함하는 컴퓨터 판독 가능한 매체.
  29. 제25항에 있어서, 상기 명령 수단은 특성 시트에서의 문장을 포함하는 컴퓨터 판독 가능한 매체.
  30. 적어도 하나의 컴퓨터 부호화된 명령어(computer-encoded insruction)를 갖는 컴퓨터 판독 가능한 매체에 있어서, 상기 명령어는
    추가된 특성 클래스를 식별하는 클래스 식별자;
    타겟 객체와 연관된 추가된 특성에 영향을 미치기 위하여 상기 추가된 특성 클래스에서의 메소드를 식별하는 메소드 식별자;
    상기 추가된 특성을 식별하는 특성 식별자를 포함하는 파라미터 리스트를 포함하는 컴퓨터 판독 가능한 매체.
  31. 적어도 하나의 컴퓨터 부호화된 명령어를 갖는 컴퓨터 판독 가능한 매체에 있어서, 상기 명령어는
    타겟 객체를 식별하는 객체 식별자;
    상기 타겟 객체와 연관된 추가된 특성에 영향을 미치기 위하여 추가된 특성 클래스에서의 메소드를 식별하는 메소드 식별자;
    상기 추가된 특성 클래스를 식별하는 클래스 식별자를 포함하는 추가된 특성 식별자 및 상기 추가된 특성 클래스 내의 상기 추가된 특성에 대한 이름을 식별하는 특성 식별자를 포함하는 파라미터 리스트를 포함하는 컴퓨터 판독 가능한 매체.
  32. 적어도 하나의 컴퓨터 부호화된 명령어를 갖는 컴퓨터 판독 가능한 매체에 있어서, 상기 명령어는
    타겟 객체를 표시하는 태그;
    추가된 특성 클래스를 식별하는 제공자 지정자 및 상기 추가된 특성 클래스내의 추가된 특성에 대한 이름을 식별하는 특성 식별자를 갖는 추가된 특성 식별자를 포함하는 컴퓨터 판독 가능한 매체.
  33. 적어도 하나의 컴퓨터 부호화된 명령어를 갖는 컴퓨터 판독 가능한 매체에 있어서, 상기 명령어는
    타겟 객체를 정의하기 위한 XML 스키마, 추가된 특성 클래스 및 상기 추가된 특성 클래스 내의 추가된 특성을 포함하고, 추가된 특성은 상기 타겟 객체에서의 상기 추가된 특성에 대한 명백한 참조없이 상기 타겟 객체와 연관되는 컴퓨터 판독 가능한 매체.
KR1020030042565A 2002-06-28 2003-06-27 특성을 객체와 연관시키기 위한 시스템 및 방법 KR100571466B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/187,012 US7055132B2 (en) 2002-06-28 2002-06-28 System and method for associating properties with objects
US10/187,012 2002-06-28

Publications (2)

Publication Number Publication Date
KR20040002784A true KR20040002784A (ko) 2004-01-07
KR100571466B1 KR100571466B1 (ko) 2006-04-17

Family

ID=27733967

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030042565A KR100571466B1 (ko) 2002-06-28 2003-06-27 특성을 객체와 연관시키기 위한 시스템 및 방법

Country Status (20)

Country Link
US (1) US7055132B2 (ko)
EP (1) EP1378828A3 (ko)
JP (1) JP4365142B2 (ko)
KR (1) KR100571466B1 (ko)
CN (1) CN1470984B (ko)
AU (1) AU2003204351B2 (ko)
BR (1) BR0302032A (ko)
CA (1) CA2427288C (ko)
CO (1) CO5470295A1 (ko)
HK (1) HK1060925A1 (ko)
IL (1) IL155571A (ko)
MX (1) MX342196B (ko)
MY (1) MY133528A (ko)
NO (1) NO331544B1 (ko)
NZ (1) NZ525483A (ko)
PL (1) PL360131A1 (ko)
RU (1) RU2321882C2 (ko)
SG (1) SG107142A1 (ko)
TW (1) TWI287203B (ko)
ZA (1) ZA200303345B (ko)

Families Citing this family (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030236764A1 (en) * 2002-06-19 2003-12-25 Lev Shur Data architecture to support shared data resources among applications
US6986123B2 (en) * 2002-06-28 2006-01-10 Microsoft Corporation Extensible on-demand property system
JP2004234158A (ja) * 2003-01-29 2004-08-19 Sony Corp 情報処理装置、およびコンテンツ管理方法、コンテンツ情報管理方法、並びにコンピュータ・プログラム
US20040167894A1 (en) * 2003-02-21 2004-08-26 Sap Ag Method for using a business model data interface
US7505987B2 (en) * 2003-05-13 2009-03-17 Microsoft Corporation Method and system for providing interface defaults
US7685581B2 (en) * 2003-06-27 2010-03-23 Microsoft Corporation Type system for representing and checking consistency of heterogeneous program components during the process of compilation
US7120898B2 (en) * 2003-06-26 2006-10-10 Microsoft Corporation Intermediate representation for multiple exception handling models
US7086041B2 (en) * 2003-06-27 2006-08-01 Microsoft Corporation Extensible type system for representing and checking consistency of program components during the process of compilation
US7305666B2 (en) * 2003-07-23 2007-12-04 Microsoft Corporation Description language for an extensible compiler and tools infrastructure
US7559050B2 (en) * 2003-06-30 2009-07-07 Microsoft Corporation Generating software development tools via target architecture specification
US7707566B2 (en) * 2003-06-26 2010-04-27 Microsoft Corporation Software development infrastructure
US7788652B2 (en) * 2003-06-27 2010-08-31 Microsoft Corporation Representing type information in a compiler and programming tools framework
US7676798B2 (en) * 2003-10-24 2010-03-09 Microsoft Corporation Mechanism for obtaining and applying constraints to constructs within an interactive environment
US7543286B2 (en) * 2003-11-18 2009-06-02 Microsoft Corporation Method and system for mapping tags to classes using namespaces
EP1915726A4 (en) 2004-06-18 2009-10-28 Sap Ag COHERENT SET OF INTERFACES DERIVED FROM A COMMERCIAL OBJECT MODEL
US7802228B2 (en) * 2004-08-19 2010-09-21 Microsoft Corporation Systems and methods for varying software build properties using primary and supplemental build files
US8631347B2 (en) * 2004-11-15 2014-01-14 Microsoft Corporation Electronic document style matrix
US7844956B2 (en) * 2004-11-24 2010-11-30 Rojer Alan S Object-oriented processing of markup
US20060130038A1 (en) * 2004-12-15 2006-06-15 Claussen Christopher S Apparatus, system, and method for facilitating dynamic modification of existing software objects defined in a strongly-typed programming language
CA2490645A1 (en) * 2004-12-16 2006-06-16 Ibm Canada Limited - Ibm Canada Limitee Data-centric distributed computing
JP4393404B2 (ja) * 2005-03-04 2010-01-06 株式会社東芝 データベース管理装置およびデータベース管理方法
US8332355B2 (en) * 2005-03-28 2012-12-11 Symantec Corporation Method and apparatus for generating readable, unique identifiers
US20070061349A1 (en) * 2005-09-15 2007-03-15 Microsoft Corporation Hierarchically describing shapes
US8001526B2 (en) * 2005-09-15 2011-08-16 Microsoft Corporation Hierarchical property storage
US20070061351A1 (en) * 2005-09-13 2007-03-15 Microsoft Corporation Shape object text
WO2008005102A2 (en) 2006-05-13 2008-01-10 Sap Ag Consistent set of interfaces derived from a business object model
US20080077849A1 (en) * 2006-09-27 2008-03-27 Adams Gregory D Mechanism for associating annotations with model items
US8321853B2 (en) * 2007-05-11 2012-11-27 Microsoft Corporation Type and property definition support for software
CA2607537A1 (en) * 2007-10-22 2009-04-22 Ibm Canada Limited - Ibm Canada Limitee Software engineering system and method for self-adaptive dynamic software components
US8417593B2 (en) 2008-02-28 2013-04-09 Sap Ag System and computer-readable medium for managing consistent interfaces for business objects across heterogeneous systems
US20090326988A1 (en) 2008-06-26 2009-12-31 Robert Barth Managing consistent interfaces for business objects across heterogeneous systems
US8245144B2 (en) * 2008-06-27 2012-08-14 Microsoft Corporation Object model for a user interface
US8195692B2 (en) 2008-12-11 2012-06-05 International Business Machines Corporation System and method for managing semantic and syntactic metadata
US20100153297A1 (en) 2008-12-12 2010-06-17 Sap Ag Managing Consistent Interfaces for Credit Portfolio Business Objects Across Heterogeneous Systems
US8576218B2 (en) * 2008-12-18 2013-11-05 Microsoft Corporation Bi-directional update of a grid and associated visualizations
US8473905B1 (en) * 2009-09-30 2013-06-25 Emc Corporation Managing user interface characteristics in displaying data storage systems information
US8396751B2 (en) 2009-09-30 2013-03-12 Sap Ag Managing consistent interfaces for merchandising business objects across heterogeneous systems
US9135585B2 (en) * 2010-06-15 2015-09-15 Sap Se Managing consistent interfaces for property library, property list template, quantity conversion virtual object, and supplier property specification business objects across heterogeneous systems
US8732083B2 (en) 2010-06-15 2014-05-20 Sap Ag Managing consistent interfaces for number range, number range profile, payment card payment authorisation, and product template template business objects across heterogeneous systems
JP5279767B2 (ja) * 2010-06-29 2013-09-04 ヤフー株式会社 統括プログラム
US9342274B2 (en) 2011-05-19 2016-05-17 Microsoft Technology Licensing, Llc Dynamic code generation and memory management for component object model data constructs
US8725654B2 (en) 2011-07-28 2014-05-13 Sap Ag Managing consistent interfaces for employee data replication business objects across heterogeneous systems
US8601490B2 (en) 2011-07-28 2013-12-03 Sap Ag Managing consistent interfaces for business rule business object across heterogeneous systems
US8775280B2 (en) 2011-07-28 2014-07-08 Sap Ag Managing consistent interfaces for financial business objects across heterogeneous systems
US8984050B2 (en) 2012-02-16 2015-03-17 Sap Se Consistent interface for sales territory message type set 2
US8762453B2 (en) 2012-02-16 2014-06-24 Sap Ag Consistent interface for feed collaboration group and feed event subscription
US9237425B2 (en) 2012-02-16 2016-01-12 Sap Se Consistent interface for feed event, feed event document and feed event type
US8762454B2 (en) 2012-02-16 2014-06-24 Sap Ag Consistent interface for flag and tag
US8756274B2 (en) 2012-02-16 2014-06-17 Sap Ag Consistent interface for sales territory message type set 1
US9232368B2 (en) 2012-02-16 2016-01-05 Sap Se Consistent interface for user feed administrator, user feed event link and user feed settings
US8756135B2 (en) 2012-06-28 2014-06-17 Sap Ag Consistent interface for product valuation data and product valuation level
US8949855B2 (en) 2012-06-28 2015-02-03 Sap Se Consistent interface for address snapshot and approval process definition
US9367826B2 (en) 2012-06-28 2016-06-14 Sap Se Consistent interface for entitlement product
US9246869B2 (en) 2012-06-28 2016-01-26 Sap Se Consistent interface for opportunity
US8615451B1 (en) 2012-06-28 2013-12-24 Sap Ag Consistent interface for goods and activity confirmation
US9400998B2 (en) 2012-06-28 2016-07-26 Sap Se Consistent interface for message-based communication arrangement, organisational centre replication request, and payment schedule
WO2014000200A1 (en) 2012-06-28 2014-01-03 Sap Ag Consistent interface for document output request
US9557974B2 (en) * 2012-07-10 2017-01-31 Oracle International Corporation System and method for supporting compatibility checking for lambda expression
US9043236B2 (en) 2012-08-22 2015-05-26 Sap Se Consistent interface for financial instrument impairment attribute values analytical result
US9076112B2 (en) 2012-08-22 2015-07-07 Sap Se Consistent interface for financial instrument impairment expected cash flow analytical result
US9547833B2 (en) 2012-08-22 2017-01-17 Sap Se Consistent interface for financial instrument impairment calculation
US9191343B2 (en) 2013-03-15 2015-11-17 Sap Se Consistent interface for appointment activity business object
US9191357B2 (en) 2013-03-15 2015-11-17 Sap Se Consistent interface for email activity business object
US9430452B2 (en) 2013-06-06 2016-08-30 Microsoft Technology Licensing, Llc Memory model for a layout engine and scripting engine

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5187786A (en) 1991-04-05 1993-02-16 Sun Microsystems, Inc. Method for apparatus for implementing a class hierarchy of objects in a hierarchical file system
US6378003B1 (en) * 1993-04-05 2002-04-23 International Business Machines Corporation Method and system for deriving metaclasses in an object oriented system
US5732271A (en) * 1995-01-23 1998-03-24 International Business Machines Corporation Data processing system and method for processing an object oriented development environment employing property inheritance using prototypical objects
US5635693A (en) * 1995-02-02 1997-06-03 International Business Machines Corporation System and method for tracking vehicles in vehicle lots
US5778227A (en) 1995-08-01 1998-07-07 Intergraph Corporation System for adding attributes to an object at run time in an object oriented computer environment
US6230159B1 (en) 1997-04-30 2001-05-08 Microsoft Corporation Method for creating object inheritance
US6191790B1 (en) * 1998-04-01 2001-02-20 Microsoft Corporation Inheritable property shading system for three-dimensional rendering of user interface controls
US6083276A (en) * 1998-06-11 2000-07-04 Corel, Inc. Creating and configuring component-based applications using a text-based descriptive attribute grammar
US6336211B1 (en) 1999-05-20 2002-01-01 Xilinx, Inc. Method and apparatus for implementing type-safe heterogeneous property lists
US20010029604A1 (en) 2001-04-27 2001-10-11 Jacob Dreyband Descriptive data construct mapping method and apparatus
US20040088448A1 (en) * 2001-10-16 2004-05-06 Userspace Corporation Embedded system and method for controlling, monitoring of instruments or devices and processing their data via control and data protocols that can be combined or interchanged

Also Published As

Publication number Publication date
AU2003204351B2 (en) 2009-11-12
JP4365142B2 (ja) 2009-11-18
HK1060925A1 (en) 2004-08-27
CA2427288C (en) 2011-08-16
MXPA03005356A (es) 2004-10-29
CN1470984B (zh) 2012-12-12
BR0302032A (pt) 2004-08-24
TWI287203B (en) 2007-09-21
KR100571466B1 (ko) 2006-04-17
RU2003119525A (ru) 2005-01-10
ZA200303345B (en) 2004-04-22
EP1378828A3 (en) 2006-12-13
CO5470295A1 (es) 2004-12-30
NZ525483A (en) 2004-10-29
EP1378828A2 (en) 2004-01-07
NO331544B1 (no) 2012-01-23
US7055132B2 (en) 2006-05-30
US20040002991A1 (en) 2004-01-01
SG107142A1 (en) 2004-11-29
CA2427288A1 (en) 2003-12-28
MY133528A (en) 2007-11-30
JP2004038958A (ja) 2004-02-05
AU2003204351A1 (en) 2004-01-22
CN1470984A (zh) 2004-01-28
RU2321882C2 (ru) 2008-04-10
NO20032993D0 (no) 2003-06-27
MX342196B (es) 2016-09-20
IL155571A0 (en) 2003-11-23
NO20032993L (no) 2003-12-29
TW200408979A (en) 2004-06-01
IL155571A (en) 2008-11-03
PL360131A1 (en) 2003-12-29

Similar Documents

Publication Publication Date Title
KR100571466B1 (ko) 특성을 객체와 연관시키기 위한 시스템 및 방법
US5893107A (en) Method and system for uniformly accessing multiple directory services
JP5354602B2 (ja) プロデューサグラフ指向のプログラミング及び実行
US7661091B2 (en) Extensible on-demand property system
US5842220A (en) Methods and apparatus for exposing members of an object class through class signature interfaces
US7581204B2 (en) Dynamic contexts
US7496926B2 (en) Method and apparatus to encapsulate a queue in a namespace
US20120011134A1 (en) Systems and methods for database query translation
JP2000187594A (ja) インタ―フェ―スのランタイム付加
US7107594B1 (en) Method and system for providing a version-independent interface to a computer resource
US20040003382A1 (en) Unification-based points-to-analysis using multilevel typing
US8001526B2 (en) Hierarchical property storage
US20030233585A1 (en) System and method for reducing errors during software development
US8356085B2 (en) Automated transformation of specifications for devices into executable modules
US6886172B2 (en) Method for mapping procedural C++ code to java object-oriented classes
Bakay et al. The UDM framework
Donini et al. Qualified inheritance in spatio-temporal databases
Fisher et al. GORM and Grails

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120322

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20130329

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee