发表于:2005-06-29 11:14:00
楼主
为了便于了解Visual Graph的工作原理,我们必须了解Delphi的面向对象开发技术。因为在某些方面,Visual Graph几乎完全吸收了Delphi的技术特点。
假定我们在Delphi中建立了下面的类TmyClass:
type TmyClass = class
private
function GetText : string;
procedure SetText( s : string );
public
Id : Integer;
published
property Text : string read GetText write SetText;
end;
这里,Id是一个公有变量,Text是一个属性,它有取值和赋值两个函数,当我们要读Text属性的值时,系统就去执行GetText函数,并返回其结果。而当我们对Text赋值的时候,系统就把这个值作为参数去执行SetText函数,达到某种目的。当我们对Id进行赋值的时候,除了改变这个值,不会产生任何其他结果,但是属性却不一样,我们通过写属性,可以实现任何需要的变化,这就是属性的强大之处。
其实,公有变量也是一种特殊的属性,它有自己缺省的读值、赋值方案,但是,和属性相比还是有一点很大的不同,通常,属性是可以存储的,公有变量则不可以。
在Visual Graph图形系统中,由于用户经常需要在图形上面添加自定义数据并且存储,这样我们就提出了“一类属性”的概念,内部结构和公有变量相同,但是却可以存储。不仅可以象其他属性那样显示在属性列表中,而且在文档中保存的格式也和其他属性没有任何差别。例如下面的一个矩形:
<shape name="Rect1" myprop="1" pattern="1"/>
pattern是矩形的固定属性,myprop是一类自定义属性,它们在存储和访问时没有任何差别。
Visual Graph的二类属性相当于Delphi的属性,它也需要定义一个取值函数和一个赋值函数。
与Delphi不同的地方在于,Visual Graph程序中的变量类型都不是显式的,而都是隐含的。比如下面的程序:
private function GetText()
return “Label”
end function
将来读取Text属性的时候,系统将认为Text属性是字符串型。
private function GetText()
return 123
end function
将来读取Text属性的时候,系统将认为Text属性是数字型
。
www.Visual-Graph.com