使用可用子程序配置计算机程序的方法和装置的制作方法

文档序号:6407952阅读:306来源:国知局
专利名称:使用可用子程序配置计算机程序的方法和装置的制作方法
技术领域
本发明一般涉及到通过将可用的子程序加以连接和配置,以开发类似所谓“面向对象”的程序那样的计算机程序。
计算机程序允许计算机完成很多有用的任务。然而,为了编写计算机程序,特别是所谓“面向对象”的计算机程序,人们必须具备必要的计算机编程技巧和该特定的编程语言的语法知识。为了掌握必要的编程技巧和知识,需要付出相当多的时间,通常还需金钱。因此,本技术的目的是为非计算机编程人员或只有初步培训的编程人员提供方便来开发计算机程序。
于1992年11月10日颁发给Hullot和转让给NeXT计算机公司的美国专利第5,163,130号中所公开的现有技术系统曾向这个目标迈进,该前技术系统为早已至少部分编写好的程序所用图形接口的开发和配置使用了图形用户接口技术。然而,这样的现有技术系统不能从一组子程序中开发完全的,随意的计算机程序。这是因为该现有技术系统处理出口的能力有限。
一个“出口”是一个数据结构或对象,它提供必需的信息,后者在一个特定“源”对象和一个或更多“目的”对象之间建立连接时是需要的。根据现有技术状况,出口是在特殊设计用来与其他对象交互工作的“源”对象中定义的。利用出口的名称,每个出口向程序配置系统的用户提供有关“目的”对象的种类的标帜,而源对象必须与该“目的”对象连接才能发挥作用。
本发明的目的是利用程序配置方法和装置为建立计算机程序提供方便,该程序配置方法和装置允许一个或更多个子程序单元和一个或更多个图形接口单元的变量和函数部分和其他子程序单元或图形接口单元中的变量或函数连接起来,以便将一定类型的计算机程序的功能完全加以配置并准备付诸执行,而不需用户直接阅读、编写或编辑该特定计算机语言的编码。程序配置实用系统用于具备可见显示的计算机系统内,在该可见显示上应用程序由一个图形图象所代表,而该应用程序具有至少两个子程序或至少一个子程序和至少一个图形接口单元,如该应用程序具有至少两个子程序,则每个子程序都有变量和动作部分。程序配置实用系统可使非编程人员或只有初步编程技巧的人有能力将一个或更多的子程序的集合配置成一个完整的计算机程序,而不是局限于只将程序用户接口配置成不可见的,功能性程序单元。
尤其是,本发明将现有技术加以改善,提供一个系统和过程,后者通过激励子程序去建立便于将该子程序和其他子程序连接的新出口,可在程序配置期间为子程序定义任意数量的出口。在本发明的特定实施例中,新出口的名称或a)依靠将一个子程序试图连接到其他子程序而获得,或b)由程序配置系统用户直接输入出口名称而提供,例如在键盘上将出口名称敲入。此外,根据本发明的一个方面,出口可具有一个或更多约束参数而得到扩充,这些约束参数可用于保证这些连接只建立起合适的关系。这些约束参数包括a)所允许的连接数量,b)所允许的连接种类,c)目的对象的类,和d)所需要的目的对象操作。
附图中

