Borland在2004年初推出的Delphi 8 for Microsoft .NET Framework称得上是Delphi历史上最重要的一个版本,这个版本能否成功关系到Delphi能否在.net平台上再现win32平台上的辉煌。Delphi在win32平台上的成功很大程度上要归功于优秀的VCL架构。正是因为微软在Win32平台上没有提供完整易用的组件库,才使得VCL有如此蓬勃的发展。而在.NET平台上微软已经提供了完善成熟的Framework,Delphi8中虽然依旧包含VCL,但现在的VCL.NET已经不能完全和.NET Framework的Winform兼容了,而是为了方便Delphi的用户平滑过渡到. NET。失去VCL的优势对于Delphi来说也并非完全是件坏事,Borland会把更多的精力放在如何提高开发工具的生产力上。Borland在收购TogetherSoft、BoldSoft、Starbase等公司后,开始对所掌握的技术进行整合,ECO正是Bold基础上发展出的.NET平台MDA解决方案。它提供了封装有各种典型业务应用的底层应用服务,可以很好的完成各种系统开发和业务应用开发。Borland软件产品的副总裁,Boz Elloy认为,"ECO不但可以减少编写和维护的代码量,同样可以减少风险,支持更高的软件产品质量,我们相信ECO至少要比市场上的同类产品领先一年。"下面我们就实际体验一下MDA在Delphi中带给我们的惊喜。
实战ECO开发
下面我们要开发的是一个汽车销售客户管理系统,汽车销售商要管理客户的资料,客户中既有个人客户也有企业客户,两者的属性各有不同。汽车的型号资料和每辆汽车的销售记录同样也要管理。根据上面的简单需求来开始我们的ECO开发之旅。
1. 使用ECO Application Wizard建立一个工程
1) 打开Delphi 8 架构版在点击File →New →Other打开新建项目对话框。选择ECO Windows Application后点击OK
![]() |
2) 输入工程名称和路径后点击OK,ECO Application Wizard为我们创建了所需要的工程单元文件。(注意:因为Delphi 8 Eco中存在的一个BUG,在工程路径或工程名中存在全角字符会引起编译器编译是发生错误,这里必须保存在英文路径下)
![]() |
ECO Application Wizard生成的新工程包含以下几个文件:
文件名 | 描述 |
CoreClasses.pas | 其中包含UML packages、 interfaces、 classes之间关联关系的源代码和在模型中定义的类型 |
EcoCRMEcoSpace.pas | 由Borland.Eco.Handles.EcoSpace派生出的子类TEcoCRMEcoSpace的源代码 |
WinForm.pas | 应用程序主窗体的源代码 |
Borland.Eco.Core.dll Borland.Eco.Handles.dll Borland.Eco.Interfaces.dll Borland.Eco.Ocl.ParserCore.dll | Borland.Eco.Persistence.dll 这些文件是ECO applications运行时所需要的文件,存放在C:\Program Files\Common Files\Borland Shared\BDS\Shared Assemblies\2.0目录下 |
2. 需求分析
由上面所提供的需求我们可以提炼出以下几个类:
名称 | 描述 |
Customer | 客户,包含属性有:Name(名字)、Phone(联系电话) Address(住址) |
Person | 个人客户,除了包括客户的属性外还有Sex(性别)属性 |
Company | 公司客户,其具有Customer的全部属性 |
Car | 汽车,包含的属性有ID(汽车编号) Name(汽车名称) CarType(汽车型号) |
CarSell | 汽车的销售记录,包含的属性有BuyDate(购车时间)Fee(价格) |
各个类之间的对应关系如下:
Person和Company都是Customer的子类,它们都拥有Customer的属性。汽车的销售记录中包含所销售的车辆,CarSell和Car有一对一或一对多的对应关系,也就是一条销售记录可能对应多个车辆,同样客户和销售记录也有一对一或一对多的对应关系。
3. 设计模型
根据上面的分析结果我们可以开始从ECO中进行建模,首先选择模型视图,打开CoreClasses包,然后双击CoreClasses打开模型设计面板。
![]() |
Tool Palette 中的UML Class Diagram 中共包含6个组件他们分别是:
名称 | 描述 |
Eco Package | 模型包,如果系统结构复杂可用其来进行分解以降低复杂度,CoreClasses包是ECO Application Wizard默认生成的包 |
Class | 类 |
Generalization/Implementation | 继承关系 |
Association | 联合关系 |
Note | 注释 |
Note Link | 注释链接 |