首先我们将一个Class拖放到设计器中,将其命名为Customer,再点击右键选择 Add →Attribute为其添加一个属性,并设置该属性的名称为"Name"类型为String。在属性的类型设置中,你可以输入Delphi支持的类型。同过设置Alias属性还可以在模型中显示中文别名,方便我们进行建模。Class常用的属性如下:
属性名 |
默认值 |
描述 |
Abstract |
False |
抽象类 |
Sealed |
False |
能否被继承 |
Alias |
'' |
别名,显示在模型编辑器中的名字 |
Persistence |
persistent |
是否被存储 |
DefaultStringRepresentation |
'' |
默认显示字符,可将其设置为关键的属性名 |
根据我们在上面需求中所分析出的四个类在编辑器中创建,因为Person和Company都是继承自Customer,所以仅仅描述其不同于Customer的属性即可。完成后设计器内容如图所示:
完成上述工作后,我们开始对模型间的关联关系进行设计,首先来完成Customer的继承关系。选择Tool Palette中的Generalization/Implementation组件,点击Person模型后拖曳到Customer模型去,这样就建立好了两者间的继承关系,同样建立Company与Customer的继承关系。
然后开始建立Customer和CarSell之间的主子对应关系,选择Tool Palette中的Association组件,点击CarSell模型后拖曳到Customer模型去,即生成了一个Association。点击选中Association后设置它的属性,修改其name为PayAssociation,End1的 Multiplicity为0..*;End2的Multiplicity为1。Multiplicity属性用于控制模型间的连接关系,其可选属性的含义为:
可选择值 |
描述 |
0..1 |
有零个或一个连接 |
1..1 |
有一个且只有一个连接 |
0..* |
有零个或多个连接 |
1..* |
有一个或多个连接 |
同理为CarSell和Car建立关联关系,建立完成后的模型图如下:
到此为止我们的建模工作已经完成,在此之后我们还需要把对象保存发布到数据库中,这就用到了Eco所提供到的PersistenceMapper组件。在Delphi 8 中Eco一共提供了13个组件,它们分别是:
编号 |
组件名 |
命名空间 |
功能 |
1 |
CurrencyManagerHandle |
Borland.Eco.Handles |
用来操作当前游标所在的对象实体 |
2 |
ExpressionHandle |
Borland.Eco.Handles |
可以将其简单理解为一个数据源组件(TDataset),数据源通过SQL语句向数据库查询记录,而ExpressionHandle更为灵活可控的OCL语句查询对象实例 |
3 |
OclPSHandle |
Borland.Eco.Handles |
根据OCL表达式得到元素值,其主要方法为Execute |
4 |
OclVariables |
Borland.Eco.Handles |
定义在OCL中所使用的变量 |
5 |
ReferenceHandle |
Borland.Eco.Handles |
建立一个数据库连接,在使用中相当于dbConnection |
6 |
VariableHandle |
Borland.Eco.Handles |
通常和OclVariables一起使用 |
7 |
PersistenceMapperBdp |
Borland.Eco.Persistence |
将对象模型通过BdpConnection.进行发布 |
8 |
PersistenceMapperXML |
Borland.Eco.Persistence |
将对象模型通过Xml格式.进行发布. |
9 |
PersistenceMapperSqlServer |
Borland.Eco.Persistence |
将对象模型通过SqlServer.进行发布 |
10 |
EcoAutoFormExtender |
Borland.Eco.WinForm |
自动生成类信息窗体 |
11 |
EcoActionExtender |
Borland.Eco.WinForm |
和Button的EcoAction属性绑定,由按钮事件实现对象方法 |
12 |
EcoDragDropExtender |
Borland.Eco.WinForm |
提供Eco对象间在GUI中的拖曳支持 |
13 |
EcoListActionExtender |
Borland.Eco.WinForm |
和Button的EcoListAction属性绑定,用以控制CurrencyManagerHandle事件 |
其中Extender类组件将标准的.Net组件(DataGrid,TextBox等)和ECO进行了关联,这些Extender组件在由ECO Application Wizard创建完成后就自动生成了这些组件,我们不需要手工创建。我们下面用到的PersistenceMapper,是将对象模型发布到数据库或XML中,同时也将对象实例存储到数据库中。如果我们在项目中需要转换数据库平台,不需要作过多的改变,仅仅将PersistenceMapper类型更改以下就可以,实现了真正的数据库平台无关性。在本演示中我们用PersistenceMapperXML来进行数据的存储,在程序完成需要发布时根据需要再改为其它类型的数据库即可。
在工程视图中双击打开EcoCRMEcoSpace.pas,并切换到设计视图,从Tool Palette中双击PersistenceMapperXML,添加一个PersistenceMapperXML到设计器中,设置其FileName属性为"EcoCrmData.xml",并将TEcoCRMEcoSpace的PersistenceMapper属性设置为PersistenceMapperXML。