问题。尤其是与以前类似问题的面向对象分析结果比较来寻找可以直接重用的 泛化一一特化结构并吸取有关教训。如果存在许多特化类,则首先考虑最简单 的和最复杂的特化类,然后处理其他的。如考虑对象“飞机”,它可以按不同的 分类方式来进行特化: 军用和民用,喷气和普通,固定机翼与可变机翼,商用和私人,在航行中 的和在地面上的 在每一种情况下,查看潜在的属性和方法。检査特化对象之间的区别:同 时检验它们是否是真实的特化类。如汽车和飞机。另外还要考虑是否该特化类 属于该问题域 其次,将某个类看作特化类。那么,是否从该问题域中的其他类就能找到 个泛化类,且它能表示共同的属性、方法或两者呢?是否泛化对象反映了真 实的泛化?是否泛化对象本身仍在问题域的范围内? 采用继承来显式表达属性和方法的共同部分,可以实现在一般特殊结构中 恰当地分配 属性和方法。将共同的属性和方法放在上层,而将特有的 属性和方法放在下层 泛化一一特化结构的准则之一就是它是否反映了问题域中的泛化一一特化 关系。 ③层次与网络 每个一般特殊结构均形成层次或网络。在实践中泛化——特化结构的最普 通形式就是层次(如下图所示)。 Person LegalName Address OwmerPerson ClerkPerson ClerkOwnerPerson Critizenof DateOfBori th Citizens Useridenti fication DateOfBirth Password User identification Photo P ThumbPrint Photo ThumbPrint 在本例中, Person(人)是 Owner(所有者)、或 Clerk(工作人员)或是 一个 Clerk兼 Owner,这一层次的特化类中就存在着一些冗余信息。 借助于泛化一一特化网络还可以研究其他问题域的持化类,而且还可以显 式地表示更多属性和方法的公共部分。 下图中的例子表明在某个问题域中的 Person是一个 Owner、一个Clek或 两者。特化类 Owner Clerk Person描述了一个有着多重直接泛化类的类,它表明 一个对象继承了来自其祖先的属性和方法。而且如果这个类本身还有属性和方
问题。尤其是与以前类似问题的面向对象分析结果比较来寻找可以直接重用的 泛化——特化结构并吸取有关教训。如果存在许多特化类,则首先考虑最简单 的和最复杂的特化类,然后处理其他的。如考虑对象“飞机”,它可以按不同的 分类方式来进行特化: 军用和民用,喷气和普通,固定机翼与可变机翼,商用和私人,在航行中 的和在地面上的。 在每一种情况下,查看潜在的属性和方法。检查特化对象之间的区别;同 时检验它们是否是真实的特化类。如汽车和飞机。另外还要考虑是否该特化类 属于该问题域。 其次,将某个类看作特化类。那么,是否从该问题域中的其他类就能找到 一个泛化类,且它能表示共同的属性、方法或两者呢?是否泛化对象反映了真 实的泛化?是否泛化对象本身仍在问题域的范围内? 采用继承来显式表达属性和方法的共同部分,可以实现在一般 特殊结构中 恰当地分配 属性和方法。将共同的属性和方法放在上层,而将特有的 属性和方法放在下层。 泛化——特化结构的准则之一就是它是否反映了问题域中的泛化——特化 关系。 ③层次与网络 每个一般特殊结构均形成层次或网络。在实践中,泛化——特化结构的最普 通形式就是层次(如下图所示)。 在本例中,Person (人)是 Owner(所有者)、或 Clerk(工作人员)或是 一个 Clerk 兼 Owner,这一层次的特化类中就存在着一些冗余信息。 借助于泛化——特化网络还可以研究其他问题域的持化类,而且还可以显 式地表示更多属性和方法的公共部分。 下图中的例子表明在某个问题域中的 Person 是一个 Owner、一个 Clerk 或 两者。特化类 OwnerClerkPerson 描述了一个有着多重直接泛化类的类,它表明 一个对象继承了来自其祖先的属性和方法。而且如果这个类本身还有属性和方
法,则它们将出现在特化类 Owner ClerkPerson中 Person LegalNane Address OwnerPerson ClerkPerson Critizenof DateOfBorith Userldentification Password Photo ThumbPrint OwnerClerkPerson 因此,网络能描述复杂的特殊类;能有效地表示公共部分;对模型的复杂 程度影响较少。 随着特化类的增加,网络结构将变得非常复杂。此时可考虑将网络的某一 部分重新组合为另一个层次。同时要注意到在一个以上的直接泛化类中使用相 同的属性名会导致类一&一对象规范的严重混乱 泛化一一特化结构网络可以表示两个不同泛化一一特化结构的重叠或者组 合(如下图所示)。 Client Person OrganizationClient Indivi dualClientPerson EmployeePerson Indivi dualclientEmployeePerson (2)、如何定义整体一部分结构
法,则它们将出现在特化类 OwnerClerkPerson 中。 因此,网络能描述复杂的特殊类;能有效地表示公共部分;对模型的复杂 程度影响较少。 随着特化类的增加,网络结构将变得非常复杂。此时可考虑将网络的某一 部分重新组合为另一个层次。同时要注意到在一个以上的直接泛化类中使用相 同的属性名会导致类—&—对象规范的严重混乱。 泛化——特化结构网络可以表示两个不同泛化——特化结构的重叠或者组 合(如下图所示)。 (2)、如何定义整体—部分结构
在面向对象分析中,整体——部分关系对于在问题域和系统任务的边界区 域中识别类一&一对象是非常有用的。同时它还能将具有特殊的整体一一部分关 系的类一&一对象组织到一起 ①表示法 整体——部分结构可用下图表示:在顶部是一个整体对象(用类一&一对象 符号表示的对象),下部是部分对象(用类一&一对象符号表示的对象),它们之 间用线(结构线)连接。三角标记表明这是整体—一部分结构。这种表示法是 有向的。将整体放在上部而将部分放在下部可以使模型便于理解。根据该模型, 整体可有多个部分,也可有不同种类的部分。整体一一部分结构线的终点位置 反映了对象之间(而不是类之间)的映射。整体—一部分结构线的每一端都标 有一个量或区域,它表示该整体拥有的部分数。 Whole 0, Part1 Part 2 在下图所示的例子中, Aircraft是一个整体,它可能:没有 Engine;最多有 四台 Engine。并且 Engine是一个部分,它可能:不是 Aircraft的一部分;至多 是一架 Aircraft的一部分。 Aircraft Engine ②策略 略由两部分组成,一部分是确定什么,另一部分是考虑什么 确定什么 当确定潜在的整体—一部分结构时,考虑以下的变种情况 总成 部件 容器 内容 集合 成员 此外,还应査看从前相同和类似问题的面向对象分析结果。确定能直接重 用的整体一一部分结构,并吸取有关的教训 现在考虑整体一一部分结构的变种。如下图,一架 Aircraft是一个总成,而
在面向对象分析中,整体——部分关系对于在问题域和系统任务的边界区 域中识别类—&—对象是非常有用的。同时它还能将具有特殊的整体——部分关 系的类—&—对象组织到一起。 ①表示法 整体——部分结构可用下图表示:在顶部是一个整体对象(用类—&—对象 符号表示的对象),下部是部分对象(用类—&—对象符号表示的对象),它们之 间用线(结构线)连接。三角标记表明这是整体——部分结构。这种表示法是 有向的。将整体放在上部而将部分放在下部可以使模型便于理解。根据该模型, 整体可有多个部分,也可有不同种类的部分。整体——部分结构线的终点位置 反映了对象之间(而不是类之间)的映射。整体——部分结构线的每一端都标 有一个量或区域,它表示该整体拥有的部分数。 在下图所示的例子中,Aircraft 是一个整体,它可能:没有 Engine;最多有 四台 Engine。并且 Engine 是一个部分,它可能:不是 Aircraft 的一部分;至多 是一架 Aircraft 的一部分。 ②策略 策略由两部分组成,一部分是确定什么,另一部分是考虑什么。 a、确定什么 当确定潜在的整体——部分结构时,考虑以下的变种情况: 总成 —— 部件 容器 —— 内容 集合 —— 成员 此外,还应查看从前相同和类似问题的面向对象分析结果。确定能直接重 用的整体——部分结构,并吸取有关的教训。 现在考虑整体——部分结构的变种。如下图,一架 Aircraft 是一个总成,而
Engine则是该总成的部件。 Aircraft 0,4 Er ngine 如下图,如果将 Aircraft考虑成一个容器,则 Pilot(飞行员)就是容器中 的内容 ircraft m 如下图,如果将 FlightSegment(飞行段)看成是成员,则 FlightPlan(飞行 计划)就是它们中的“有序”集合。 FlightPlan ight Segmer 该“有序”约束可在整体的类一&一对象规范中指定 如下图领域专家运用集合—一成员关系(思维模型)来分析复杂问题(如 下图)
Engine 则是该总成的部件。 如下图,如果将 Aircraft 考虑成一个容器,则 Pilot(飞行员)就是容器中 的内容。 如下图,如果将 FlightSegment(飞行段)看成是成员,则 FlightPlan(飞行 计划)就是它们中的“有序”集合。 该“有序”约束可在整体的类—&—对象规范中指定。 如下图领域专家运用集合——成员关系(思维模型)来分析复杂问题(如 下图)