• 热门标签

当前位置: 主页 > 航空资料 > 计算机 >

时间:2010-08-09 13:05来源:蓝天飞行翻译 作者:admin
曝光台 注意防骗 网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者

• 步骤1——标识事物,并对它们进行命名和定义。
• 步骤2——将事物组织为类层次。
• 步骤3——定义关系、元组数和约束。
• 步骤4——通过添加特性,将与对象相关的值详细化。
1. 步骤1:命名事物
开始信息建模的最好方法是为系统中的事物设置名称。其中“事物”通常是指实体、对象、
类或数据元素;这一步并不十分重要。我们将以上“事物”称为对象类型。
首先要列出与系统相关的所有事物,例如:客户、帐号、假期、旅馆、度假胜地、国家、
预定或付款。有人建议首先对系统进行文本描述,然后从中选出所有名词。不管采用哪种方法,
这一步都不太困难;通常在较短的时间内就能够完成。
下一步是产生对象类型的定义,它可能需要耗费更多的时间。以“假期”一词为例,它的
定义要保证当你看到假期时能够识别它,而且对于某个事物是否是假期没有争论的余地。比如
你可以问以下问题:
• 如果两个人一起旅游,应该算作一个假期还是两个假期?
• 未出售的假期是否仍然能够算作假期,或者称为其他事物?
• 如果客户预定了一个假期,后来调整到其他日期,这是否仍然算作同一假期?
在建立这些定义时,我发现有两类问题总是很有意义的。第一个是以下形式的问题:
• X是一个假期吗?
通过测试一些不太确定的例子,能够明确概念的边界。第二个问题是:
• X和Y是相同的假期,还是不同的假期?
在此,我们不再讨论X和Y是否是真正的假期,而是寻找能够明确地区分特定假期的规则。
对于无形的对象,例如:飞行、频道、服务或广告活动,这类问题尤其重要。
你也许会发现不同的人对于这些问题的答案截然不同。有些人或许对什么是假期有完全不同的
看法,例如,他们可能认为2 0 0 1年的复活节是一个假期。这就体现出信息建模的价值:它能够排除
可能的误解。在我曾经工作过的一个机构中,由于一个部门认为零售商意味着位于特定位置的一个
商店,而另一个部门认为是一家公司,它可能拥有多个商店,结果造成了数据的丢失。如果问这样
一个问题:“达拉斯的Q u i c k F o o d与匹兹堡的Q u i c k F o o d是相同的零售商吗?”,就能够暴露这种误解。
经过上述过程,你有可能得到一长串的对象类型列表,其中某些可能有较长的名字,例如:
h o l i d a y - i n v e n t o r y - i t e m和p a r t y - h o l i d a y - r e s e r v a t i o n。如果有可能的话,选择业界人士能够正确理
解和解释的名称,因为他们不是总有时间查看你精心编写的定义。
在本阶段,由于我们侧重于事物的标识,因此除了命名对象类型之外,如何识别每个实例
也是值得考虑的。如何标识单独的假期?目前可能已经存在用于标识实例的代码,你需要了解
这些代码;或者你不得不重新发明一个新代码;或者你可以使用某些特性的组合—例如:假
第4章数据建模与XML使用83 下载
期可能由客户编号和起始日期的组合来标识。在本阶段中,常常能够发现现有编码机制中存在
的问题,例如:公司旅游部门可能用一个客户编码标识来自特定公司的所有职员,而客户服务
部门会给每个参加旅游的职员分配一个独立的客户编号。
因此在本步骤的结尾,我们将得到一个对象类型列表,其中的名称和定义都获得了一致的
同意。
2. 分类
分类是生物学中的术语,它是指分类系统;在信息建模中,我们也将它称为类型层次(有
人愿意将它称为本体论)。既然已经列出了所有对象类型,并给它们命名,现在,我们要将它们
组织到一个层次化的分类体系中。当我们编写对象类型的定义时,通常会形成这些层次关系。
以下定义都是很常见的,例如:
• 当天往返假期是一个不包括预订食宿的假期。
• 有三类食宿:旅馆食宿、自备食物的食宿和营地食宿。
在这些定义中,关键词是“ is a(是一个)”(或“is a kind of(是一种)”)。团体假期是一个
假期,取消是一个事务,定金是一个付款,素食菜单选择是一个免费项。如果你能写下类似“ A
是一种B”或者“每个A都是B”的语句,就能够在分类中标识子类关系。
这有时被称为i s - a测试:但是一定要谨慎,因为在英语中我们也常常用i s - a表示单个实例与
它的类型之间的关系:“Benidorm is a resort(B e n i d o r m是一个旅游胜地)”。实际上,在这里用
i s - a - k i n d - o f来表述更加安全。
正如我们将在后面看到的,标识子类非常有用,但是更重要的,它有助于理解对象类型定
义。举例来说,如果你的类层次错误地将客户标识为旅游者的子类,很可能有人会迅速发现错
误,并指出I B M是一个客户,但是仍然要登飞机。
如果你习惯于面向对象编程,你就已经在定义类型层次中领先了,然而,你仍然面临着潜在的
威胁,因为程序员通常主要依据系统中的功能模块考虑对象类,而忽略了它们在外部世界中所表示
的内容。如果你发现自己使用动词而不是名词来命名对象类型,那么你可能已经落入了这个陷阱。
下面的例子显示了我们将在假期业务中使用的类型层次的部分结构(参见图4 - 1)。它使用
U M L表示法,其中箭头从子类指向超类。
图4-1
84使用XML 高级编程
下载
客户
提供者
个人客户
公司客户
旅游提供者
推荐提供者
飞机航线图表
旅游车公司
飞机航线日程表
要了解更多有关U M L和表示法的信息,参见《Instant UML》(I S B N:1 - 8 6 1 0 0 - 0 8 7 - 1)。
你可以进一步细化这张示意图,但是在本阶段,保持它的简明性有助于理解它要传达的主
要信息,并且帮助你从用户那里获得反馈,说明他们是否正确理解了你要表述的概念。使用
Vi s i o等工具绘出这张示意图是非常有价值的,它使你能够扩展或压缩细节的层次,以便将同一
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML高级编程上(35)