图1、2、3、6和7显示出给本发明的计算机程序配置系统和方法的用户所展现的屏幕显示;图4和5分别显示出图3和6的屏幕显示的一部分;图8至13显示用于实现本发明的过程的一部分的流程图;图14显示根据本发明所存储信息的表格;图15是实现本发明的系统和方法的计算机的典型硬件配置的框图;图16显示出图6的屏幕显示的一部分;以及图17显示出子程序,它们的出口和出口属性之间的关系。
虽然本发明的程序配置系统可用于使用任何数量的编程语言的计算机上,但最合适的情况是和运行面向对象的编程语言的计算机一起使用,本发明的最佳实施例是为执行用C编程语言编写的程序的计算机所设计的,因此,下面的讨论将至少部分地适合于面向对象的编程,尤其适合于面向对象的C编程。然而应该理解本发明并不只局限于运行面向对象编程语言的系统。
本发明的程序配置系统是一个自包含实用系统,它和将被配置的程序是分开的。假定任何被配置的计算机程序所需的部件函数、对象、和子程序在和程序配置系统一起使用之前都已编写并在一般情况下能够执行。
要理解下面的解释,必须定义几项术语。
一个“对象”是一个由一个或更多个在一个特定的子程序内一起定义的数据结构和有关的操作所组成的自包含群体。
一个“连接”是一个由程序配置系统建立的对象,用于获取“源”对象和“目的”对象间的关系细节。连接是在程序配置过程中建立的,它们在程序执行期间被其他对象使用。连接对象通常获取图14所示的关系细节,这在下面还将解释。现时发明的程序配置系统的关键功能是如适当的对象间交互作用所需要的那样为对象间连接的定义提供方便。
一个“出口”是一个用于提供信息的数据结构或对象,该信息是在从一特定“源”对象到一个或更多个“目的”对象建立连接时所需要的。根据本发明的一个方面,出口是在特殊设计用来与其他对象交互工作的“源”对象内所定义,或由“源”对象的功能操作所建立。借助于出口的名称或相关的出口变量的名称,每个出口向程序配置系统的用户提供有关“目的”对象的种类的标帜,而源对象必须与该“目的”对象连接才能发挥作用。除名称之外,根据本发明的一个方面,出口可具有一个或更多约束参数而得到扩充,这些约束参数可用于保证这些连接只建立起合适的关系。这些约束参数包括a)所允许的连接数量,b)所允许的连接种类,c)目的对象的类,和d)所需要的目的对象操作。
决定于应用程序的设计,一定的对象为了要发挥功能,就要求它们出口的初始集合在程序配置时加以扩充(例如增加数量)。根据本发明的原理,当由来自程序配置工具包的信息所激励时,为扩充出口的初始集合而提供附加的出口的对象就进行扩充操作。用此种方法附加到对象的出口的原始集合的出口在这里称作“获取的”出口,并用程序配置工具包个别地赋予名称。通过从合适的“目的”对象的功能取得一串名称和/或通过提示用户手动输入所希望的出口名称,例如用键盘,程序配置工具包可用于自动地为获取的出口命名。
根据本发明,获取的出口a)由程序配置系统显示和注解,b)由用户使用程序配置系统加以改变,以及c)可以具有对用户有特殊意义的名称,例如,目的电子数据表子程序的范围名称,或数据库特性。
为了有利于解释子程序,它们的出口、和出口属性间的关系,读者可将注意力放在图17。为简明起见,也只为了下面图17的解释,出口将显式地看成出口对象。一个子程序对象1701可能有例如指针指向一个或更多出口对象1702。每个出口对象1702有至少一个名称1703,并可能有例如指针指向一个或更多被命名的连接类型对象1705。每个连接类型的对象1705有一个名称1706和不同的参数,例如,这些参数用于描述a)所需要的连接数量1707,b)目标子程序所需要的方法1708(这里用作技术术语,即功能子程序),c)所需要的目标子程序的类1709,以及d)一个用于描述出口的可能用途的标识参数1710,例如出口是否可能用于从一个目标子程序获取其他出口名称的目的。
现转向图1,其中显示了计算机显示的图象,在下列情况时能看到该显示1)用户进入本发明的程序配置系统,2)为所要配置的程序将程序文件对系统加以标识,和3)为了用于所配置程序将所需部件子程序和图形接口域加以标识。此种情况下,命名为MY—PRO-GRAM的所配置的程序是一个简单程序,用于将两个数X和Y作为输入量和将它们的和数作为结果r加以显示。显示10显示了程序配置系统。文件窗口13包括一个代表MY—PROGRAM的图形单元130,代表MY—WINDOW14的图形单元131,代表一个称为FUNCTION—1的子程序的图形单元133,和代表另一个命名为CONNECTIONS—1的子程序的图形单元134。在图形单元131上按鼠标,用户即可打开或关闭MY—WINDOW14。
用户已定义MY—WINDOW14为包括1)前面标以文字标号“X”的域140,2)前面标以文字标号“Y”的域141,3)前面标以文字标号“r”的域142,和4)带有标号“+”的按钮143。MY—WIN-DOW14,域140—142和按钮143由用户按下法建立用户从调色板/工具箱12中选取合适的项目,并把所选项目复制到显示10上所希望的位置上。应用本程序时可将代表鼠标光标的箭头20移动至域140并按鼠标按钮,这就允许输入数值X,接着对域141进行同样操作,将数值y输入,再将箭头移至按钮143并按鼠标,这样的操作将MY—PROGRAM130中所用子程序—本例中是CONNECTIONS1134和FUNCTION—1 133—加以结合,以便计算r值并将它在域142中显示。
根据本发明的原理,要使这样一个程序运行的一个方法是将包括为用于较大程序而编写的对象的子程序分别加以配置,将它们连接在一起并和一个用户接口子程序连接起来,该用户接口子程序能提供一个具有一定数量用户接口域—例如MY—WINDOW14的域140—143—的显示。FUNCTION—1 133是一个这样的可配置的子程序对象,在本例中它是一个特定的电子数据表子程序对象,它提供用于计算特定类型的和数所需全部程序逻辑。“CONNEC-TIONS—1”134是另一个这样的子程序对象,它是一个连接函数,能提供同步触发功能。一旦所有子程序,例如用于控制MY-WIN-DOW14、FUNCTION—1 133、CONNECTIONS—1 134的代码,都已编写完,它们可连接在一起以定义一个完整的可运行的程序。要做到这点,必须在调色板/工具箱12中提供一个用于代表称为“FUNCTION—1”和“CONNECTIONS—1”的子程序的图形图象,并至少一次将它们每一个复制到上面讨论的程序文件窗口13中去。一般讲来,和调色板/工具箱中所代表的其他函数一样,FUNC-TION—1 133、CONNECTIONS—1 134事先必须至少部分编写好,以便在它们的图象存入调色板/工具箱12时每个这样的函数或子程序都是可执行的。熟悉技术的人知道怎样制做这样的子程序。
为建立所需连接,程序配置系统按下列示范方式工作为特定地将子程序CONNECTIONS—1 134和子程序FUNCTION—1 133相联,用户操作如下为了选用CONNEC-TIONS—1 134将箭头20移至文件窗口13中它的图形表示处,并在按下计算机键盘的控制(CTRL)键的同时按鼠标按钮。虽然在图1中没有其他子程序,有时会有不止一个其他子程序要加以选择。如图2所示,按着鼠标按钮不放—控制键可以放开—,用户移动鼠标来将箭头20移向感兴趣的特定子程序处,从最初选用的子程序表示如CONNECTIONS—1 134画一直线21。当该线抵达感兴趣的子程序如FUNCTION—1 133时,用户放开鼠标按钮,结果就在所增亮的两个子程序之间建立了连接。图3中显示了这样的增亮的连接。如果检查员窗口30没有在以前的活动中显示出来,则这时候该窗口30即在显示10上出现。
图4显示检查员窗口30更详细的图象。在所示操作模式即已知为链接或“连接”模式中,检查员窗口的功能是a)在子窗口400中显示上一次所选子程序如CONNECTIONS—1 134的出口,b)在另一个子窗口401中显示目标子程序如FUNCTION—1 133的合适的可执行函数,而其他子程序或图形单元可以和它连接起来,c)显示从所选出口至所选子程序所允许的连接类型(如图5中TYPE—1 501),以及d)便于完成这种链接或连接。标号为“出口”的子窗口400列举了所选子程序即本例中的CONNECTIONS—1134的初始变量。标号为“目的处的动作”的子窗口401列举了可用于连接目标子程序函数程序,在本例中是FUNCTION—1 133内可用的一套适当的函数。
正如上面所蕴含的,检查员窗口30具有几种不同的操作模式。检查员窗口30包括模式子窗口425,后者显示出检查员窗口30的当前操作模式。如图4和5所示,检查员窗口30处于“连接”模式。图16显示处于“属性”模式的图5的检查员。检查员窗口30还有“按钮“423、424和427,当按鼠标时,它们中每一个都将一个特定函数加以初始化。当前标以“连接”的按钮423可用作连接和断开两种函数,因此有时候如图5中更详细地描述的和显示的那样,标号为“断开”。
用户将箭头20放置于出口名称上方并按鼠标按钮、即可在子窗口400中选择一个出口。用户接着可以将所选出口和目的子程序内可用的动作加以联接。这是通过将箭头20放置于子窗口401中的描述字上方并再次按鼠标按钮而完成的。如果一个建议的连接有可能规定不止一种连接类型,可用的类型列举于子窗口420中。用户将箭头20放置于所希望的连接类型名称上方,并按鼠标按钮,即可选择或改变连接类型。
将箭头20放置于“连接”按钮423上并按鼠标按钮,即可在所选子程序和目标子程序的有关动作之间完成所选类型的连接。在本例中,在程序运行期间,当子程序CONNECTIONS—1 134中以前所定义的程序指令的顺序操作使该子程序向另一个由所连接出口所指向的子程序发送一个动作信息时,检查员窗口30中为该连接所选的特定动作信息将送至本例中的FUNCTION一1 133。
根据本发明,用户不时地可能在任意选择的源和目的对象之间规定一个所希望的连接。如上面所描述那样,通常做法是将箭头20放置在屏幕的源对象表示上方并如上描述画条线到某些目的对象,然后放开鼠标按钮。每次当用户操作时,系统将显示同源对象相关联的检查员窗口30并在检查员窗口30内列举源对象的出口变量名称。当检查员窗口30中特定出口被选择和/或增亮时,系统从目的对象获取全部所需信息,从决定a)何种连接类型可用于连接至目的对象,b)多少个连接可连至目的对象,以及c)何种目的对象函数可由从所增亮出口到目的对象的信息所触发。从目的对象如此获得的信息用于决定在检查员窗口30中列举何种函数和连接类型,作为选项供用户选择。根据本发明的一个方面,用户被系统限制为只能选择那些对所选目的对象适用的连接的类型和数量。有利的是,这些连接将只触发目的对象中那些有意义的函数。
根据本发明,一定子程序中的“源”出口用于从一个或更多个目的子程序获取和使用附加出口。当这种特定类型的源子程序和出口连接至合适的目的子程序时,这些源子程序将获取附加出口,然后也列举在子窗口400中。另外,当那些由一定的子程序所获取的源出口连接到合适的目的子程序时,这些源出口也可用于获取附加的源出口。如图5所示,所获取出口从被获取时起即列举于子窗口400中并一直停留在那里,直至遇到下列情况之一或其他一些源对象被选择,或那些促使所获取对象被获取的出口本身被断开。在子窗口400内,a)符号“@”500紧挨着任何所获取出口列举出来以及b)符号“+”406紧挨着任何在所选子程序的上下文中用来或可能用来从目的子程序中获取源出口的出口列举出来。星号符号“*”404也紧挨着任何用在源和目的子程序间的一个或更多连接内的出口列举出来。
根据本发明,用于从众多源变量同步地复制数据到一个目标对象时所必需的对象特别适合于使用所获取出口。本例中,众多用户接口对象连接至由CONNECTIONS—1 134所代表的对象,后者接着又连接到对象FUNCTION—1 133,---一个特定的电子数据表。对象CONNECTIONS—1 134具有能力通过特定命名为“SPREADSHEET”的出口从任何它所连接的电子数据表中获取附加出口。如此获得的出口被理解为目标电子数据表的范围名称。一旦获得这些出口,所获取出口可用于连接至其他对象,这包括但不局限于提供用户接口的对象。然而这些所获取出口,以及特别是传送给与之连接的其他对象的信息,仍然处于进行获取的对象的控制之下。因此,进行获取的源对象随时提供送往目的对象的信息同步操作,例如,该同步操作可由被用户接口所捕获的单个按鼠标操作所产生的送往目的对象的单个信息所触发。
相似地,设计用于连接到数据库模块的对象也可能随时准备获取对应于数据库特性的出口。例如,已经获取了代表数据库特性的出口的对象对于收集那些形成数据库查询所必需的数据以及使收集操作同步化特别有用。
根据本发明的一个方面,对一定类型的进行获取的对象讲,如图16所示,当检查员处于“属性”模式时,用户可以直接将出口名称输入到检查员窗口30中去(图6),从而规定将要获取的出口。任何时候只要检查员窗口30以属性模式显示出来,用户就可以选用出口列表921中的空白区并键入所希望的出口名称。另一种方法是,用户可在列表内选用已有的所获取的出口,并在所增亮的名称上键入,从而改变出口名称。用这种方法获取出口的对象在提供多重同步化的逻辑、算术或语法比较时特别有用。例如,借助于这种方法可由一个对象获取多个出口,可由一个事件或由其他对象来的一个信息触发多个单独的但同时的比较,并且单一的结果可送至一个或更多其他对象。
图5显示出检查员窗口30,它是在一个目的子程序例如图1中FUNCTION—1 133的变量自动地和直接地加以获取并由所选子程序例如CONNECTIONS—1 134的功能子程序所采用,然后又在子窗口400中显示之后显示的。用户将箭头20移动至所希望的变量处,例如图5中的变量A1B1 407,再按鼠标使它增亮。如图6所示,一旦一个变量被选增亮,以及当箭头20(图1)位于和当前检查员窗口30相关联的子程序图形表示上方时,用户再按一个鼠标,并画另一条线111(图6)至另一个子程序,或如本例中显示上的接口域140。
当鼠标箭头接近程序用户接口中所定义的任何域或文件窗口13(图1)中任一其他子程序时,由情况决定,目标域或子程序将增亮。当一个域或子程序如此增亮而用户放开鼠标按钮时,在源和目的对象间画了一条可见的连线,用于显示未决逻辑连接。当未决逻辑连接被显示时,a)相对应的源出口在子窗口400(图4)中得到增亮,b)目的处所选动作在子窗口401中得到增亮,c)所选连接类型在子窗口420中得到增亮,以及d)如果它是一个早已存在的连接,它将和从其他所选对象出口来的其他连接一起列举于子窗口419中。当用户将箭头20放置于a)“连接类型”子窗口420中的字510上方,b)“源出口”子窗口400中的字407上方,或c)“目的处动作”子窗口401中字403上方时,他只要按鼠标按钮,即可进一步标明或改变所建议要建立的连接的类型。
如所建议连接得到证实,只要按“连接”按钮423,该连接将a)被建立起来以及b)在子窗口419内列举出来,并有增亮的显示。当一个出口第一次连接时,一个像星号404那样的指示符将在子窗口400中紧挨着出口名称显示出来,标志着该出口至少已连接过一次。如图5所示,当一个特定连接被选择并在子窗口419中增亮时,连接/断开按钮423的标号即改变为“断开”。每个所选连接和它的类型将一直停留在子窗口419的列表中,直至当箭头20位于特定连接上方时按鼠标和又一次在标号为“断开”的按钮423上按鼠标。
当检查员窗口30第一次打开时,如在子窗口400中已列举了连接好的出口名称,例如从前次连接操作来的出口名称,则每个所连接出口都将有星号404显示出来。如用户选用一个早就连接好的出口名称,像线111(图6)那样的线将显示出来,表示连接列表中和所选出口到一个接口域或子程序有关的第一次连接。当箭头20位于子窗口419中其他连接上方而用户按鼠标按钮时,将显示其他线。这样可以检查连接,或确认它们的正确性,或找出它们是什么。如用户已画了线111(图6),意图是连接一个尚未连接的出口,但欲错误地将一个连接到其一个其他图形表示的出口加以增亮,则线111将会消失,并将被一条线所代替,该线是在该出口连接的域或子程序与例如CONNECTIONS—1 134那样的所选子程序之间画出的。在一个实施例中,在将所选出口407连接至其他域或子程序之前,用户必须重新画制线111。可以应用一个“废除”函数,它使早已连好的出口减亮并自动恢复线111。再者,任何时候只要有一个连接被显示按钮423将用“断开”为标号,这时用户有一个选项供选择,或在该按钮上按鼠标,从而将出口断开,或不理睬“断开”按钮而选择另一个出口、连接、连接类型、或动作。
根据本发明的一个方面,如果某特定子程序的任何出口用于从它可能与之连接的目的子程序中获取附加出口,则检查员子窗口400在列举该出口名称时同时显示一个特殊显示符,如符号“+”406。这就告知用户,该特定子程序在连接至一个或更多个其他共同合作的子函数时将会获取附加出口。
根据本发明的一个方面,如果从一个特定子程序例如CON-NECTIONS—1 134中的一个出口建立连接,而该特定子程序是用于从它与之连接的目的子程序如FUNCTION—1 133中获取附加出口的,则附加出口名称被自动获取并在同一子窗口401中和符号“@”500一起列举出来。这提醒用户,所获取出口和它们的连接依赖于某些已经建立的连接。
在本发明的一个实施例中,所有出口名称都有一套和它们相关联的“连接类型”,因此,如上所述,在建立连接之前都为每个连接选择一个特定的连接类型。当一个特定的出口在子窗口400内增亮时,它的当前所选连接类型在子窗口420内列举并增亮。用户要改变选择时,可将箭头20置于子窗口420中所需连接类型510的字上方,同时按鼠标按钮。
上述过程可以一再重复,直至其他子程序内的所有域或出口都连结到其他所需子程序的所需出口和动作。本例中,三个域140、141、142都连接到子程序CONNECTIONS—1 134内的出口A1B1、A2B1和A3B1,而子程序134本身又有4个出口A1B1、A2B1、A3B1、和SPREADSHEET连接至FUNCTION—1 133。此外,域143的出口也连接至子程序CONNECTIONS—1 134中的一个动作,而子程序134本身又触发所连接的FUNCTION—1133的所需操作。
在本发明的一个实施例中,只有指定的“出口”的变量或函数才能连接至子程序。因此,当在目的子程序中要起动一个动作时,这由送至一个出口的信息所触发,而该出口支持携带动作信息给目的子程序的连接的类型。如图5所示,在动作连接过程中一个出口能送给目的子程序的特定动作信息在子窗口400列举出来。所有由增亮的出口名称所支持的连接的类型都在连接类型窗口420中列举出来。
正如在所有出口的情况下那样,一个星号或其他标示符(未示出)紧挨着所连接动作的名称显示出来,而当两者都增亮时,按钮423变为“断开”按钮。类似地,如连接动作被增亮,则现有的到子程序的连接将显示出来。
本例中,根据本发明的一个方面,当箭头20位于按钮“+”143上方时按鼠标按钮,即触发子程序CONNECTIONS—1 134,以提供适当的动作信息来触发FUNCTION—1的操作。为建立此连接,程序配置系统的用户将箭头20放置于按钮“+”上方,并按鼠标按钮,以选择代表按钮“+”的函数的图形单元143,然后画一条线(未示出)到程序文件窗口13中的子程序CONNECTIONS—1 134的图形单元。如图7所示,当放开鼠标按钮时,两个图形单元间的连接211将显示出来。在建立该连接后,一个和检查员窗口30相类似但和第一个所选图形单元—本例中是按钮“+”143—相关连的检查员窗口(未示出)显露出来,并且如上面描述那样可用于将从“+”域子程序中定义的出口到子程序“CONNECTIONS—1”134中定义的动作的连接给予建立、改变或检查。
参照以上所述,在程序早已存在的例子中,通过被认为是工作空间管理程序的操作系统的功能,该程序的特性和子程序可供本发明的程序配置系统使用。图1示出,工作空间管理程序提供了窗口15,其中显示了不同可用文件的表示。用户通过a)在工作空间管理程序窗口15中增亮早已存在的程序例如MY—PROGRAM的图形表示,b)把它拉向文件窗口13,以及c)将它放在那里,可以让程序配置系统了解早已存在的程序如MY—PROGRAM的特性。
当一个程序配置完毕和用户通过从菜单(未示出)选择“存放”项来表示配置过程的结束时,程序配置系统在一个文件中存储和每个子程序有关的全部编程对象的列表,并且如果有的话,图形用户接口,和连接列表。对于每一个由用户规定的连接,系统将图14所示表格501的复制件作为程序配置文件的一部分加以存储。每一个这样的表格501复制件包括a)以不同连接类型列表中索引形式出现的连接域的类型(类型)502,b)都以指向对象列表中正确对象的指针形式出现的源子程序域(源)503和目的子程序域(目的)504两项,以及c)出口域505中的出口变量名称和动作域506中的动作函数名称(如有的话)。另外,对于每一个由用户建立的连接,系统在表格501中的“所有者”域507中存放用来获取和特定的连接(如果有的话)有关的“出口”域505中所命名的出口的出口变量名称。当包括一个或更多个表格501的程序配置文件存放以后,本发明的程序配置系统的工作即完成。
程序配置系统提供了一个程序,其第一行是一条指令,用于装载并执行程序配置文件。执行配置文件的结果是装载正确文件;部分依据于一个或更多表格501来建立恰当连接;以及显示由于不同子程序和它们互相间的连接之间的相互作用所提供的正确功能。
图8至11显示了今后称之为主连接过程的这一过程的流程图,在步骤60处,当CTRL键按下而鼠标箭头20位于如FUNCTION—1 133和CONNECTIONS—1 134这样的子程序表示上方或位于如按钮143这样的屏幕按钮对象上方时,如用户按鼠标按钮就能引用该主连接过程。条件转移点61用于测试确定箭头是否移动过。如条件转移点61测试结果是YES,这标志着箭头已移动过,接着条件转移点62测试确定是否有早已存在的连接线。如步骤62的测试结果是YES,这标志着有早已存在的连接线,因此在步骤63将这些连接线从屏幕上清除。如步骤62的测试结果是NO,或者执行完步骤63后,控制即交给步骤64,此早显示出如CONNECTIONS—1 134那样的所选子程序和箭头20之间的新连接线。接着控制又交回给步骤61,以便测试进一步的箭头移动操作。
如步骤61的测试结果是NO,这标志着箭头没有移动过,控制即交给条件转移点65,在那里测试确定鼠标按钮是否已经放开。如果步骤65的测试结果是NO,这标志着鼠标按钮尚未放开,则控制又交回给步骤61去继续检查箭头移动操作。如步骤65的测试结果是YES,这标志着鼠标按钮已经放开,控制交给条件转移点66,在那里测试确定箭头20是否位于某一类型对象上方,如连接线从子程序CONNECTIONS—1 134出发,则该子程序134可连接至这一类型对象,如连接线从143处所用按钮出发,则该按钮可连接至这一类型对象。
如步骤66的测试结果是NO,这标志着鼠标按钮已放开,但箭头20尚未放置于可与之建立连接的对象的上方,于是在步骤67中将任何已显示的连接线加以消隐,并且主连接过程在步骤68中结束退出。系统接着等待用户选择另一任务。
如步骤66的测试结果是YES,这标志着箭头位于可与之建立连接的对象上方,于是控制交给步骤69,其中围绕该对象显示一个方框,因而将它增亮。在步骤69后或67后的任一种情况下,条件转移点600测试确定检查员窗口30是否可见。如步骤600的测试结果是NO,这标志着检查员窗口30不可见,则在步骤601使它变为可见。如步骤600的测试结果是YES,或在执行步骤601后,控制交给条件转移点602(图9),其中测试确定检查员窗口30是否处于连接模式。如步骤602的测试结果是NO,则检查员窗口30不处于连接模式,控制交给步骤603,在步骤603检查员窗口30设置为连接模式。如步骤602的测试结果是YES,或在执行步骤603后,控制交给步骤604,其中在检查员窗口30的左列内显示出可用的程序出口。
接着,条件转移点630测试确定由步骤604显示的任何出口是否早已连接。如有任何出口早已连接,条件转移点631测试确定所有可能获取的出口是否在检查员子窗口400(图5)中列举出来。如步骤631(图9)的测试结果是NO,控制交给步骤632,在步骤632所有已获取但未列举的出口都加到列表中去。接着控制交回给条件转移点631,以测试所有可能获取的出口是否都已列举。
在可能的几个周期后,当所有出口和已获取出口都已标识和列举后,步骤631的测试结果成为YES,控制即交给步骤633,其中任何所列举出口只要用在连至一个或更多个目的子程序的一个或更多个连接中,它们即被标以星号404(图5)。根据本发明的一个方面,在步骤634(图9)中,紧挨着所获取出口的名称标以符号“@”500(图5)。以后,在步骤635(图9)中,从所选源子程序或域来的所有连接的列表在子窗口400(图5)中显示出来。如步骤630(图9)的测试结果是NO,或在执行步骤635后,控制交给步骤636,其中对于用来从目的子程序中获取附加出口的所显示的出口,不论它是否连接了,都紧挨着它们的名称标以符号“+”406(图5)。其次,在步骤638(图9)中第一个由步骤604或632列举的、可用于建立连接的出口得到增亮。根据本发明的一个方面,在步骤637,由子窗口400(图5)中增亮的出口所支持的连接类型的列表在子窗口419中显示出来。
如图10A所示,控制交给步骤607,其中测试确定鼠标按钮是否按下。如在步骤607处(图10A)鼠标按钮没有按下,系统在步骤607处继续等待按鼠标。如步骤607处测试结果是YES,这标志着鼠标按钮已按下过,控制交给条件转移点608,其中测试确定箭头20(图5)是否位于检查员窗口30内。如箭头20不在检查员窗口30内,步骤608(图10A)的测试结果是NO,并在步骤609将所有连接线从屏幕上取消。然后在步骤610主连接程序结束并退出。
如步骤608的测试结果是YES,这标志着箭头20(图5)位于检查员窗口30内,则条件转移点611(图1OA)测试确定箭头20(图5)是否位于检查员窗口30的右列401中目的动作名称上方。如步骤611(图10A)的测试结果是YES,这标志着箭头位于检查员窗口的右列中一个动作名称的上方,则控制即交给步骤612,其中箭头20(图5)下的动作被增亮,而任何以前增亮的动作都被减亮。
如步骤611(图10A)的测试结果是NO,这标志着箭头20不位于检查员窗口30的右列401(图5)中动作名称上方,则控制即交给条件转移点645(图10A),它测试确定箭头20(图5)是否位于连接类型子窗口420(图5)的连接类型名称上方。如步骤645(图10A)的测试结果是YES,这标志着箭头20(图5)位于连接类型名称510(图5)的上方,则控制交给步骤643(图10A),其中系统将子窗口420(图5)中的连接类型增亮,而将任何其他可能已被增亮的连接类型减亮。
如步骤645(图10A)的测试结果是NO,这标志着箭头20(图5)不是位于子窗口420中连接类型名称上方,则控制交给条件转移点670(图10A),它测试确定箭头20(图5)是否位于检查员模式按钮427上方。如步骤670(图10A)的测试结果是YES,这标志着箭头20(图5)位于检查员模式按钮427上方,则控制交给步骤700(图10B),其中将模式加以改变。
如步骤670(图10A)的测试结果是NO,则控制交给条件转移点646,它测试确定箭头是否位于左列子窗口400(图5)中出口名称上方。如步骤646(图10A)的测试结果是YES,这标志着箭头20(图5)位于出口名称上方,则控制交给步骤644(图10A),它将出品增亮,并将其他任何增亮出口加以减亮。接着在步骤642,该出口的有效连接类型和已增亮的目的均列举出来。
在步骤642列举有效出口后,或在步骤643将连接增亮后,控制交给步骤641,其中所增亮出口的任何有效目的动作和连接类型均在子窗口420(图5)中列举出来。在步骤641(图10A)中列举有效目的动作之后,或在步骤612(图10A)中将箭头20(图5)下的动作增亮之后,控制交给步骤640,它将按钮423(图5)上的标号设为“连接”,并将子窗口419中可能已被增亮的任何连接加以减亮。步骤640之后(图10A),控制交回给步骤607,以等待再次按鼠标按钮。
如步骤670(图10A)的测试结果是YES,这标志着当箭头20(图5)位于检查员模式按钮427(图5)上方时按了鼠标按钮,则控制交给步骤700(图10B),其中如图16所示,检查员模式切换至“属性”模式。
在步骤700(图10B)中将检查员模式由“连接”模式切换至“属性”模式后,控制交给步骤701(图10B),控制交给步骤701(图10B),其中为所增亮对象显示属性检查员模式,以代替连接模式检查员30(图5)。其次,条件转移点702(图10B)测试确定增亮的对象是否已获取了出口。如步骤702(图10B)的测试结果是YES,这标志着该对象已获取了出口,则在步骤703中这些出口在检查员窗口的出口窗口920(图16)中列举出来。
在步骤703之后,或如步骤702的测试结果是NO,则条件转移点704测试确定当箭头20位于属性检查员上方时鼠标按钮是否按下过。如步骤704的测试结果是NO,鼠标按钮并未按下过,则控制仍停留在步骤704,同时所列举出口继续得到显示,直至鼠标按钮按下时止。如步骤704的测试结果是YES,这标志着当箭头20位于检查员模式按钮927(图16)上方时,鼠标按钮按下了,则控制交给条件转移点602(图9),其中检查员模式切换回至连接模式。如步骤704(图10B)的测试结果是NO,这标志着当按鼠标按钮时箭头20不位于检查员模式按钮上方,控制交给步骤706,它测试确定箭头20是否位于所获取出口921(图16)的列表中空白区上方。如步骤706(图10B)的测试结果是YES,这标志着当箭头20位于列表中空白区上方时按下鼠标按钮,则控制交给步骤707,其中将空白区增亮。如步骤706的测试结果是NO,控制交给条件转移点711,它测试确定光标是否位于图16所示检查员窗口上所获取出口921的列表中一个所列举的出口名称920(图16)的上方。如步骤711(图10B)的测试结果是NO,这标志着箭头20不是位于所列举出口名称上方,则控制交回给步骤701,以等待再一次按鼠标按钮。如步骤711测试结果是YES,这标志着箭头20位于所列举出口名称上方,则控制交给步骤712,其中所选出口名称得到增亮,并在步骤713去检测所增亮出口。在步骤713或步骤707之后,在步骤708中接收一个用户提供的输入,例如键盘输入,用于定义一个新的出口名称。在条件转移点709中所输入出口名称的语义是要测试是否有效,也即要检查它是否为一有效名称(例如并不是全空白)。如步骤709的测试结果是NO,名称无效,于是控制交回到步骤704,去等待再次按鼠标按钮。如步骤709的测试结果是YES,则步骤708中由键盘输入的出口名称有效,于是在步骤710中送信息至增亮的对象以获得取所命名的出口。在步骤710中增亮的对象获取该出口后,控制交回至步骤701,去等待再次按鼠标按钮。
如步骤646(图10A)的测试结果是NO,这标志着箭头20(图5)不是位于出口名称上方,则控制交给条件转移点647(图11),它测试确定箭头20(图5)是否位于连接显示子窗口419中一个连接的上方。如步骤647(图11)的测试结果是YES,这标志着箭头20(图5)位于连接显示子窗口419中一个连接的上方,则控制交给步骤650(图11),其中系统将所有连接线都消隐掉,并重画所选连接的线条,以此来只是增亮所连接子程序的源和目的图形表示。接着在步骤651中,系统将子窗口400(图5)中已增亮连接的出口加以增亮,而将所有其他已增亮的出口加以减亮。
步骤652(图11)中,所有被选出口的允许的连接类型都在子窗口420(图5)中列举出来,并在步骤653(图11)中,所选连接的连接类型得到增亮,而所有其他连接类型加以减亮。其次在步骤654中,在子窗口401(图5)中显示出由所选出口至所选目的连接的类型所允许的动作。此后,在步骤655(图11)中,所增亮连接的所选动作得到增亮,而显示中所有其他以前增亮过的动作则都减亮。接着在步骤656中,CONNECT按钮423(图5)上的标号设置为“断开”(“DIS-CONNECT”)。接着控制交还给步骤607(图10A),去等待另一次按鼠标。
如步骤647的测试结果是NO,这标志着箭头20不是位于连接显示中的任一连接上方,则控制交给条件转移点616,它测试确定箭头20是否位于连接按钮423(图5)上方。如步骤616的测试结果是NO,这标志着箭头20不是位于连接按钮423(图5)上方,则控制交还给步骤607(图10A),去等待按鼠标。如步骤616的测试结果是YES,则控制交给步骤617,它分别引用图12和13所示的连接删除/建立过程。
图12和13一起组成了图11中步骤617所引用的连接删除/建立过程的流程图。当箭头20位于检查员窗口30的“连接”(“CON-NECT”)按钮423(图5)上方,并且按鼠标按钮时,在步骤80(图12)处即进入该过程。接着条件转移点81(图12)测试确定在连接显示列表419(图5)中是否存在一个所选连接。
如步骤81(图12)的测试结果是NO,这标志着不存在增亮的已选连接,则控制交给条件转移点82(图13),它测试确定是否有一个增亮的出口将要连接。如步骤82的测试结果是NO,这标志着没有增亮的出口要连接,系统回至步骤607(图10A),去等待另一次按鼠标。如步骤82的测试结果是YES,这标志着存在一个增亮的出口,则控制交给条件转移点83,它测试确定对某个存在的连接是否早已定义了a)增亮的出口,b)增亮的连接类型,c)增亮的目的,和d)增亮的动作这四项的组合。如步骤83的测试结果是YES,这标志着早已存在着这样一个连接,则控制交给步骤84,其中有信息提醒用户,说明在请求一条冗余连接。控制即交还给步骤607(图10A),去等待另一次按鼠标。
如步骤83(图13)的测试结果是NO,这标志着没有冗余连接,则控制交给条件转移点850,它测试确定和增亮的出口相关联的参数是否允许对增亮的目的作一连接。本实施例中,在条件转移点850,和每个出口相关联的参数不准程序配置系统为不恰当目的建立连接。特别不准为没有所需操作的目的对象建立连接。如步骤850的测试结果是NO,这标志着这些出口参数排除对所选目的建立所选类型的连接,则控制交给步骤85,其中向用户显示一条约束破坏信息,说明在出口参数、连接类型、和目的对象操作之间蕴含着矛盾。控制接着交还给步骤607(图10A),去等待另一次按鼠标。
然而,如步骤850(图13)的测试结果是YES,这标志着增亮的出口和增亮的连接类型的参数允许对增亮的目的对象建立一个连接,则控制交给步骤851,其中建立一个与增亮动作关联的从增亮出口至增亮目的的所选类型的新连接。还有,在子窗口400中紧挨着出口名称显示一个星号404(图5)。其次,在步骤852(图13)中,新连接的细节附加到子窗口419(图5)中的连接显示中去。
此后,条件转移点853(图13)测试确定增亮的新连接是否用于获取出口。如步骤853(图13)的测试结果是YES,这标志着新连接用于从目的子程序或域获取新出口,则控制交给步骤854,在那里系统使所选源对象去获取附加出口,并在检查员窗口中将这些出口连同紧挨着每个这种出口所显示的符号“@”一起列举显示出来,以标志每一个这样的出口是一个获取的出口。
如步骤853的测试结果是NO,这标志着系统发现新连接不是用于任何获取的出口,或如在执行步骤854后,则控制交给步骤855,其中如图5所示,按钮423(图4)的标号改变为“断开”(“DIS-CONNECT”)423。于是控制交还给步骤607(图10A),去等待一次按鼠标。
如步骤81(图12)的测试结果是YES,这标志着在连接显示列表419(图5)中存在着增亮的连接,则控制交给步骤810(图12),其中开始断开所选连接和更新显示的过程。在步骤810中该过程继续进行,其中所选连接从用于所选出口的连接列表中被清除掉。其次在步骤811中,检查员窗口30(图5)中的子窗口400(图5)被清除。在步骤812(图12)中,由所选源对象提供的出口列表在子窗口400(图5)中重新加以显示。
条件转移点830(图12)测试确定步骤812中显示的任何出口是否早已连接。如存在这种早已连接的出口,步骤830的测试结果是YES,同时控制交给条件转移点831,它测试确定是否所有可能的获取的出口都在检查员子窗口400(图5)中列举出来。在步骤832中所有获取的而以前又没有列举的出口都附加到列表中。接着控制交还给步骤831去测试是否所有可能的获取出口都已列举出来。
在经过测试831和步骤832之间可能的几个循环后,所有出口和所获取出口都得到标识和列举,则控制交给步骤833,其中如果任何列举的出口用在连至一个或更多个目的子程序或域的一个或更多个连接中,它们都用一个星号404(图5)加以标注。在步骤834(图9)中,所有获取的出口都用一个符号“@”500(图5)加以标注,该符号500是紧挨着出口名称的,以及在步骤835(图9)中,从所选源子程序或域来的所有连接的列表在子窗口400(图5)中显示出来,其次在步骤836(图12)中,用于从目的子程序获取附加出口的出口,不论它们是否连接,都用符号“+”406(图5)标注,该符号406是紧挨着出口名称的。此后,在步骤837(图12)中,由子窗口400(图5)中增亮的出口所支持的连接类型列表在子窗口420(图5)中显示出来。接着控制交还步骤607(图10A),去等待另一次按鼠标。
根据本发明的原理,本系统通过发送一条信息给程序存储器中的由所选图形单元所代表的对象,并向对象查询它的出口清单,来激励“源”对象程序逻辑去获取出口。当一个恰当设计的源对象这样被查询时,它就接下来向所连接(和增亮的)的目的对象查询可能用于命名新出口变量或对象的性质名称。接着源对象为用于它自己的程序逻辑而建立新出口,此时使用对查询作出响应的目的对象所提供的名字。由源对象功能这样所建立的新出口称为“获取的”出口,并且在检查员显示中紧挨着符号“@”列举出来,在最佳实施例中,被 查询过名字的特定目的对象是用于产生出口名称的那种类型的早已存在连接的一部分(例如,在检查员窗口中其出口用“+”标注的连接)。
在举例的程序中,当检查员窗口第一次显示时,系统向源对象“CONNECTIONS—1”查询它的出口列表,以便将它们在检查员窗口30中列举出来。当存储器内和“CONNECTIONS—1”相关联的对象如此被查询时,建立到FUNCTION—1的一个连接连同每个子程序的功能一起将CONNECTIONS—1加以激励,向FUNC-TION—1查询名称列表,后者可能用作出口变量名称或将被CON-NECTIONS—1所获取的对象。
在最佳操作模式中,有一些对象包含了功能,该功能是通过查询所连接目的对象来获取出口变量名称或出口对象时所必需的,系统可操纵包含该功能的对象,使系统用户使用系统键盘直接敲入所需出口变量名称。系统从连接检查员30切换到属性检查员,可供用户利用键盘手动地增加、删除、和改变所获取出口的名称。为了切换到属性检查员,用户可将鼠标放置于检查员模式按钮上方并按鼠标按钮。利用同样过程,用户可退回至连接检查员。
本发明可以很好地在差不多任何常规计算机系统中实现,实现本发明的示范性计算机系统900示于图15。系统900包括a)CPU901;b)主存储器902;c)视频存储器903;d)供用户输入用的键盘904;e)用于根据本发明操纵图形图象的鼠标905;以及f)可能包括固定和可换媒体的海量存储器906,其中使用了一种或更多种磁、光或光磁存储技术或任何其他可用的海量存储技术。这些部件通过常规双向系统总线907互相连接。总线907包括32条地址线,用于对存储902和903的任何部分进行寻址。系统总线907还包括一条32位数据总线,用于在下列部件间传送数据a)CPU901,b)主存储器902,c)视频存储器903,和d)海量存储器906。在所示实施例中,CPU901是一个Motorola 68030 32位微处理器,但任何其他合适的微处理器或微机也可作为替代方案加以使用。Motorola公司(Arizona的Phoenix市)印刷的MC68030用户手册提供了有关68030微处理器的详细信息,特别是有关指令系统、总线结构和控制线的详细信息。
系统900的主存储器902包括8兆字节常规动态随机存取存储器,当然更多或更少的存储器容量也是合适的。视频存储器903包括256K字节常规双口视频随机存取存储器。再者,视所需分辨率而定,可使用更多或更少这样的存储器。视频存储器903的一个端口连接了一个视频多路分配(MUX)和移位器电路908,它又接到视频放大器909。视频放大器909驱动阴极射线管(CRT)光栅显示器910。常规的视频多路分配和移位器电路908和视频放大器909将视频存储器903中存储的象素数据转换成适用于显示器910的光栅信号。显示器910的类型适合于显示图形图象,具有1120象素和832象素高的分辨率。
以上所述只是解释了本发明的原理。可以理解,熟悉技术的人能够设计不同的虽然在这里未曾明显地解释或示出过但却能体现本发明原理因而不越出本发明实质和范围的设备和装置。
权利要求
1.一种用于配置包含至少两个子程序的程序的系统,它包括;用于向子程序发送信息,从而激励所述子程序去建立便于连接到其他子程序的新出口的装置;和用于提供说明所述新出口已可用于连接的标志的装置。
2.权利要求1中所定义的系统还包括用于在所述子程序的所述所建立的新出口与至少一个其他子程序之间建立连接的装置。
3.权利要求1中所定义的系统,其中所述子程序通过导出一个出口名称列表而建立所述新出口,所述出口名称列表是从通过与第二子程序对象交换信息而获得的信息中导出的。
4.权利要求3所定义的系统,其中所述第二子程序在送给所述子程序的所述信息中提供对象名称列表,而所述子程序则从所述对象名称列表中建立所述新出口。
5.权利要求1所定义的系统,其中所述子程序通过从由人员提供的信息中导出一个出口名称列表来建立所述子程序的所述新出口。
6.权利要求5所定义的系统,其中所述人员通过在键盘敲入来提供所述出口名称列表。
7.权利要求3所定义的系统,其中在所述子程序的所述新建立的至少一个出口和第二个子程序之间的连接被约束为依从于至少一种特定的连接类型。
8.权利要求7所定义的系统,其中所述特定的连接类型包括一项限制,即对在所述子程序的所述新建立的至少一个出口和第二个子程序之间的连结数量的限制。
9.权利要求7所定义的系统,其中所述特定的连接类型包括一项要求,即要求第二个子程序对象具有特定的预定特性。
10.一种在具有能显示至少第一和第二对象的图形显示的计算机程序配置系统中使用的方法,该方法包括以下步骤从所述第一对象到所述第二对象建立一个连接;依据于利用所述连接从所述第二对象所提供的信息,将所述第一对象加以激励,以建立至少一个出口;将依据于所述信息而由所述第一对象所建立的所述至少一个出口加以显示;以及将所述第一对象的所述至少一个所建立的出口连接至其他对象。
11.一种具有能显示至少第一和第二对象的图形显示的计算机程序配置系统,所述第二对象具有至少一个出口,所述计算机程序配置系统包括用于显示由所述第一对象从所述第二对象所获取的出口的装置,所述获取的出口是通过在所述第一和第二对象间交换信息而获取的;以及用于将所述第一对象的所述获取的出口进一步连结到至少一个其他对象的装置。
12.权利要求11所定义的系统,其中所述其他对象是所述第二对象。
13.权利要求11所定义的系统,其中所述其他对象是一个第三对象。
14.一种在具有至少第一和第二对象的计算机系统中使用的方法,在所述计算机系统中至少某些所述对象具有出口,所述出口具有名称,所述方法包括以下步骤从所述第一对象向所述第二对象发送一条信息,要求所述第二对象将它的出口名称发送给所述第一对象;从所述第二对象接收所述出口名称;以及为从所述第二对象接收到的每一个名称在所述第一对象内建立一个出口,所述所建立的出口适用于将所述对象连接至其他对象。
全文摘要
一种图形程序配置系统,它允许用户建立完整计算机程序。它所提供的系统和过程允许一个子程序可具有任意个在程序配置期间可能定义的出口,其方法是激励子程序去建立新的方便于将子程序连接至其他子程序的出口。在本发明的特定实施例中,新出口的名称可或者a)借助于由一个子程序到其他子程序所尝试的连接来获取,或b)由程序配置系统的用户直接输入出口名称来提供,例如由用户在键盘上敲入出口名称。
文档编号G06F9/44GK1124379SQ9410956
公开日1996年6月12日 申请日期1994年8月19日 优先权日1993年8月23日
发明者丹尼尔·F·赫尔利, 厄尔·H·韦斯特 申请人:美国电报电话公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1