CN1470984B - 使特性与对象相关联的系统和方法 - Google Patents

使特性与对象相关联的系统和方法 Download PDF

Info

Publication number
CN1470984B
CN1470984B CN031457258A CN03145725A CN1470984B CN 1470984 B CN1470984 B CN 1470984B CN 031457258 A CN031457258 A CN 031457258A CN 03145725 A CN03145725 A CN 03145725A CN 1470984 B CN1470984 B CN 1470984B
Authority
CN
China
Prior art keywords
characteristic
bells
whistles
value
static
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
CN031457258A
Other languages
English (en)
Other versions
CN1470984A (zh
Inventor
J·L·波格丹
M·J·菲诺齐奥
N·M·克雷默
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN1470984A publication Critical patent/CN1470984A/zh
Application granted granted Critical
Publication of CN1470984B publication Critical patent/CN1470984B/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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

Abstract

所描述的是一种机制,用于把对象的新功能表示为特性,没有把所述特性构造到派生对象的类别中。尤其,所述机制使一种类别中的特性与另一个类别相关联。一种计算机可读出媒体,它包括对象,所述对象具有在第一特性组中的特性,进一步包括数据结构。数据结构包括对于第二特性组中的每一个的一些定义,并包括至少一种静态方法。静态方法与第二特性组中的一个特性相关联,并包括第一参数。第一参数唯一地定义一个特性。可操作静态方法使一个特性与对象相关联而无需指定对于对象中的一个特性的明确参考。在运行时间期间注册特性以便接收唯一的识别符。

Description

使特性与对象相关联的系统和方法
(1)技术领域
本发明一般涉及软件应用程序,尤其,涉及管理在软件应用程序中的对象特性的机制。
(2)背景技术
当今大多数编程模型都支持类别的概念。一般在具有分支的分层树中构成这些类别,所述分支表示在类别层次中的不同类别。当两个分支处于不同级别时,较低的分支表示子类。子类继承从与上分支(例如,父类)相关联的类别来的信息。当两个分支处于相同级别时,把类别称为姐妹类。为了下述讨论的目的,可以分别使用术语下级和上级来指出子类和父类。在层次中最上面的分支表示在分层类别树中的基本类。一般,在每个类别中的信息包括特性、方法和事件。特性描述与类别相关联的特征。例如,按钮类可以具有诸如宽度、背景颜色、字体类型、可见性和按下之类的特性。当建立这些类别中的一个实例时,就创建该类别的对象。在对象中的每个特性都有相关联的值,在运行时间操作期间,可以查询和设置该值。如果语法有较强的代表性,则可以期望这个查询和设置的值符合特定的数据类型。希望语法具有较强的代表性,因为可以在运行时间操作之前检测软件应用程序中的差错。
一旦类别层次就位,把新功能添加到类别层次的对象中就会出现问题。在一种编程模型中,把新功能强加到基本类中。当这样做时,基本类变成极大(例如,一百种方法、五十个特性以及二十件事件),这导致对象层次几乎不可管理。这种编程模型的一个不希望有的结局是在开发者把所要求的特性实施在他们创建的对象中之前,充分了解在基本类中的特性、方法和事件的数目对于开发者来说变成比什么都重要。这种编程模型的再另一个不希望有的结局是由于这些特性值事实上是局部存储的,存储器的需求变成极大。因为局部地存储这些值,用这个编程模型创建的应用程序就不能较好地换算。
这些编程模型还导致对于第三方开发者的其它问题。希望添加新功能的第三方开发者必须在层次的底部添加一个子类,层次中的其它类别不可得到新功能。因此,第三方开发者可能需要把新功能添加到数个子类。可以想象,这导致代码复制,它影响了对象层次的可保持性。为了上述原因,极不希望有这种编程模型。
直到有了本发明,熟悉本技术领域的人员才懂得一种编程模型,该编程模型允许把新功能提供给现有类别层次中的类别而没有上述缺点。
(3)发明内容
本发明提供一种机制,该机制允许把新功能提供给类别而无需使新功能变成类别的永久部分。此外,本发明允许把新功能表示为不是构造到类别中的一个特性。一般,本发明提供一种机制,使一个类别中的特性与另一个类别相关联。这种关联是易于修改的,以致可以使其它特性组与所述类别相关联。
在一个实施例中,计算机可读出媒体包括具有第一特性组中的特性的一个对象,所述计算机可读出媒体进一步包括一种数据结构。数据结构包括第二特性组中的每一个的定义,并包括至少一个静态方法。静态方法与第二特性组当中的一个特性相关联,并包括第一参数。第一参数唯一地识别一个特性。可操作静态方法使一个特性与对象相关联而无需指定对象中的一个特性的明确的参考。
在本发明的一个方面,静态方法支持一种打印成黑体的语法。
在本发明的另一个方面,静态方法包括检索对象的一个值而无需把所述值局部地存储在对象上。可以从诸如父对象或特性表(property sheet)之类的几个级别检索所述值。
本发明的一个优点是把特性分割成一个或多个子集允许特性的每个子集变得更容易保存。本发明的另外的优点是更能扩展对象的层次,并允许开发者把功能添加到影响基本类和所有下级的对象层次。
本发明的另外的优点是管理对象中特性的存储变得更有效和方便。
本发明再另外的优点是编程模型在有计划的或标记的环境中操作。此外,编程模型在打印成黑体的编程语言(诸如C++和C#)中操作。此外,编程模型支持特性表、变更通知以及值继承。
本发明的另外的优点是可以同时存在独立的程序库,因为由于所附类别的名称有效地变成特性名称的一部分而名称冲突的可能性较小。因此,如果两个不同的开发者每人都创建名称为“颜色”的一个附加特性,则两个附加特性不会冲突。
(4)附图说明
图1示出可以在本发明的一个示例实施例中使用的示例计算装置;
图2是可以与图1的计算装置一起创建的示例显示器;
图3是根据本发明的编程模型的图形表示,所述编程模型允许特性从一种类别附加到另一种类别;
图4示出用于执行图3中示出的编程模型的几种示例语法;
图5是根据本发明的逻辑流程图,示出设置一个值的一个过程;
图6是根据本发明的逻辑流程图,示出检索一个值的一个过程。
(5)具体实施方式
简单地说,本发明提供一种编程模型,所述编程模型允许把新功能提供给一个类别而无需使新功能变成类别的一部分。此外,本发明允许把新功能表示为不构造到类别中的一个特性。一般,本发明提供一种机制,用于使一种类别中的特性与另一种类别相关联。在阅读下面详细说明之后会明白,本发明的编程模型把动态特性提供给对象而无需把特性构造到对象中。
参考图1,实施本发明的一个示例系统包括诸如计算装置100之类的计算装置。在一种极基本的配置中,计算装置100一般包括至少一个处理单元102以及系统存储器104。根据计算装置的确切的配置以及类型,系统存储器104可以是易失性的(诸如RAM)、非易失性的(诸如ROM、快闪存储器等)、或它们两者的某些组合。系统存储器104一般包括操作系统105、一个或多个程序模块106,并可以包括程序数据107。程序模块106的例子包括来自Redmond的微软公司的Visual Studio IntelliSense、WA以及利用对象程序库的其它软件编程环境。此外,程序模块106包括使用软件-编程环境创建的软件应用程序。当在处理单元102上执行这些软件应用程序时,特性引擎根据本发明的编程模型处理软件应用程序。特性引擎可能是操作系统105的一部分,或可能是另一个程序模块106。通过在图1中虚线108中的这些元件示出计算装置100的这种基本配置。
计算装置100可以具有另外的特征或功能。例如,计算装置100也可能包括另外的数据存储装置(可拆卸的和不可拆卸的),例如,诸如磁盘、光盘或磁带。在图1中由可拆卸的存储器109和不可拆卸的存储器110来示出这种另外的存储器。计算机存储媒体可以包括以任何用于存储信息(诸如计算机可读出指令、数据结构、程序模块、或其它数据)的方法或技术实施的易失性和非易失性、可拆卸和不可拆卸媒体。系统存储器104、可拆卸的存储器109和不可拆卸的存储器110是所有计算机存储媒体的例子。计算机存储媒体包括,但是不限于,RAM、ROM、EEPROM、快闪存储器或其它存储器技术、CD-ROM、数字通用盘(DVD)或其它光存储器、磁盒、磁带、磁盘存储器或其它磁存储装置、或可以用来存储所需要的信息和可以通过计算装置100访问的任何其它媒体。任何如此的计算机存储媒体可以是计算装置100的一部分。计算装置100还具有诸如键盘、鼠标、笔、话音输入装置、触摸输入装置等输入装置112。还可以包括诸如显示器、扬声器、打印机之类的输出装置114。这些装置是本技术领域中众知的,这里不需要用大篇幅来描述。
计算装置100还可以包括允许所述装置,诸如通过网络,与其它计算装置118进行通信的通信连接116。通信连接116是通信媒体的一个例子。通信媒体一般可以通过计算机可读出指令、数据结构、程序模块、或在调制数据信号中的其它数据(诸如载波波形与其它传递机制)来实施,并包括任何信息传递媒体。术语“调制数据信号”是指一种信号,所述信号具有它的一个或多个特征组或按把信息编码在信号中这样的方式而改变。作为例子,而不是作为限制,通信媒体包括诸如有线网络与直接有线连接之类的有线媒体,以及诸如声音、射频、红外线以及其它无线媒体之类的无线媒体。
图2是可以通过图1中编程环境中的应用程序创建的一种示例显示。当可以在各种环境中使用本发明的编程模型时,通过不作为限制的例子,图2示出在用户-界面环境中的编程模型的应用。因此,在这个例子中,图1中的应用程序中之一创建图2中示出的显示200。显示200包括对话框202。对话框202可以包括许多其它控制(即,对象)。在这个例子中,对话框202包括列表框204、编辑框206以及具有两个按钮对象(例如,同意(0K)按钮210和取消(CANCEL)按钮212)的容器对象208。如下面将连同图3进行的更详细的讨论,使用传统的编程技术,这些对象(例如,202-212)中的每一个都是从基本对象(例如,元类)派生的子对象。此外,根据本发明的一个实施例,还可以从节点类派生每个子对象。如下所述,这个节点类提供附加特性的“附加”特征。
虽然显示200的外观显现出与使用现有编程模型创建的显示很相似,但是创建显示200的机制是十分不同的。在现有的编程模型中,实施显示200的软件代码具有对象的性能和结合在每个对象本身中或父对象之一中的对象外观两种特性。然而,如下详细描述,根据本发明,分立的类别提供对象202-212的动作和外观而无需依靠两种类别之间的明确的参考。
这允许开发者修改动作部分或外观部分而无需修改整个对象。因此,在这个用户-界面例子中,每个对象分解成两部分。一部分涉及与对象相关联的动作(即,性能),而另一部分涉及对象的外观(即,绘制)。因为绘制是独立于对象的特性的,所以可以容易地修改对象的外观来改变对象显现的方式。
当所述用户-界面例子方便地把对象的特性分解成性能组和外观组时,发明者已经确定可以把各种环境中许多对象的特性方便地分割成两个或多个相关的组。然后,根据本发明,这些相关组可以“隐含地”相互关联,以充分地实现所述对象。与现有编程模型比较,这种“隐含地”相关联提供几个优点。优点之一是第三方开发者可以方便地修改与他们的应用程序有关的相关组,同时不碰其它组。这大大地简化了开发者为了改变对象的功能性而需要知道的信息量。此外,对象层次变得更便于管理。另外的优点是减少了存储器,因为每个对象不需要保存当前状态的局部值。而是,将在下面连同图6一起详述,当需要时可以从各种源检索状态。
图3是编程模型300的图形表示,所述编程模型根据本发明提供从一种类别到另一种类别“隐含地”与特性的相关组相关联的机制。相似于其它编程模型,本发明支持基本类302。基本类302包括与基本类302相关联的第一特性集304。此外,基本类302包括方法集306和事件集308。然而,根据本发明,从节点类301派生基本类。节点类301提供SetValue()方法307(设置值()方法)以及GetValue()方法309(得到值()方法)。
第二特性集324包括在附加类322中。附加类322还包括与第二特性集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的应用程序时,这超过了在编译期间提供强类型性的优点。如前所述,强类型性允许在运行时间操作之前检测差错。在另一个实施例中,对于附加特性324中的每一个,附加类322提供另外一种静态方法(例如,GetFontID()328(得到字体识别符))。可操作这种另外的静态方法来测试所请求的附加特性是否已经注册。因此,可以使用这个附加静态方法328来保证在试图执行集和得到附加特性上的静态方法之前应用程序已经正确地注册附加特性。例如,如果GetFontID()328检测到颜色附加特性尚未注册,则GetFontID()可能给出一个差错,可能自动地注册请求对象的颜色附加特性,等等。
下面是提供延迟注册的一个示例实施例:
class FontProvider  (类别字体提供器)
{public static Font GetFont(Node n)(公共静态字体得到字体(节
点n))
    {return n.GetValue(GetFontID());}(返回n。得到值(得到
字体识别符))
    public static void SetFont(Node n,Font newfont)(公共静态 void
设置字体(节点n,字体 新字体))
    {n.SetValue(GetFontID(),newFont);}(n。设置值(得到字体识别符
(),新字体))
    public static DynamicProperty GetFontID()(公共静态 动态特性 得
到字体识别符())
    {//Delay register Fontproperty if necessary(如果需要延迟注册
字体特性)
    if(FontID==null)(如果(字体识别符==零))
    {FontID=RegisterProperty(“Font”,typeof(Font),”Arial”,);
(字体识别符=注册特性(“字体”,(字体)的类型,“Arial”,...)
    }
}
    private static DynamicProperty FontID=null;(专用静态 动态特性 字
体识别符=零)
}
与其它编程模型相似,本发明支持基本类302的子类(未示出)。为了简单起见,图3没有用图形示出任何基本类302的子类或任何其它附加类,因此,没有示出与另外附加类相关联的子类。然而,熟悉本技术领域的人员在阅读下面的说明书之后将能够参考其它附加类容易地设计具有子类的应用程序。一般,任何类别可以是附加特性的“提供者”,只要类别提供附加特性必需的静态方法。
附加类322允许第三方开发者有能力把特性和功能动态地添加到他们的应用程序中而无需修改基本类302。与在基本类302中修改特性相似,所添加的特性(例如,第二特性集324)影响整个分层对象树390中的对象。在应用程序的执行期间,不对附加类322创建实例。因此,对于从基本类302创建实例的每个对象,相同的附加类(附加类322)可以把第二特性集324提供给这些对象中的每一个。
在应用程序的运行时间期间,基本对象312变成所创建的实例。此外,一个或多个子对象(例如,子对象340-350)变成所创建的实例。在对象树390中的对象的创建实例可以通过编程控制(例如,C#),通过标记语言(例如,XML)或通过其它手段。当通过编程控制创建对象树390时,编译器一般识别执行附加类322的指令是否有任何差错,诸如不正规的名称或数据类型。如上所述,附加类322提供强的类型性。因此可以在运行时间之前捕捉到差错。此外,在应用程序的开发期间,软件开发工具可以检测差错。当通过标记语言创建对象树390时,语法分析程序中断标记语句。一般,在标记语言中的标志的名称是相应类别的名称。
这些子对象340-350中的每一个可以包括子对象(例如,子对象340)中的一个或多个子特性(例如,子特性341)。可以把子特性的值存储在相关联的子对象中。然而,根据本发明,子对象不需要有存储值的局部存储器。此外,这些子对象340-350中的每一个可以包括与子对象相关联的一个或多个附加特性(例如,在虚线框中表示的附加特性352)。如下面连同图6所详细描述,附加特性352可以从与子对象350相关联的局部存储器得到它的值,可以通过继承(例如,基本对象312),通过特性页(未示出),通过程序设计方法(例如,静态方法330连同方法309),以及通过根据本发明的其它手段得到它的值。在这些附加特性的值与子对象相关联的同时,这些值的存储一般不是子对象的一部分。
再有,图3示出用户-界面环境中的编程模型。因此,人们会注意到在基本对象312和子对象340-350中的特性与对象的性能有关。基本对象312表示对话框,子对象340表示按钮对象,子对象350表示编辑框,而子对象342表示具有分别表示列表框和树的两个子对象346和348的选择器对象。这些子对象340-350中的每一个包括一个或多个子特性(例如,子特性341),诸如按钮对象的按下特性以及树对象的扩展特性。
对比之下,在附加类322中的特性与对象的外观有关。例如,第二特性集可以包括字体类型、颜色等的特性以及缺省值。配置这个编程模型,使之在运行时间处在子对象上设置一个特性。结果,配置每个子对象中的附加特性(例如,附加特性352),使之接收来自附加类别的值。
图4示出用于可以执行图3示出的编程模型的各种操作环境的几个示例语法。在每个示例语法中使用的术语“提供器”表明在语法中描述的静态方法与具有名称为“提供器”的附加类别相关联。因此,因为这些语法的每一个允许对附加类别定名,所以在两个不同的附加类别中具有相同名称的特性相互之间不会冲突。这允许开发者开发附加特性类别而无需周密考虑潜在的名称冲突。
现在转到示例语法,如果编程环境是程序设计方法语言,诸如Visual Basic或C#,则可能出现伪代码,如程序设计语法401中所示。程序设计语法401进一步包括一种方法识别符404;参数列表,所述参数列表具有用于指定特性的名称的第一识别符406,以及用于指定与第一识别符406指定的特性相关联的一个值的第二识别符408。把参数列表封闭在括号内,并且一个周期隔开类别识别符402和方法识别符404。参考图3示出的附加类别322,对于附加特性“FONT”,程序设计语法401如下:
    Attached Class.SetFont(PropertyID,value).(附加类别 设置字体
特性识别符,值)
感兴趣的是,这个语法显现出与以前编程模型中的语法的相似性。然而,语法不是等同的,而且程序设计语法401与以前的语法不同。例如,在程序设计语法401中,方法识别符404识别提供器类别(即,图3中的附加类322)上的静态方法。在以前的编程模型中,方法识别符具有在提供器实例上的经识别的实例方法。因为本发明利用提供器类别(即,图3中的附加类322),所以由于不需要跟踪提供器实例的寿命而编程模型可以支持在标记和特性页中的扩展器特性。程序设计语法401的又一个特征是语法具有较强的类型性。如上所述,由于诸如名称的拼法错误、不正确的数据类型等潜在的差错,较强类型性的语法能在编译时间而不是运行时间中检测到较佳的工具支持。
此外,对于诸如Visual Basic、C#等的编程环境,编程模型还允许类型性较不严格的语法(即,编程语法411)。编程语法411包括识别目标对象的对象识别符412、识别在附加特性类别中的静态方法的方法识别符414、包括附加特性识别符和值419的参数列表。附加特性识别符包括类别识别符416以及识别在相关联的附加类别中的附加特性的特性识别符418。
在另一个实施例中,可以使用诸如标记语法421之类的标记语言语法来实施编程模型。标记语法421包括标志422、具有提供器标志符424以及特性识别符426的附加特性和一个值428。在一个实施例中,标志422是目标对象(即,图3中的按钮对象)的名称。一般,分别用打开和关闭符号,“<”和“>”,来开始和结束标记语法421。再有,因为附加特性不是直接在类别上,所以分析程序执行处理以查找附加特性存在于何处。
在再另一个实施例中,可以使用具有诸如图4中示出的格式页语法431之类的格式页的可扩展的标记语言(XML)来实施编程模型。对于这个实施例,格式页语法431包括“标志”属性432。标志属性432相应于请求处理的类别。在XML中的附加特性的一个示例例子如下所示:
    <Button xmlns:ap=“expandoNameSpace”Pressed=“false”
ap:Expandos,String=“string”/>
当执行根据本发明的附加特性实施的应用程序时,应用程序用具体例子说明在对象树中的对象。然后,应用程序连同特性引擎一起处理运行时间操作,所述操作包括检索和设置对象的值。图5和6示出应用程序连同特性引擎一起执行的处理。
然而,在可以执行图5和6示出的SetValue()处理或GetValue()处理之前,必须对在这两种处理的每一种中指定的附加特性进行注册。可以在相应于附加特性(即,SetFont()326和GetFont()330)的任何静态方法中执行这个检查(例如,GetFontID()328)。因为在每次调用任何静态方法时都必须执行这个检查,所以这个实施例招致性能损失。熟悉本技术领域的人员会理解,可以实施使特性注册最优化的其它实施例而并不偏离本发明,诸如要求应用程序来执行注册。
附加特性的注册返回附加特性的一个唯一的PropertyID。调用注册特性的一个例子可以按如下的形式:
    BarDP=RegisterProperty(“Bar”,0,typeof(string),typeof(Button),0x3
);.
在这个实施例中,BarDP变量将包附加特性的唯一的识别符。然后,在调用SetValue()功能和GetValue()功能中使用这个唯一的识别符。在一个实施例中,从物主的静态构造器直接或间接地调用RegisterProperty。物主是指附加附加特性的类别。一旦注册了附加特性,通过调用与附加特性相关联的Get(得到)和Set(设置)静态方法,与附加特性的目标类型相匹配的任何实例就都可以“隐含地”附加特性。
如在上述注册特性的示例调用中所示,“Bar”指定附加特性的名称。特性引擎一般不使用这个名称。然而,分析程序使用这个名称来确定是否已经对物主注册了具有相同名称的特性。目标类型是Button(按钮)。对于附加特性,物主和目标不是相同的。缺省值是“0”。如连同图6所进行的详细描述,特性引擎确定在何处检索附加特性的值。因此,registerProperty调用包括搜索特性的一个值(诸如继承、特性页)的识别阶段的性能位。在上述示例调用中,性能位“0x3”表示对局部值、特性页以及继承进行搜索以便确定附加特性的值。因此,在一个实施例中,可以把这些性能位的解译编码到GetValue()静态方法中。另一方面,通过以正规方式表达特性之间的模型关系而可以提供这些阶段的确定。
在一个实施例中,可以从所示的表1中检索附加类别的代码。
Figure GFW00000036609300121
表1。
在上述代码中,在附加类别“BarProvider”中定义名称为“Bar”的附加特性。用作为字符串的数据类型定义名称为“Bar”的附加特性,并且只可以附加到Button对象。静态方法是强类型的,并允许访问特性和设置特性。
一旦已经注册了附加特性,就可以执行SetValue()和GetValue()功能。图5是逻辑流程图,示出根据本发明设置值的过程。在方框501处开始处理,其中,已经启动设置功能,使与某个特性相关联的值改变。一般,SetValue(设置值)过程500将局部地存储感兴趣(此后称之为感兴趣特性)的特性的值。在判定方框502处继续处理。
在判定方框502处,作出是否存在感兴趣特性的局部存储器的判定。因为本发明不具备对于对象的每个实例的每个特性的存储器,所以如果以前没有存储过感兴趣特性的值,则要分配存储器(方框504)。一旦已经分配了存储器,处理就继续进行到方框506,如果在判定方框502中已经检测了局部存储器。
在方框506中,把所述值复制到与感兴趣特性相关联的存储器中。一旦感兴趣特性已经改变状态,就发出状态改变的通知(方框508)。在一个实施例中,这个通知可以包括设置一个页面重写标志位,向有关的特性指示出它们的状态不再有效。另一方面,通知可以包括向每个有关者报告源已经变化,如上述专利申请中所述。在判定方框510中继续进行处理。
在判定方框510中,作出所述值是否存储在感兴趣特性的高速缓冲存储器中的判定。如果在感兴趣特性的高速缓冲存储器中没有值,则过程结束。然而,如果在高速缓冲存储器中有值,则使高速缓冲存储器清零(方框512),因为这个值不再有效。过程结束。
图6是逻辑流程图,示出根据本发明检索值的过程。在方框601处开始处理,其中,已经启动查询。在方框602处继续进行处理。
在方框602处,应用程序指示需要更新感兴趣的特性(此后称之为感兴趣特性)中之一。一般,这发生于当对象正在查询它们当前状态的特性时。过程600通过检查各个阶段而判定特性的一个值。这些阶段是在注册特性时定义的。判定方框606-610表示示例的阶段,但是可以添加其它阶段而不偏离本发明。在判定方框604中继续进行处理。
在判定方框604处,过程检查高速缓冲存储器,以确定以前是否高速缓冲存储过感兴趣特性。一般,为了使检索最优化而高速缓冲存储感兴趣特性。如果以前已经高速缓冲存储过特性,则在方框612处继续进行过程,从高速缓冲存储器检索值。另一方面,在判定方框606中继续进行过程。在判定方框606中,作出感兴趣特性的值是否是局部的判定。如果已经执行SetValue()而局部地设置特性的值,则所述值是局部的,如在图5中所示。如果值是局部的,则在方框612处继续进行过程,从局部存储器中检索所述值。如果值不是局部的,则在判定方框608中继续进行过程。
在判定方框608中,作出是否可得到特性页中的感兴趣特性的值的判定。当基本类具有相关联的特性页时,特性页规定每当用具体例子说明时将如何执行基本类的每一个子类。如果可以在特性页中得到感兴趣特性,则在方框612中继续进行处理,从特性页检索值。然而,如果值不在特性页中,则在判定方框610中继续进行处理。
在判定方框610中,作出是否可以通过继承(即,继承值)得到感兴趣特性的值的判定。从子对象的父对象派生继承值。如果父对象中之一具有感兴趣特性,则处理继续进行到方框612,从父对象检索值。然而,如果没有继承值,则从与附加特性相关联的附加类别检索缺省值(方框614)。在方框616处继续进行处理。
在方框616处,应用程序根据接收到值的阶段计算加权量度。存储所述加权量度,并用于作出经过训练的判定,为了使将来的检索最优化,判定要高速缓冲存储哪个感兴趣特性。然后结束处理。
此外,对于上述SetValue和GetValue过程,本发明的编程模型提供增强的功能,诸如成组查询和成组通知。因此,如所述,本发明提供一种编程模型,所述编程模型提供基于相关性的通信系统,所述系统通过使用附加类别而支持特性之间的复杂关系。使用这个编程模型构造的应用程序可以很好地定标,因为特性管理技术不需要过多的局部的、基于每个-实例的存储器。而是,编程模型促进特性值的再使用,诸如通过在基本类的等级使用特性页和继承。如上所述,本发明提供特性管理机制,从而在对象层次中的对象通过附加而存储特性值。
上述说明、例子和数据提供制造和使用本发明的组成的完整的说明。由于可以制造许多本发明的实施例而不偏离本发明的精神和范围,所以本发明归属在后面所附的权利要求书中。

Claims (10)

1.一种由计算机实现的装置,其特征在于,包括:
实现包括多个特性的基本类的装置;以及
实现包括多个附加特性的附加类的装置,附加特性中的每一个能够与从基本类派生的一个对象的一个实例相关联,所述附加类进一步包括至少两种静态方法,用于使多个附加特性中的一个附加特性与对象的实例相关联,所述静态方法支持强类型的语法,强类型允许所述静态方法在执行前进行检测。
2.如权利要求1所述的装置,其特征在于,从基本类派生的对象继承来自节点类的至少一种方法,当一个附加特性与对象的实例相关联时,所述一种方法由所述静态方法所调用。
3.如权利要求2所述的装置,其特征在于,所述静态方法和一种方法中的每一个方法包括用于传递一个附加特性的唯一识别符的第一参数,所述一个附加特性与对象的实例相关联。
4.如权利要求3所述的装置,其特征在于,在运行时刻注册一个附加特性之后可得到唯一识别符。
5.如权利要求2所述的装置,其特征在于,一种方法支持松散类型的语法。
6.如权利要求1所述的装置,其特征在于,相关联一个附加特性包括从对象的父对象检索所述对象的值。
7.如权利要求1所述的装置,其特征在于,相关联一个附加特性包括来自特性页检索对象的值。
8.一种使用对象的计算机系统,其特征在于,包括:
实现从第一类派生的第一对象的装置,所述第一对象包括第一组特性;
实现把第二组特性提供给所述第一对象的第二类的装置,所述第二类包括至少两种静态方法,所述静态方法用来根据与所述第一对象相关联的操作把第二组特性中之一附加到第一对象,所述静态方法支持强类型的语法,强类型允许所述静态方法在执行前进行检测。
9.如权利要求8所述的计算机系统,其特征在于,所述静态方法包括第一参数,用于唯一地识别所述操作请求第二组特性中的哪一个特性。
10.如权利要求9所述的计算机系统,其特征在于,在第一参数可以唯一地识别一个特性之前该特性被注册。
CN031457258A 2002-06-28 2003-06-30 使特性与对象相关联的系统和方法 Expired - Fee Related CN1470984B (zh)

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
CN1470984A CN1470984A (zh) 2004-01-28
CN1470984B true CN1470984B (zh) 2012-12-12

Family

ID=27733967

Family Applications (1)

Application Number Title Priority Date Filing Date
CN031457258A Expired - Fee Related CN1470984B (zh) 2002-06-28 2003-06-30 使特性与对象相关联的系统和方法

Country Status (20)

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

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
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
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
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
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
US8694397B2 (en) 2004-06-18 2014-04-08 Sap Ag Consistent set of interfaces derived from a business 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
US20070061351A1 (en) * 2005-09-13 2007-03-15 Microsoft Corporation Shape object text
US8001526B2 (en) * 2005-09-15 2011-08-16 Microsoft Corporation Hierarchical property storage
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
US8396751B2 (en) 2009-09-30 2013-03-12 Sap Ag Managing consistent interfaces for merchandising business objects across heterogeneous systems
US8473905B1 (en) * 2009-09-30 2013-06-25 Emc Corporation Managing user interface characteristics in displaying data storage systems information
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
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
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
US8775280B2 (en) 2011-07-28 2014-07-08 Sap Ag Managing consistent interfaces for financial 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
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
US8762454B2 (en) 2012-02-16 2014-06-24 Sap Ag Consistent interface for flag and tag
US9232368B2 (en) 2012-02-16 2016-01-05 Sap Se Consistent interface for user feed administrator, user feed event link and user feed settings
US8756274B2 (en) 2012-02-16 2014-06-17 Sap Ag Consistent interface for sales territory message type set 1
US9237425B2 (en) 2012-02-16 2016-01-12 Sap Se Consistent interface for feed event, feed event document and feed event type
US9367826B2 (en) 2012-06-28 2016-06-14 Sap Se Consistent interface for entitlement product
WO2014000200A1 (en) 2012-06-28 2014-01-03 Sap Ag Consistent interface for document output request
US8615451B1 (en) 2012-06-28 2013-12-24 Sap Ag Consistent interface for goods and activity confirmation
US8949855B2 (en) 2012-06-28 2015-02-03 Sap Se Consistent interface for address snapshot and approval process definition
US9400998B2 (en) 2012-06-28 2016-07-26 Sap Se Consistent interface for message-based communication arrangement, organisational centre replication request, and payment schedule
US9246869B2 (en) 2012-06-28 2016-01-26 Sap Se Consistent interface for opportunity
US8756135B2 (en) 2012-06-28 2014-06-17 Sap Ag Consistent interface for product valuation data and product valuation level
US9195442B2 (en) * 2012-07-10 2015-11-24 Oracle International Corporation System and method for compiling lambda expression in a programming language environment
US9076112B2 (en) 2012-08-22 2015-07-07 Sap Se Consistent interface for financial instrument impairment expected cash flow analytical result
US9043236B2 (en) 2012-08-22 2015-05-26 Sap Se Consistent interface for financial instrument impairment attribute values 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

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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

Family Cites Families (9)

* 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
US5635693A (en) * 1995-02-02 1997-06-03 International Business Machines Corporation System and method for tracking vehicles in vehicle lots
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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

Also Published As

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

Similar Documents

Publication Publication Date Title
CN1470984B (zh) 使特性与对象相关联的系统和方法
CN100592256C (zh) 无缝地比较对象的系统和方法
Grose et al. Mastering Xmi: Java Programming with Xmi, XML and UML
Stellato et al. VocBench: a web application for collaborative development of multilingual thesauri
KR101201011B1 (ko) 레이블 시스템을 위한 용어 데이타베이스 확장
US7783637B2 (en) Label system-translation of text and multi-language support at runtime and design
US20010029604A1 (en) Descriptive data construct mapping method and apparatus
AU2004208330A1 (en) XML types in Java
CN103218229A (zh) 管理对数据存储系统中的数据应用的规则的方法和系统
US7631004B2 (en) Systems and methods for creating a template from an existing file
Jackson Alloy 3.0 reference manual
US9835461B2 (en) Database management using format description
CN112230903A (zh) 一种基于iOS应用的轻量级解耦式埋点方法及装置
MXPA03004411A (es) Sistema y metodo para definir y utilizar subclases declarativamente por marcas.
CN1570860B (zh) 用于系统设计期间的验证的方法
US7587519B2 (en) Method and device for modifying modular messages
Amelunxen et al. On OCL as part of the metamodeling framework MOFLON
CN116822195A (zh) 基于SysML v1和SysML v2的双向模型转换方法
TW386211B (en) Method and system for automatically generating object service routines
CN111104490A (zh) 参数的删除方法及装置
CN112835567A (zh) 一种基于自然语言的可视化智能合约开发系统
Wagelaar Towards using OWL DL as a metamodelling framework for ATL
Pant et al. Object-oriented Systems in C++
Weight et al. A Microcode Compiler That Runs on the IBM AT and Supports Cascadable Microcomputers. Part 2
WO2009012494A1 (en) Data source management framework

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1060925

Country of ref document: HK

C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1060925

Country of ref document: HK

ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150505

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150505

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20121212

Termination date: 20180630

CF01 Termination of patent right due to non-payment of annual fee